Skip to content

fix(next-mdx): preserve MDX metadata in webpack#94983

Open
mturac wants to merge 1 commit into
vercel:canaryfrom
mturac:fix/issue-91735-mdx-webpack-metadata
Open

fix(next-mdx): preserve MDX metadata in webpack#94983
mturac wants to merge 1 commit into
vercel:canaryfrom
mturac:fix/issue-91735-mdx-webpack-metadata

Conversation

@mturac

@mturac mturac commented Jun 20, 2026

Copy link
Copy Markdown

What

Teach @next/mdx to pass app-router MDX files through next-swc-loader with the React Server Components bundle layer when webpack is used.

This keeps MDX pages that export metadata classified as Server Components instead of being rejected as Client Components.

Why

The documented app-router MDX pattern supports export const metadata, but under webpack the custom MDX rule reused the default SWC loader without the RSC bundle layer. That made app/page.mdx fail during next build --webpack with:

You are attempting to export "metadata" from a component marked with "use client"

How

  • Clone the default SWC loader used by @next/mdx webpack rules.
  • Add bundleLayer: "rsc" only when that loader is next-swc-loader.
  • Extend the existing MDX e2e fixture with a metadata export and assert the rendered <title>.

Fixes #91735

Testing

  • pnpm build-all
  • HEADLESS=true pnpm test-start-webpack test/e2e/app-dir/mdx/mdx.test.ts -t "should work in initial html"
  • HEADLESS=true pnpm test-start-webpack test/e2e/app-dir/mdx/mdx.test.ts
  • HEADLESS=true pnpm test-start-turbo test/e2e/app-dir/mdx/mdx.test.ts
  • node --check packages/next-mdx/index.js
  • pnpm prettier --check packages/next-mdx/index.js test/e2e/app-dir/mdx/mdx.test.ts test/e2e/app-dir/mdx/app/page.mdx
  • pnpm --filter @next/mdx pack-for-isolated-tests
  • git diff --check

Comment thread packages/next-mdx/index.js
@mturac mturac force-pushed the fix/issue-91735-mdx-webpack-metadata branch from 276c91a to bd04e27 Compare June 20, 2026 03:00
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.

MDX export const metadata fails to build with webpack in 16.2.0 (regression from 16.1.6)

1 participant