# Migration: Node engines floor raised (v14.0.0)

As of `14.0.0` the supported engines are `^22.22.2 || >=24.15.0`, raised from `^22.13.0 || ^24.11.0`. The
`24` end is narrower today; see "v14.0.2" below for the current range.

## What changed

- `engines.node` moved to `^22.22.2 || >=24.15.0`.
- The `24` end was open rather than capped at `^24.11.0`, so a Node major above 24 satisfied it. `14.0.2`
  changes this; see below.

## What you need to do

- **Upgrade Node.js to `22.22.2` or newer on the 22 line, or `24.15.0` or newer on the 24 line**, in your
  local, CI, and deployment environments. As of `14.0.2` the 24 line means `24.15.0` up to (not including)
  `25.0.0`; see below.
- No config or rule changes are required by this floor itself.

## Why

`eslint-plugin-package-json`, which the `/json` preset adopts in this release, requires `^22.22.2 ||
>=24.15.0` - a bounded 22 branch, an open 24 branch. Its floor is the highest of any peer this package
declares, so it sets the floor for the package. See ADR-0014 and
[Migration: the `/json` preset](./migration-json-preset.md).

## v14.0.2: the `24` end is capped

`14.0.0` and `14.0.1` left the `24` end open, admitting every future Node line including ones this package
never tests - `eslint-plugin-package-json`'s own range does the same, but nothing requires this package's own
declaration to match it exactly. `14.0.2` caps it at `^24.15.0`: each supported line is now a bounded caret
on an even-numbered LTS line, added once this package's own gate actually exercises it (ADR-0035). Node 25
and 26 satisfied the engine check before `14.0.2` and do not satisfy it now; Node 26 is planned as a
deliberate addition once it reaches LTS (#322), not a side effect of the range being open.
