Skip to content

Commit 7a53950

Browse files
authored
[backport] Turbopack: don't treat metadata routes as RSC (#83804)
1 parent 050bdf1 commit 7a53950

File tree

6 files changed

+44
-7
lines changed

6 files changed

+44
-7
lines changed

crates/next-api/src/app.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,8 +1133,8 @@ impl AppEndpoint {
11331133
next_config: Vc<NextConfig>,
11341134
) -> Result<Vc<AppEntry>> {
11351135
Ok(get_app_metadata_route_entry(
1136-
self.app_project.rsc_module_context(),
1137-
self.app_project.edge_rsc_module_context(),
1136+
self.app_project.route_module_context(),
1137+
self.app_project.edge_route_module_context(),
11381138
self.app_project.project().project_path().owned().await?,
11391139
self.page.clone(),
11401140
*self.app_project.project().next_mode().await?,
@@ -1193,11 +1193,7 @@ impl AppEndpoint {
11931193
AppEndpointType::Metadata { metadata } => (
11941194
false,
11951195
false,
1196-
if matches!(metadata, MetadataItem::Dynamic { .. }) {
1197-
EmitManifests::Full
1198-
} else {
1199-
EmitManifests::Minimal
1200-
},
1196+
EmitManifests::Minimal,
12011197
matches!(metadata, MetadataItem::Dynamic { .. }),
12021198
),
12031199
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { DynamicComponent } from '../client-reference'
2+
3+
export async function GET() {
4+
return new Response('Hello ' + typeof DynamicComponent)
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use client'
2+
3+
import dynamic from 'next/dynamic'
4+
5+
export const DynamicComponent = dynamic(() => import('./dynamic-component'))
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const DynamicImportComponent = () => {
2+
return (
3+
<div id="dynamic-component">This is a dynamically imported component</div>
4+
)
5+
}
6+
7+
export default DynamicImportComponent
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { DynamicComponent } from './client-reference'
2+
3+
globalThis.foo = DynamicComponent
4+
5+
export default function sitemap() {
6+
return [
7+
{
8+
url: 'https://acme.com',
9+
lastModified: new Date(),
10+
changeFrequency: 'yearly',
11+
priority: 1,
12+
},
13+
]
14+
}

test/e2e/app-dir/dynamic/dynamic.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ describe('app dir - next/dynamic', () => {
6464
expect($('#dynamic-component').text()).not.toContain('loading')
6565
})
6666

67+
it('should ignore next/dynamic in routes', async () => {
68+
const response = await next.fetch('/api')
69+
expect(await response.text()).toEqual('Hello function')
70+
})
71+
72+
it('should ignore next/dynamic in sitemap', async () => {
73+
const response = await next.fetch('/sitemap.xml')
74+
expect(await response.text()).toInclude('<changefreq>yearly</changefreq>')
75+
})
76+
6777
if (isNextDev) {
6878
it('should directly raise error when dynamic component error on server', async () => {
6979
const pagePath = 'app/default-loading/dynamic-component.js'

0 commit comments

Comments
 (0)