# Releases

> hydration-proof releases: every version of the CLI and the ESLint plugin, how versions are numbered, how to upgrade with migrate, and the history up to 1.0.

Source: https://hydration.jscrate.dev/docs/releases
Last updated: 2026-09-18

hydration-proof releases publish both packages, `hydration-proof` and
`eslint-plugin-hydration-proof`, together at the same version. The timeline
below lists every release on GitHub with its highlights. Version 1.0.0 is the
first stable release: from it on, the CLI, the config, the report schema, the
issue codes and the exit codes follow semver.

Release notes are on GitHub: https://github.com/re-sohail/hydration-proof/releases

The full notes are on
[GitHub releases](https://github.com/re-sohail/hydration-proof/releases) and
in each package's `CHANGELOG.md`.

## How versions are numbered

- **Lockstep.** The two packages are versioned together with Changesets, so a
  release always publishes both, even when only one of them changed.
- **Semver.** A patch release fixes bugs. A minor release adds detections and
  options. A major release is the only kind that may break something the
  [compatibility promise](https://hydration.jscrate.dev/docs/compatibility) covers.
- **What is not frozen.** Diagnosis keeps improving in minor releases: which
  cause a finding gets, confidence scores and the wording of messages. Pin the
  behavior you rely on with `ci.failOn` and `ci.budget`, not with the causes.

Releases are published from CI with npm trusted publishing, so every version
has a provenance attestation. You can check the packages you installed:

```sh
npm audit signatures
```

## How to upgrade

1. Update both packages to the new version.
2. Run `migrate` to see which config options were renamed or replaced.
3. Apply the safe renames with `--write`. The old file is kept as a backup, and
   anything that needs a judgment call is listed for you to change by hand.
4. Run your tests. Between minor versions, expect new findings: better detection
   is the point of a release.

```bash
npx hydration-proof migrate
npx hydration-proof migrate --write
```

If a release reports something you have decided to live with, park it with an
[ignore rule](https://hydration.jscrate.dev/docs/ignoring) that has a reason and an expiry date, or adopt the
release with `ci.newIssuesOnly` and a [baseline](https://hydration.jscrate.dev/docs/baselines) so the
pipeline stays green on day one. The [CLI reference](https://hydration.jscrate.dev/docs/cli#migrate) has
the details of `migrate`.

## hydration-proof releases from 0.1 to 1.0

| Version | What it added                                                                                                                                                                                                                                                                                                                                 |
| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0.1.0   | The first release: `hydration-proof test` loads every route in Chromium, Firefox or WebKit through the React DevTools hook, and reports text, structure, attribute, class and style mismatches, invalid HTML, changes before hydration and CDN rewrites. Stable issue codes, fingerprints and exit codes, plus `init`, `install` and `doctor` |
| 0.2.0   | Findings explain themselves: a likely cause with a confidence score, the component and source line, the HTML report, `--mode both`, and the `suppressHydrationWarning` audit                                                                                                                                                                  |
| 0.3.0   | The whole app: pre-rendered dynamic pages, the not-found page, query variants, sitemaps and crawling; signed-in pages with `login`; API mocks; hooks; `--shard`; the route cache                                                                                                                                                              |
| 0.4.0   | Environments: the matrix, probes that prove a cause, and `--repeat` for flaky findings                                                                                                                                                                                                                                                        |
| 0.5.0   | The ESLint plugin: 15 rules for render code, with the `recommended`, `next` and `strict` presets                                                                                                                                                                                                                                              |
| 0.6.0   | Streaming and Suspense boundaries compared one by one, document checks, navigation and interaction checks                                                                                                                                                                                                                                     |
| 0.7.0   | CI and teams: JUnit, SARIF, GitHub and GitLab reports, baselines, budgets, owners, `--changed`, `merge-reports`, monorepos, trends and redaction                                                                                                                                                                                              |
| 0.8.0   | Adapters for React Router, Remix, Astro, Vite SSR and custom Node servers, `defineAdapter`, plugins, and the `dev`, `test --watch` and `ui` tools                                                                                                                                                                                             |
| 0.9.0   | Hardening: source maps only from the app's own origin (`sourceOrigins`), `migrate`, and a regression gate of recorded browser captures                                                                                                                                                                                                        |
| 1.0.0   | The written [compatibility promise](https://hydration.jscrate.dev/docs/compatibility), form controls and SVG attributes audited, causes limited to the element's own function, and baselines that survive a fingerprint change                                                                                                                                             |

The ESLint plugin first appeared in 0.5.0; its later releases have had no
changes of their own. At 1.0, the package's test suite covered 63 fixture
cases across the Next.js App Router and Pages Router: 40 broken pages and 23
correct control pages, each checked against React's own verdict.

## Related

- [Compatibility and stability](https://hydration.jscrate.dev/docs/compatibility): what each release may
  change
- [The CLI](https://hydration.jscrate.dev/docs/cli), including `migrate`
- [Baselines and budgets](https://hydration.jscrate.dev/docs/baselines) for adopting a new release
- [About hydration-proof](https://hydration.jscrate.dev/docs/about)
- [Quick start](https://hydration.jscrate.dev/docs/quick-start)
