Skip to content

feat!: require node >=24, test on 24 & 26, support npm >=11#1098

Merged
scottlovegrove merged 5 commits into
mainfrom
feat/node-24
Jul 16, 2026
Merged

feat!: require node >=24, test on 24 & 26, support npm >=11#1098
scottlovegrove merged 5 commits into
mainfrom
feat/node-24

Conversation

@scottlovegrove

Copy link
Copy Markdown
Contributor

Summary

Node 20 has reached end-of-life, so this raises the minimum supported Node.js version to 24. As Reactist is a published library, the engines bump is a genuine breaking change for consumers on older Node versions.

Changes

  • .node-version: 22.2224
  • package.json engines: added node: ">=24" and npm: ">=11" (no engines block previously existed)
  • .github/workflows/pull_request.yml (test workflow): now runs a CI matrix testing on Node 24 and 26, replacing the single node-version-file: .node-version with node-version: ${{ matrix.node-version }}

The publish.yml, chromatic.yml, and deploy-storybook.yml workflows continue to use the single .node-version file (now 24) and are intentionally not matrixed.

Breaking change

Minimum Node.js is now 24; Node 20 and 22 are no longer supported.

Node 20 has reached end-of-life. Raise the minimum supported node to 24,
add explicit node 26 coverage via a CI test matrix, and declare npm >=11.

BREAKING CHANGE: minimum node is now 24; node 20 and 22 are no longer supported.
@scottlovegrove scottlovegrove self-assigned this Jul 16, 2026

@doistbot doistbot left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR raises the minimum Node.js version to 24, adds an engines block requiring Node ≥24 and npm ≥11, and updates the test workflow to run a CI matrix on Node 24 and 26.

Few things worth tightening:

  • The node_modules cache key doesn't include the matrix Node version, so the Node 24 and Node 26 jobs will share the same key and could restore a node_modules installed under a different runtime. Adding ${{ matrix.node-version }} to the cache key would isolate them.

Share FeedbackReview Logs

Comment thread .github/workflows/pull_request.yml Outdated
@scottlovegrove

Copy link
Copy Markdown
Contributor Author

This needs an update to todoist-web first as that's still on node 22.

# Conflicts:
#	.github/workflows/pull_request.yml
Main consolidated CI into check-ci-validation.yml. Rather than run every job
(lint, build, prepare) twice, scope the [24, 26] matrix to the unit-testing job
where the runtime version actually matters; the other jobs stay on the single
.node-version baseline.
The [24,26] matrix renamed the reported context to 'Unit Testing (24)'/'(26)',
so the branch ruleset's required 'Unit Testing' context was never reported and
blocked merges. Rename the matrix job and add a gate job named 'Unit Testing'
that succeeds once the matrix passes, giving a single stable required context.
@scottlovegrove

Copy link
Copy Markdown
Contributor Author

This needs an update to todoist-web first as that's still on node 22.

This has now been taken care of.

@scottlovegrove
scottlovegrove requested review from a team and pawelgrimm and removed request for a team July 16, 2026 19:50
@scottlovegrove scottlovegrove added the 👀 Show PR Used for PRs that need a review, but can be merged when CI is green. label Jul 16, 2026
@scottlovegrove
scottlovegrove merged commit 50f9295 into main Jul 16, 2026
12 checks passed
@scottlovegrove
scottlovegrove deleted the feat/node-24 branch July 16, 2026 19:50
doist-release-bot Bot pushed a commit that referenced this pull request Jul 16, 2026
## [35.0.0](v34.0.0...v35.0.0) (2026-07-16)

### ⚠ BREAKING CHANGES

* require node >=24, test on 24 & 26, support npm >=11 (#1098)

### Features

* require node >=24, test on 24 & 26, support npm >=11 ([#1098](#1098)) ([50f9295](50f9295))
@doist-release-bot

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 35.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@doist-release-bot doist-release-bot Bot added the Released PRs that have been merged and released label Jul 16, 2026

@pawelgrimm pawelgrimm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Released PRs that have been merged and released 👀 Show PR Used for PRs that need a review, but can be merged when CI is green.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants