diff --git a/packages/nuxt/src/components/runtime/client-component.ts b/packages/nuxt/src/components/runtime/client-component.ts index 8fc181930a..cb2087c12a 100644 --- a/packages/nuxt/src/components/runtime/client-component.ts +++ b/packages/nuxt/src/components/runtime/client-component.ts @@ -4,7 +4,13 @@ import ClientOnly from '#app/components/client-only' /* @__NO_SIDE_EFFECTS__ */ export const createClientPage = (loader: AsyncComponentLoader) => { - const page = defineAsyncComponent(loader) + const page = defineAsyncComponent(import.meta.dev + ? () => loader().then((m) => { + // mark component as client-only for `definePageMeta` + (m.default || m).__clientOnlyPage = true + return m.default || m + }) + : loader) return defineComponent({ inheritAttrs: false, diff --git a/packages/nuxt/src/pages/runtime/composables.ts b/packages/nuxt/src/pages/runtime/composables.ts index c00b6d46d7..d1f3553358 100644 --- a/packages/nuxt/src/pages/runtime/composables.ts +++ b/packages/nuxt/src/pages/runtime/composables.ts @@ -60,7 +60,7 @@ export const definePageMeta = (meta: PageMeta): void => { try { const isRouteComponent = component && useRoute().matched.some(p => Object.values(p.components || {}).includes(component)) const isRenderingServerPage = import.meta.server && useNuxtApp().ssrContext?.islandContext - if (isRouteComponent || isRenderingServerPage) { + if (isRouteComponent || isRenderingServerPage || ((component as any)?.__clientOnlyPage)) { // don't warn if it's being used in a route component (or server page) return }