Node.js: Drop support for EOL majors (v21,v23), and old minors#55114
Closed
Node.js: Drop support for EOL majors (v21,v23), and old minors#55114
Conversation
Job Summary for GradleTest All :: run_fantom_tests
|
…nd EOL v21,v23 (#55114) Summary: Pull Request resolved: #55114 Our official [docs](https://reactnative.dev/docs/set-up-your-environment#node--watchman) require: > Node 20.19.4 or newer Currently, our `package.json#engines` fields express this as `"node": ">= 20.19.4"` This is a bit imprecise because of Node's overlapping release lines - e.g. v24.0.0 is actually older than v20.19.4 (2025-07-15), and the whole v21 line was already EOL before v20.19.4. The release *date* is relevant because Node.js frequently backports the most important updates - notably, `require(esm)` is already stable in Node 20.19 but is not unflagged in v22 until v22.12. This makes the `package.json#engines` requirement truer to the documented requirement, dropping some old minors and EOL majors that prevent us using features included in v20.19. Notably, `require(esm)` is stable and unflagged on all versions supported from this diff. - v21 and v23 are EOL, so are dropped. - v22.13 pre-dates 20.19.4 and is the first to have unflagged silent `require(esm)` - v24.3.0 pre-dates 20.19.4 and is the first to unflag TS-stripping - Support v25 and newer. Changelog: [General][Breaking] Drop support for EOL Node.js lines and old minors. Differential Revision: D90467358
2f00a07 to
3d6a749
Compare
Collaborator
|
This pull request was successfully merged by @robhogan in 3d6a749 When will my fix make it into a release? | How to file a pick request? |
Job Summary for GradleTest All :: run_fantom_tests
|
cortinico
approved these changes
Jan 12, 2026
Contributor
cortinico
left a comment
There was a problem hiding this comment.
Review automatically exported from Phabricator review in Meta.
Collaborator
|
Thanks for this PR, @robhogan - I was asked to give some feedback from Expo, and we're pretty happy with this, the only thing we'd like to ask for is if you have any thoughts on the policy for both future deprecations and new releases of Node - How should they be handled? Any thoughts on this? Thanks <3 |
Collaborator
|
This pull request was successfully merged by @robhogan in c9c601d When will my fix make it into a release? | How to file a pick request? |
meta-codesync Bot
pushed a commit
to facebook/metro
that referenced
this pull request
Feb 20, 2026
Summary: Drop support for EOL majors (v21, v23) and old minors (< v22.13, < v24.3). Retain support for Node v20.19. Supported versions are now: `^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0` This aligns with what we were already testing in CI, and should be a very low-friction break as we're only requiring more recent minors in most cases. Notably this exactly aligns with RN's current requirements, as of: See reasoning in facebook/react-native#55114 Changelog: ``` - **[Breaking]:** Drop support for Node v21, v23, and LTS minors released before v20.19. ``` Reviewed By: vzaidman Differential Revision: D93857399 fbshipit-source-id: a73a51328da8c5413491a70edcf60258146f2c89
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Our official docs require:
Currently, our
package.json#enginesfields express this as"node": ">= 20.19.4"This is a bit imprecise because of Node's overlapping release lines - e.g. v24.0.0 is actually older than v20.19.4 (2025-07-15), and the whole v21 line was already EOL before v20.19.4.
The release date is relevant because Node.js frequently backports the most important updates - notably,
require(esm)is already stable in Node 20.19 but is not unflagged in v22 until v22.12.This makes the
package.json#enginesrequirement truer to the documented requirement, dropping some old minors and EOL majors that prevent us using features included in v20.19.Notably,
require(esm)is stable and unflagged on all versions supported from this diff.require(esm)Changelog:
[General][Breaking] Drop support for EOL Node.js lines and old minors.
Differential Revision: D90467358