diff --git a/packages/next/src/build/adapter/build-complete.ts b/packages/next/src/build/adapter/build-complete.ts index 34f88bb22681..e8cc29ea7319 100644 --- a/packages/next/src/build/adapter/build-complete.ts +++ b/packages/next/src/build/adapter/build-complete.ts @@ -674,6 +674,7 @@ export async function handleBuildComplete({ wasmAssets: {}, config: { env: page.env, + preferredRegion: page.regions, }, } diff --git a/test/production/adapter-config/adapter-config-export.test.ts b/test/production/adapter-config/adapter-config-export.test.ts index 640f170741f1..69be96ba4e53 100644 --- a/test/production/adapter-config/adapter-config-export.test.ts +++ b/test/production/adapter-config/adapter-config-export.test.ts @@ -16,6 +16,7 @@ describe('adapter-config export', () => { 'app/node-app/page.tsx', 'app/node-route/route.ts', 'app/edge-route/route.ts', + 'app/preferred-region/route.ts', 'app/isr-route/route.ts', 'app/isr-route/[slug]/route.ts', 'app/edge-app/page.tsx', diff --git a/test/production/adapter-config/adapter-config.test.ts b/test/production/adapter-config/adapter-config.test.ts index c93763880263..28324be51d37 100644 --- a/test/production/adapter-config/adapter-config.test.ts +++ b/test/production/adapter-config/adapter-config.test.ts @@ -390,4 +390,17 @@ describe('adapter-config', () => { rsc: expect.toBeObject(), }) }) + + it('should propagate preferredRegion to adapter output', async () => { + const { outputs }: Parameters[0] = + await next.readJSON('build-complete.json') + + const preferredRegionRoute = outputs.appRoutes.find( + (output) => output.pathname === '/docs/preferred-region' + ) + + expect(preferredRegionRoute).toBeDefined() + expect(preferredRegionRoute?.runtime).toBe('edge') + expect(preferredRegionRoute?.config.preferredRegion).toEqual(['cdg1']) + }) }) diff --git a/test/production/adapter-config/app/preferred-region/route.ts b/test/production/adapter-config/app/preferred-region/route.ts new file mode 100644 index 000000000000..2f9598520ea4 --- /dev/null +++ b/test/production/adapter-config/app/preferred-region/route.ts @@ -0,0 +1,7 @@ +export const runtime = 'edge' +export const preferredRegion = ['cdg1'] +export const dynamic = 'force-dynamic' + +export function GET(_request: Request) { + return new Response('Hello, world!', { status: 200 }) +}