Skip to content

update node to v24 LTS throughout repo#6227

Merged
freemvmt merged 3 commits intomainfrom
dg/bump-node-24
Feb 27, 2026
Merged

update node to v24 LTS throughout repo#6227
freemvmt merged 3 commits intomainfrom
dg/bump-node-24

Conversation

@freemvmt
Copy link
Copy Markdown
Member

@freemvmt freemvmt commented Feb 26, 2026

Followed the doc on this.

Note that despite what the doc says (and the DefinitelyTyped README agrees), @types/node does not always have a version that matches the Node version (full list). For example, the node LTS version is at 24.14.0, but the latest 24.x version of @types/node is 24.10.13.

Breaking changes for this major version bump are here, but none seem to apply to us.

Also ran pnpm check anywhere it was available and fixed any issues arising in separate commits.

Last commit here hardcodes NODE_VERSION as 24.14.0 across CI workflows for proper testing, but I will strip that out and change the value in the Github Action variables after approval / before merge.

Will follow this up by upgrading all pnpm packages across the repo to latest mutually compatible versions.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 26, 2026

Removed vultr server and associated DNS entries

@freemvmt freemvmt force-pushed the dg/bump-node-24 branch 2 times, most recently from 39394c3 to f1791fc Compare February 26, 2026 16:59
@freemvmt freemvmt requested a review from a team February 26, 2026 17:19
Copy link
Copy Markdown
Member

@jessicamcinchak jessicamcinchak left a comment

Choose a reason for hiding this comment

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

Super!

Comment thread apps/postgres/Dockerfile Outdated
build-essential git ca-certificates postgresql-server-dev-16 \
&& git clone --depth 1 https://github.com/citusdata/pg_cron.git /tmp/pg_cron \
&& apt-get install -y --no-install-recommends build-essential git ca-certificates postgresql-server-dev-16 \
&& git clone --branch v1.6.7 --depth 1 https://github.com/citusdata/pg_cron.git /tmp/pg_cron \
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

submissionEmailId: string | undefined;
handleSelectChange: (event: SelectChangeEvent<unknown>) => void;
disabled?: boolean;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think a rebase to main should remove these recent Send changes from Ollie?

<Typography variant="body2">
Loading email options...
</Typography>
) : error || flowError ? (
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@jessicamcinchak eslint wasn't a fan of the nested ternary here, so pnpm check was failing for the editor, i.e. I made these changes deliberately! see 2nd commit :)

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the repository’s Node.js runtime/tooling baseline to Node v24 LTS, aligning local developer setup, Docker images, and TypeScript/@types/node dependencies across the monorepo.

Changes:

  • Bump Node.js references to v24.14.0 across docs, .nvmrc, and Node-based Docker images.
  • Update TypeScript and @types/node version ranges (and corresponding pnpm lockfiles) to match the new Node baseline.
  • Refactor the Editor “Send” email-selection UI logic into small rendering components/types for clarity.

Reviewed changes

Copilot reviewed 22 out of 31 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
scripts/encrypt/pnpm-lock.yaml Updates TypeScript specifier/version in this script’s lockfile.
scripts/encrypt/package.json Pins TypeScript to ~5.9.3 for the encrypt script.
pnpm-lock.yaml Aligns root lockfile TypeScript specifier with ~5.9.3.
package.json Changes root TypeScript devDependency from exact to ~5.9.3.
infrastructure/pnpm-workspace.yaml Updates workspace catalog @types/node to ~24.10.14.
infrastructure/pnpm-lock.yaml Updates infra lockfile to @types/node@24.10.14 and related transitive deps.
e2e/tests/ui-driven/pnpm-lock.yaml Bumps @types/node and related lockfile entries for UI-driven e2e tests.
e2e/tests/ui-driven/package.json Updates @types/node to ~24.10.14.
e2e/tests/api-driven/pnpm-lock.yaml Bumps @types/node/TypeScript specifiers and lockfile entries for API-driven e2e tests.
e2e/tests/api-driven/package.json Updates @types/node and TypeScript to ~ ranges.
e2e/pnpm-lock.yaml Updates e2e workspace lockfile for @types/node and TypeScript specifier.
e2e/package.json Updates e2e package @types/node and TypeScript to ~ ranges.
doc/how-to/how-to-upgrade-nodejs.md Updates the documented nvm install/use version to 24.14.0.
apps/sharedb.planx.uk/Dockerfile Updates base image to node:24.14.0-alpine.
apps/postgres/Dockerfile Pins pg_cron clone to a specific tag (v1.6.7).
apps/localplanning.services/pnpm-lock.yaml Updates TypeScript specifier to ~5.9.3 in lockfile.
apps/localplanning.services/package.json Updates TypeScript dependency to ~5.9.3.
apps/editor.planx.uk/src/routes/_authenticated/app/route.tsx Import formatting only (no functional change).
apps/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/index.tsx Minor formatting/argument formatting improvements.
apps/editor.planx.uk/src/pages/FlowEditor/components/Settings/Team/Integrations/SubmissionEmails/types.ts Tightens GetSubmissionEmails typing to require all SubmissionEmailInput fields.
apps/editor.planx.uk/src/lib/featureFlags.ts Formatting simplification for empty feature flags array.
apps/editor.planx.uk/src/@planx/components/Send/types.tsx Adds prop/type definitions for email selection UI.
apps/editor.planx.uk/src/@planx/components/Send/queries.tsx Removes unused useQuery import (query defs only).
apps/editor.planx.uk/src/@planx/components/Send/Editor.tsx Refactors email selection rendering into dedicated components + render helper.
apps/editor.planx.uk/pnpm-lock.yaml Updates editor app lockfile to @types/node@24.10.14 + related transitive deps.
apps/editor.planx.uk/package.json Updates @types/node and TypeScript ranges for the editor app.
apps/api.planx.uk/pnpm-lock.yaml Updates API app lockfile to @types/node@24.10.14 + related transitive deps.
apps/api.planx.uk/package.json Updates Node engine constraint, @types/node, and TypeScript range.
apps/api.planx.uk/Dockerfile Updates base/production images to node:24.14.0-alpine.
README.md Updates developer prerequisite Node version to 24.14.0.
.nvmrc Updates Node version to v24.14.0.
Files not reviewed (9)
  • apps/api.planx.uk/pnpm-lock.yaml: Language not supported
  • apps/editor.planx.uk/pnpm-lock.yaml: Language not supported
  • apps/localplanning.services/pnpm-lock.yaml: Language not supported
  • e2e/pnpm-lock.yaml: Language not supported
  • e2e/tests/api-driven/pnpm-lock.yaml: Language not supported
  • e2e/tests/ui-driven/pnpm-lock.yaml: Language not supported
  • infrastructure/pnpm-lock.yaml: Language not supported
  • pnpm-lock.yaml: Language not supported
  • scripts/encrypt/pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)

apps/editor.planx.uk/src/@planx/components/Send/Editor.tsx:137

  • The useStore selector returns 5 values but only 4 are destructured (state.teamSettings.submissionEmail is selected but ignored). This creates an unnecessary store subscription/re-render trigger and is easy to misread as a bug. Either remove state.teamSettings.submissionEmail from the selector array, or add a corresponding destructured variable if it’s intentionally needed.
  const [teamSlug, teamId, flowSlug, id] = useStore((state) => [
    state.teamSlug,
    state.teamId,
    state.flowSlug,
    state.id,
    state.teamSettings.submissionEmail,
  ]);

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/postgres/Dockerfile Outdated
@freemvmt freemvmt merged commit bd5ad86 into main Feb 27, 2026
15 checks passed
@freemvmt freemvmt deleted the dg/bump-node-24 branch February 27, 2026 16:17
jmcbroom pushed a commit that referenced this pull request Mar 2, 2026
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.

3 participants