Raise dev Node.js requirement to match jsdom 30 - #63
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
package-lock.json appears out of sync with the updated package.json engine range and should be updated to avoid install/CI inconsistency.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR updates the repository’s declared development Node.js version requirement to match jsdom 30’s supported Node range, and reflects that change in contributor documentation and the changelog.
Changes:
- Updated
package.jsonengines.nodeto^22.22.2 || ^24.15.0 || >=26.0.0. - Updated
CONTRIBUTING.mdprerequisites to match the new Node.js requirement. - Added an Unreleased changelog entry describing the updated dev Node.js floor.
File summaries
| File | Description |
|---|---|
| package.json | Raises declared engines.node requirement to match jsdom 30’s Node floor. |
| CONTRIBUTING.md | Updates contributor prerequisites to the new Node.js version range. |
| CHANGELOG.md | Documents the dev Node.js requirement change under Unreleased. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
🔵 Needs a closer look
package-lock.json still reflects the old root engines.node range, so the lockfile should be regenerated/updated to avoid conflicting engine requirements.
Review details
Suppressed comments (2)
package.json:14
package-lock.jsonstill declares the oldengines.noderange for the root package (e.g. it currently has^20.19.0 || >=22.12.0). Whenpackage.jsonchanges, the lockfile should be regenerated/updated so the rootpackages[""].engines.nodematches, to avoid contributors seeing conflicting engine requirements depending on which file they look at.
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
CONTRIBUTING.md:10
- The Node.js version range in CONTRIBUTING uses
>=26, whilepackage.json/CHANGELOG use>=26.0.0. Aligning the docs to the exact semver range helps avoid ambiguity for contributors selecting a Node version.
- **Node.js `^22.22.2`, `^24.15.0`, or `>=26`** (required by the jsdom and Vite dev tooling; the
project builds and packages against Node 22).
- Files reviewed: 3/3 changed files
- Comments generated: 0 new
- Review effort level: Lite
…ancake # Conflicts: # CHANGELOG.md
Follow-up to the Dependabot batch merged today, specifically #56 (jsdom 29 -> 30).
Why
jsdom 30 raised its Node floor to
^22.22.2 || ^24.15.0 || >=26.0.0, butengines.nodeand CONTRIBUTING still advertised^20.19.0 || >=22.12.0. A contributor on Node 20 (or 22.12 - 22.22.1, or 24.0 - 24.14) would install successfully with only anEBADENGINEwarning, then hit failures running the test suite.Checking
engines.nodeacross every direct dependency, the effective floor is exactly jsdom's:engines.node^22.22.2 || ^24.15.0 || >=26.0.0>=22.0.0>=22^20.0.0 || ^22.0.0 || >=24.0.0^20.19.0 || >=22.12.0Worth noting Node 20 was already effectively unsupported before this PR:
@testing-library/jest-dom@7and@yao-pkg/pkg@6both require>=22. This change makes the declared requirement honest rather than newly restricting anything.What changed
package.json:engines.node->^22.22.2 || ^24.15.0 || >=26.0.0CONTRIBUTING.md: prerequisites updated to matchCHANGELOG.md: entry under UnreleasedScope
Dev toolchain only. jsdom is a devDependency and is not bundled into
dist-server, so no runtime behavior changes:node:22-slim; the runtime stage installs with--omit=devpkgtargets remainnode22-*Verification
npm cithen the full CI suite locally on Node 26.5.0: