Skip to content

Switch backend to Node 25 with V8 pointer compression (node-caged)#4006

Merged
chpy04 merged 7 commits intodevelopfrom
test/node-25-compatibility
Mar 18, 2026
Merged

Switch backend to Node 25 with V8 pointer compression (node-caged)#4006
chpy04 merged 7 commits intodevelopfrom
test/node-25-compatibility

Conversation

@rbessin
Copy link
Copy Markdown
Contributor

@rbessin rbessin commented Mar 4, 2026

Changes

  • src/backend/Dockerfile — switched from node:20 to platformatic/node-caged:25-slim. Added npm install -g yarn since the node-caged slim image doesn't include yarn by default.
  • Dockerfile (root) — switched builder stage from node:20 to node:25, production stage from node:20-slim to platformatic/node-caged:25-slim.
  • devContainerization/Dockerfile.backend.dev — switched from node:20 to node:25 for dev/prod parity.

Notes

  • The seed command fails with a pre-existing materialId column error in reimbursement-requests.seed.ts; this exists on develop too and is unrelated to these changes
  • Pointer compression requires Node 25; official Node builds don't include it yet, which is why the node-caged image is needed

Test Cases

  • Dockerfile (root / CI): built successfully, all 26 migrations applied, full browser testing completed — login, projects, work packages, finance, and reimbursement all functional
  • src/backend/Dockerfile (production / yarn containerize): built successfully, all 26 migrations applied, limited browser testing due to seed failure preventing organization data from being created
  • devContainerization/Dockerfile.backend.dev (dev): build only, not runtime-tested
  • No NAN dependency conflicts (npm ls nan returns empty)
  • Note: local memory numbers (~280-325MB) are not directly comparable to production peak; real savings would be visible on EC2 under actual traffic

Checklist

It can be helpful to check the Checks and Files changed tabs.
Please review the contributor guide and reach out to your Tech Lead if anything is unclear.
Please request reviewers and ping on slack only after you've gone through this whole checklist.

  • All commits are tagged with the ticket number
  • No linting errors / newline at end of file warnings
  • All code follows repository-configured prettier formatting
  • No merge conflicts
  • All checks passing
  • Screenshots of UI changes (see Screenshots section)
  • Remove any non-applicable sections of this template
  • Assign the PR to yourself
  • No yarn.lock changes (unless dependencies have changed)
  • Request reviewers & ping on Slack
  • PR is linked to the ticket (fill in the closes line below)

Closes # NONE

@rbessin rbessin requested a review from chpy04 March 4, 2026 23:17
@rbessin rbessin self-assigned this Mar 4, 2026
@rbessin
Copy link
Copy Markdown
Contributor Author

rbessin commented Mar 4, 2026

I More testing should be done but I was struggling to complete it due to the seeding issue (materialId column error in the reimbursement seed). The dev environment (yarn docker:dev) was only build-tested, not runtime-tested, and yarn containerize browser testing was limited since the app couldn't load without organization data. If the seed issue is fixed, full runtime testing across all three environments would be straightforward.

Copy link
Copy Markdown
Contributor

@chpy04 chpy04 left a comment

Choose a reason for hiding this comment

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

ishallah this doesn't break prod

@chpy04 chpy04 merged commit dcf8df3 into develop Mar 18, 2026
4 checks passed
@chpy04 chpy04 deleted the test/node-25-compatibility branch March 18, 2026 13:05
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