drop support for node 20#5937
Conversation
✅ Deploy Preview for actualbudget ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Bundle Stats — desktop-clientHey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle. As this PR is updated, I'll keep you updated on how the bundle size is impacted. Total
Changeset No files were changed View detailed bundle breakdownAdded No assets were added Removed No assets were removed Bigger No assets were bigger Smaller No assets were smaller Unchanged
|
Bundle Stats — loot-coreHey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle. As this PR is updated, I'll keep you updated on how the bundle size is impacted. Total
Changeset No files were changed View detailed bundle breakdownAdded No assets were added Removed No assets were removed Bigger No assets were bigger Smaller No assets were smaller Unchanged
|
WalkthroughThis pull request upgrades Node.js from v20 to v22 across the repository. Changes update GitHub Actions workflows and a custom setup action to use Node 22, bump .nvmrc and root/package engines.node to >=22, update devDependency @types/node to ^22.18.11 in multiple package.json files, and switch Dockerfile base images to node:22-bookworm variants. No application logic, control-flow, or public API declarations were changed. Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (13)
🚧 Files skipped from review as they are similar to previous changes (7)
🧰 Additional context used🧠 Learnings (2)📓 Common learnings📚 Learning: 2025-10-12T04:07:06.002ZApplied to files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
🔇 Additional comments (6)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.github/workflows/issues-feature-implemented.yml (1)
29-31: Same verification needed for Node 24See my comment on
.github/workflows/publish-npm-packages.yml; this workflow has the identical risk and needs the same confirmation.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
upcoming-release-notes/5937.mdis excluded by!**/*.mdyarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (10)
.github/actions/setup/action.yml(1 hunks).github/workflows/check.yml(1 hunks).github/workflows/issues-feature-implemented.yml(1 hunks).github/workflows/publish-nightly-npm-packages.yml(1 hunks).github/workflows/publish-npm-packages.yml(1 hunks).nvmrc(1 hunks)package.json(2 hunks)packages/loot-core/package.json(1 hunks)packages/plugins-service/package.json(1 hunks)packages/sync-server/package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: matt-fidd
PR: actualbudget/actual#5936
File: packages/desktop-electron/package.json:95-102
Timestamp: 2025-10-16T14:46:13.941Z
Learning: In the actualbudget/actual repository, PR #5936 (Electron bump to 38.3.0 and electron/notarize to 3.1.0) is coordinated with PR #5937, which handles the Node.js version migration (dropping Node 20 support, requiring Node 22+ for Electron compatibility).
📚 Learning: 2025-10-12T04:07:06.002Z
Learnt from: lelemm
PR: actualbudget/actual#5786
File: packages/api/tsconfig.dist.json:14-14
Timestamp: 2025-10-12T04:07:06.002Z
Learning: In the Actual Budget codebase, when rootDir is removed from packages/loot-core/tsconfig.api.json to allow referencing files outside the loot-core directory, the declaration output structure changes. The path alias for loot-core in packages/api/tsconfig.dist.json must be updated from "./types/loot-core/src/*" to "./types/loot-core/loot-core/src/*" to match the new emitted declaration paths, as TypeScript preserves the full directory structure from the project root when rootDir is not specified.
Applied to files:
packages/loot-core/package.json
🔇 Additional comments (1)
.github/workflows/publish-npm-packages.yml (1)
59-60: No action needed: Node 24 is available
actions/setup-node@v4supports Node.js v24.x (e.g., v24.2.0+ as listed in https://nodejs.org/dist).
There was a problem hiding this comment.
I think you're missing the sync-server readme. If you search for this you'll find it: Node.js v18.
I think the idea of keeping the node version as low as possible was to support more systems with older version of node.
I get updating to 22, but if we don't need to go higher I'd personally keep it there since it's in active support till 2027.
Open to thoughts tho, I'm just conscious we may be forcing people to upgrade for no reason.
If I'm right, I don't think the node version affects all that many people. Just those that run from source or use the CLI. Docker will sort it out for the majority of self hosts and people using managed services like Pikapods aren't affected. I'd probably be happy either way, I was just thinking that it gives even longer until we have to change again and means we have to think a bit less when deps start dropping node 22 support. You're right that might be a while off though Will let some other people have a vote too and I'll go with the majority. |
Auto-generated by VRT workflow PR: actualbudget#5937
|
✅ VRT screenshots have been automatically updated. |
These releases will soon be dropped from active support. I've been running on 22 for a long time with no issues and not noticed anything different. To be clear, this change does not mean that Actual does not work with <22, just that we will no longer guarantee it does.
I believe we need 22 for electron, we've been running below their minimum version for a while.
All workflows in this PR have been updated, so the checks will be reflective.
When this is merged, I'll update the netlify configs.
Docs: actualbudget/docs#811