From bf3a56f39862cd3e3d3261e2f558e5c796a1b578 Mon Sep 17 00:00:00 2001 From: Hrishikesh Kokate Date: Tue, 23 Jun 2026 22:09:12 +0530 Subject: [PATCH 1/4] feat!: update default Node.js version to 24 **Do not merge, needs a co-ordinated release** https://linear.app/netlify/issue/FRB-2272/ (follow-up of https://github.com/netlify/build/pull/5958) --- .../zip-it-and-ship-it/src/runtimes/node/utils/node_version.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/utils/node_version.ts b/packages/zip-it-and-ship-it/src/runtimes/node/utils/node_version.ts index a3dd91abbd..c52d92a340 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/utils/node_version.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/utils/node_version.ts @@ -6,7 +6,7 @@ export interface NodeVersionSupport { } // Must match the default version used in Bitballoon. -export const DEFAULT_NODE_VERSION = 22 +export const DEFAULT_NODE_VERSION = 24 export const getNodeVersion = (configVersion?: string) => parseVersion(configVersion) ?? DEFAULT_NODE_VERSION From d389b489870ba659e56263fa66f3ab2f6bd37687 Mon Sep 17 00:00:00 2001 From: Hrishikesh Kokate Date: Tue, 23 Jun 2026 22:40:24 +0530 Subject: [PATCH 2/4] fix test 1 --- .../src/runtimes/node/bundlers/esbuild/bundler_target.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts index fcd7c5e6ce..388a542484 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts @@ -9,6 +9,7 @@ const versionMap = { 18: 'node18', 20: 'node20', 22: 'node22', + 24: 'node24' } as const type VersionValues = (typeof versionMap)[keyof typeof versionMap] From 52054a120918e56357ac4585a87bd505539c015d Mon Sep 17 00:00:00 2001 From: Hrishikesh Kokate Date: Tue, 23 Jun 2026 22:49:58 +0530 Subject: [PATCH 3/4] fix tests 2 --- .../runtimes/node/utils/node_runtime.test.ts | 16 ++++++++-------- packages/zip-it-and-ship-it/tests/v2api.test.ts | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/zip-it-and-ship-it/tests/unit/runtimes/node/utils/node_runtime.test.ts b/packages/zip-it-and-ship-it/tests/unit/runtimes/node/utils/node_runtime.test.ts index 8e8975ea65..fae838fec8 100644 --- a/packages/zip-it-and-ship-it/tests/unit/runtimes/node/utils/node_runtime.test.ts +++ b/packages/zip-it-and-ship-it/tests/unit/runtimes/node/utils/node_runtime.test.ts @@ -25,20 +25,20 @@ describe('getNodeRuntime', () => { describe('getNodeRuntimeForV2', () => { test.each([ - ['nodejs12.x', 'nodejs22.x'], - ['nodejs14.x', 'nodejs22.x'], - ['nodejs16.x', 'nodejs22.x'], + ['nodejs12.x', 'nodejs24.x'], + ['nodejs14.x', 'nodejs24.x'], + ['nodejs16.x', 'nodejs24.x'], ['nodejs18.x', 'nodejs18.x'], ['nodejs20.x', 'nodejs20.x'], ['nodejs22.x', 'nodejs22.x'], ['nodejs24.x', 'nodejs24.x'], - ['14.x', 'nodejs22.x'], - ['v16.x', 'nodejs22.x'], + ['14.x', 'nodejs24.x'], + ['v16.x', 'nodejs24.x'], ['18.0.0', 'nodejs18.x'], ['20.0.0', 'nodejs20.x'], - ['v14.2.0', 'nodejs22.x'], - ['14.1', 'nodejs22.x'], - [':shrug:', 'nodejs22.x'], + ['v14.2.0', 'nodejs24.x'], + ['14.1', 'nodejs24.x'], + [':shrug:', 'nodejs24.x'], ['99.0.0', undefined], ])('handles `%s`', (input, expected) => { expect(getNodeRuntimeForV2(input)).toBe(expected) diff --git a/packages/zip-it-and-ship-it/tests/v2api.test.ts b/packages/zip-it-and-ship-it/tests/v2api.test.ts index f3c2ee7cb9..c14a7c3bbe 100644 --- a/packages/zip-it-and-ship-it/tests/v2api.test.ts +++ b/packages/zip-it-and-ship-it/tests/v2api.test.ts @@ -326,7 +326,7 @@ describe('V2 functions API', () => { expect(statusCode).toBe(200) }) - test('Returns Node.js 18 if older version is set', async () => { + test('Returns Node.js 24 if older version is set', async () => { const { files } = await zipFixture('v2-api-mjs', { fixtureDir: FIXTURES_ESM_DIR, opts: { @@ -338,10 +338,10 @@ describe('V2 functions API', () => { }, }) - expect(files[0].runtimeVersion).toBe('nodejs22.x') + expect(files[0].runtimeVersion).toBe('nodejs24.x') }) - test('Returns Node.js 18 if invalid version is set', async () => { + test('Returns Node.js 24 if invalid version is set', async () => { const { files } = await zipFixture('v2-api-mjs', { fixtureDir: FIXTURES_ESM_DIR, opts: { @@ -353,7 +353,7 @@ describe('V2 functions API', () => { }, }) - expect(files[0].runtimeVersion).toBe('nodejs22.x') + expect(files[0].runtimeVersion).toBe('nodejs24.x') }) test('Returns no Node.js version if version is newer than 18 but not a valid runtime', async () => { From 0a30c0a537cd11ae9259b3ba646dde302363ba56 Mon Sep 17 00:00:00 2001 From: Hrishikesh Kokate Date: Tue, 23 Jun 2026 22:54:08 +0530 Subject: [PATCH 4/4] fix lint --- .../src/runtimes/node/bundlers/esbuild/bundler_target.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts index 388a542484..0b022610b8 100644 --- a/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts +++ b/packages/zip-it-and-ship-it/src/runtimes/node/bundlers/esbuild/bundler_target.ts @@ -9,7 +9,7 @@ const versionMap = { 18: 'node18', 20: 'node20', 22: 'node22', - 24: 'node24' + 24: 'node24', } as const type VersionValues = (typeof versionMap)[keyof typeof versionMap]