Skip to content

Commit e47b342

Browse files
os-zhuangclaude
andauthored
feat!: require Node.js 22 — promise the runtime we actually test (#3825) (#3858)
Every published package declared engines.node ">=18.0.0". Node 18 reached end-of-life on 2025-04-30 and Node 20 on 2026-04-30, so the compatibility promise covered two runtimes nobody patches -- and, after #3830 moved CI to Node 22, two runtimes nothing in this repo verifies. That left the promise and the evidence with no overlap at all: CI validates every PR on ......................... 22 release.yml publishes from ....................... 22 every shipped Docker image runs ................... 22 engines.node promised users ...................... >=18 engines.node is now ">=22.0.0" across all 50 manifests -- the only runtime the packages are built, tested and shipped on. Node 24 (Active LTS since 2025-10-28) and Node 26 both satisfy the new range, so anyone on 22+ is unaffected. npm/pnpm surface an unsatisfied engines as an EBADENGINE warning rather than a hard failure, so existing installs on 18/20 do not break the moment this lands -- but those runtimes are no longer tested, and the failures are the kind that do not announce themselves (#3812: a native dependency whose engines required a newer Node loaded anyway on the older one, then killed the test worker at the process level with no JS error and a summary that still said "passed"). The "Node 18+" prerequisite was restated in ten user-facing places (README, CONTRIBUTING, the getting-started and deployment docs, the todo example, and the objectstack-platform skill's compatibility field); all now say 22. A half-done rename is worse than none. Changelogs and ADRs are historical records and were left alone. Shipped as a changesets `major`. The repo is in pre-release (rc) mode, where the no-major guard stands aside by design -- accumulating breaking changes is what the RC window is for -- so this does not block other PRs. Four other majors are already pending in the same window. Verified on Node 22: full build 71/71 and full test suite 129/129, both with zero cache hits, 16921 tests declared and all 16921 accounted for. Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent f35cdc5 commit e47b342

61 files changed

Lines changed: 114 additions & 60 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/engines-node-22.md

Lines changed: 54 additions & 0 deletions

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion

README.md

Lines changed: 1 addition & 1 deletion

apps/docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@
4040
"zod": "4.4.3"
4141
},
4242
"engines": {
43-
"node": ">=18.0.0"
43+
"node": ">=22.0.0"
4444
}
4545
}

content/docs/deployment/backup-restore.mdx

Lines changed: 1 addition & 1 deletion

content/docs/deployment/self-hosting.mdx

Lines changed: 1 addition & 1 deletion

content/docs/deployment/troubleshooting.mdx

Lines changed: 1 addition & 1 deletion

content/docs/getting-started/build-with-claude-code.mdx

Lines changed: 1 addition & 1 deletion

content/docs/getting-started/index.mdx

Lines changed: 1 addition & 1 deletion

content/docs/getting-started/your-first-project.mdx

Lines changed: 1 addition & 1 deletion

0 commit comments

Comments
 (0)