Skip to content

fix: Add next/compat/router shim#224

Open
wobsoriano wants to merge 2 commits intocloudflare:mainfrom
wobsoriano:rob/esm-router-compat
Open

fix: Add next/compat/router shim#224
wobsoriano wants to merge 2 commits intocloudflare:mainfrom
wobsoriano:rob/esm-router-compat

Conversation

@wobsoriano
Copy link

@wobsoriano wobsoriano commented Mar 2, 2026

Adds a new compat-router shim for next/compat/router, the public Next.js API intended for components shared between Pages Router and App Router.

@clerk/nextjs (ref) import from next/compat/router. The next/compat/router package entry is CJS (module.exports = require(...)), which Vite cannot extract named ESM exports from — causing a "does not provide an export named 'useRouter'" error at runtime. Adding a native ESM shim in vinext resolves this without requiring apps to add a resolve.alias workaround.

Temporary fix:

// vite.config.ts

resolve: {
  alias: {
    // next/compat/router ships a CJS entry; alias to the ESM version instead.
    "next/compat/router": resolve("./node_modules/next/dist/esm/client/compat/router.js"),
  },
},

Locally tested via pnpm link

@wobsoriano wobsoriano changed the title feat: Add next/compat/router shim fix: Add next/compat/router shim Mar 2, 2026
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.

1 participant