Skip to content

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

Open
rbessin wants to merge 7 commits intodevelopfrom
test/node-25-compatibility
Open

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

Conversation

@rbessin
Copy link
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
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.

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