diff --git a/.changeset/perfect-chairs-work.md b/.changeset/perfect-chairs-work.md new file mode 100644 index 00000000000..908c025d797 --- /dev/null +++ b/.changeset/perfect-chairs-work.md @@ -0,0 +1,5 @@ +--- +"@clerk/nextjs": patch +--- + +Return build-time error if `auth` and `currentUser` server-side helpers are imported into Client Components. diff --git a/package-lock.json b/package-lock.json index d3bbf7ef0b8..2c8071ead43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41884,6 +41884,11 @@ "node": ">= 0.8.0" } }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==" + }, "node_modules/set-blocking": { "version": "2.0.0", "license": "ISC" @@ -49890,6 +49895,7 @@ "@clerk/types": "4.8.0", "crypto-js": "4.2.0", "path-to-regexp": "6.2.2", + "server-only": "0.0.1", "tslib": "2.4.1" }, "devDependencies": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index fd802815961..1a363eaa2de 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -73,6 +73,7 @@ "@clerk/types": "4.8.0", "crypto-js": "4.2.0", "path-to-regexp": "6.2.2", + "server-only": "0.0.1", "tslib": "2.4.1" }, "devDependencies": { diff --git a/packages/nextjs/src/app-router/server/auth.ts b/packages/nextjs/src/app-router/server/auth.ts index 97302ea3d77..836a27ae091 100644 --- a/packages/nextjs/src/app-router/server/auth.ts +++ b/packages/nextjs/src/app-router/server/auth.ts @@ -1,3 +1,5 @@ +import 'server-only'; + import type { AuthObject, RedirectFun } from '@clerk/backend/internal'; import { constants, createClerkRequest, createRedirect } from '@clerk/backend/internal'; import { notFound, redirect } from 'next/navigation'; diff --git a/packages/nextjs/src/app-router/server/currentUser.ts b/packages/nextjs/src/app-router/server/currentUser.ts index 4d7cb2d7be1..b73d8cc7087 100644 --- a/packages/nextjs/src/app-router/server/currentUser.ts +++ b/packages/nextjs/src/app-router/server/currentUser.ts @@ -1,3 +1,5 @@ +import 'server-only'; + import type { User } from '@clerk/backend'; import { clerkClient } from '../../server/clerkClient'; diff --git a/packages/nextjs/src/server/__tests__/exports.test.ts b/packages/nextjs/src/server/__tests__/exports.test.ts index 2b2a5110378..e2c373c7070 100644 --- a/packages/nextjs/src/server/__tests__/exports.test.ts +++ b/packages/nextjs/src/server/__tests__/exports.test.ts @@ -1,3 +1,5 @@ +jest.mock('server-only', () => null); + import * as publicExports from '../index'; describe('/server public exports', () => {