Skip to content

feat!: drop support for Node.js 18 and 20#3074

Open
bennypowers wants to merge 1 commit into
masterfrom
drop-eol-node
Open

feat!: drop support for Node.js 18 and 20#3074
bennypowers wants to merge 1 commit into
masterfrom
drop-eol-node

Conversation

@bennypowers
Copy link
Copy Markdown
Member

Summary

  • Minimum supported Node.js version is now 22.0.0
  • Node.js 18 EOL'd April 2025, Node.js 20 EOL'd April 2026
  • CI matrix tests on Node 22 and 24
  • Bump GitHub Actions to latest (checkout v6, setup-node v6, upload-artifact v7)

Node 26 / latest

Pinned to 24 instead of latest due to Playwright/yauzl hang on Node 26. Will re-add latest once Playwright ships the fix.

ts-node workaround

Added NODE_OPTIONS='--no-experimental-strip-types' to CI test steps. Node 22.18+ enables native type stripping, which preempts ts-node and breaks mocha tests. This workaround will be removed when mocha is replaced with node:test in a follow-up PR.

Test plan

  • CI green on Node 22 and 24 (Linux + Windows)
  • Lint passes
  • Browser tests pass
  • Storybook builder verification passes

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 25, 2026

🦋 Changeset detected

Latest commit: 61db6d9

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 38 packages
Name Type
@web/browser-logs Major
@web/config-loader Major
@web/dev-server-core Major
@web/dev-server-esbuild Major
@web/dev-server-hmr Major
@web/dev-server-import-maps Major
@web/dev-server-legacy Major
@web/dev-server Major
@web/dev-server-polyfill Major
@web/dev-server-rollup Major
@web/mocks Major
@web/parse5-utils Major
@web/polyfills-loader Major
@web/rollup-plugin-copy Major
@web/rollup-plugin-html Major
@web/rollup-plugin-import-meta-assets Major
@web/rollup-plugin-polyfills-loader Major
rollup-plugin-workbox Major
@web/storybook-addon-mocks Major
@web/storybook-builder Major
@web/storybook-framework-web-components Major
@web/storybook-utils Major
@web/test-runner-browserstack Major
@web/test-runner-chrome Major
@web/test-runner-cli Major
@web/test-runner-commands Major
@web/test-runner-core Major
@web/test-runner-coverage-v8 Major
@web/test-runner-junit-reporter Major
@web/test-runner-mocha Major
@web/test-runner-module-mocking Major
@web/test-runner Major
@web/test-runner-playwright Major
@web/test-runner-puppeteer Major
@web/test-runner-saucelabs Major
@web/test-runner-selenium Major
@web/test-runner-visual-regression Major
@web/test-runner-webdriver Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

BREAKING CHANGE: The minimum supported Node.js version is now 22.0.0.
Node.js 18 reached end-of-life in April 2025 and Node.js 20 in April
2026.

- Bump engines to >=22.0.0 across all packages
- CI matrix now tests on Node 22 and 24
- Pin CI to Node 24 instead of latest due to Playwright/yauzl bug
  with Node 26 (microsoft/playwright#40724)
- Disable native type stripping in CI for ts-node compatibility
- Bump GitHub Actions to latest versions (checkout v6, setup-node v6,
  upload-artifact v7)

Assisted-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

- name: Setup Node 20
uses: actions/setup-node@v4
- name: Setup Node 22
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.

nit: could also consider splitting GitHub Actions updates and switching to Node 22 for lint / verify to a separate PR, and keep this one purely about breaking change.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants