Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
2e52e40
feat(nextjs): skip clerk-ui script injection for headless variant
nikosdouvlis Jan 9, 2026
6ab9de3
feat(astro): skip clerk-ui script injection for headless variant
nikosdouvlis Jan 9, 2026
9a82f92
feat(react): skip clerk-ui loading for headless variant
nikosdouvlis Jan 9, 2026
d5f819a
feat(vue): skip clerk-ui loading for headless variant
nikosdouvlis Jan 9, 2026
a2e16cd
test(e2e): add headless variant test for nextjs
nikosdouvlis Jan 9, 2026
9d3bbe6
Merge branch 'main' into nikos/dont-load-clerk-ui-if-headless-is-used
nikosdouvlis Jan 12, 2026
f643280
dedupe
nikosdouvlis Jan 12, 2026
320bdde
feat(clerk-js): remove headless variant, use react-native export cond…
jacekradko Jan 21, 2026
92fe11c
Merge branch 'nikos/dont-load-clerk-ui-if-headless-is-used' of github…
jacekradko Jan 21, 2026
bb62787
fix: un-deprecate clerkJSVariant, update docs
jacekradko Jan 21, 2026
bc48c7e
feat: rename clerkJSVariant to ui prop for controlling UI script loading
jacekradko Jan 21, 2026
84c2552
Merge branch 'main' into jrad/remove-headless-variant
jacekradko Jan 21, 2026
1ca99cb
fix: update integration templates and tests to use ui prop
jacekradko Jan 21, 2026
eee7409
fix: update expo and chrome-extension for headless removal
jacekradko Jan 21, 2026
b85a057
fix: restore /no-rhc export for chrome-extension CSP compliance
jacekradko Jan 21, 2026
f3a8681
fix: add false-cjs to attw ignore rules for exports field
jacekradko Jan 21, 2026
a608376
feat: rename ui prop to prefetchUI for disabling UI bundle prefetching
jacekradko Jan 21, 2026
7c3fb9a
fix: update nuxt and tanstack-react-start for prefetchUI rename
jacekradko Jan 21, 2026
ff90124
format
jacekradko Jan 21, 2026
a0068a4
fix: update ClerkProvider type tests for prefetchUI prop rename
jacekradko Jan 21, 2026
40b99fd
fix: align env schema variable name with usage (PUBLIC_CLERK_PREFETCH…
jacekradko Jan 21, 2026
b28c7be
Merge branch 'main' into jrad/remove-headless-variant
jacekradko Jan 21, 2026
e67dfa5
fix: add shouldPrefetchClerkUi to mock in isomorphicClerk test
jacekradko Jan 21, 2026
7bb210f
Merge branch 'main' into jrad/remove-headless-variant
jacekradko Jan 22, 2026
06ca9e7
chore(clerk-js): remove obsolete headless test
jacekradko Jan 22, 2026
4120be2
chore(clerk-js): remove headless references from config files
jacekradko Jan 22, 2026
54ac826
wip
jacekradko Jan 22, 2026
a1416d6
fix: restore clerkUiUrl env support for integration tests
jacekradko Jan 22, 2026
cda44df
fix: restore clerkUiUrl in public types
jacekradko Jan 22, 2026
60e5732
chore: rename headless-variant test to prefetch-ui
jacekradko Jan 22, 2026
3ef7871
fix: update nextjs type tests for new prefetchUI API
jacekradko Jan 22, 2026
11e3189
fix: pass clerkUiUrl to ClerkScripts opts
jacekradko Jan 22, 2026
192a776
fix: pass clerkUiUrl through astro and react-router
jacekradko Jan 22, 2026
16453c1
fix: rename clerkUiUrl to clerkUIUrl for consistency with clerkJSUrl
jacekradko Jan 22, 2026
1719aea
fix: rename clerkUiUrl to clerkUIUrl in integration templates
jacekradko Jan 22, 2026
05b569c
Merge branch 'main' into jrad/remove-headless-variant
jacekradko Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .changeset/light-eagles-stay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
---
Comment on lines +1 to +2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Empty changeset file - missing package entries and description.

This changeset is empty but the PR introduces breaking changes (removal of clerkJSVariant, @clerk/clerk-js/headless import path, new ui prop). The changeset should document affected packages and their semver bumps.

🤖 Prompt for AI Agents
In @.changeset/light-eagles-stay.md around lines 1 - 2, The changeset is empty
and must document the breaking changes introduced: explicitly list affected
package names and semver bumps (use major bumps for breaking changes), describe
the removals of clerkJSVariant and the old import path `@clerk/clerk-js/headless`,
and note the new ui prop and its migration steps; update the changeset body to
include a short summary, per-package entries (e.g., package-name: major), and a
brief migration note explaining how to replace/remove clerkJSVariant, how to
update import paths to the new entrypoints, and how to adopt the new ui prop so
consumers can upgrade safely.

2 changes: 1 addition & 1 deletion integration/templates/custom-flows-react-vite/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ createRoot(document.getElementById('root')!).render(
<ClerkProvider
publishableKey={PUBLISHABLE_KEY}
clerkJSUrl={import.meta.env.VITE_CLERK_JS_URL as string}
clerkUiUrl={import.meta.env.VITE_CLERK_UI_URL as string}
clerkUIUrl={import.meta.env.VITE_CLERK_UI_URL as string}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/expo-web/app/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export default function RootLayout() {
routerPush={(to: string) => router.push(to)}
routerReplace={to => router.replace(to)}
clerkJSUrl={process.env.EXPO_PUBLIC_CLERK_JS_URL}
clerkUiUrl={process.env.EXPO_PUBLIC_CLERK_UI_URL}
clerkUIUrl={process.env.EXPO_PUBLIC_CLERK_UI_URL}
appearance={{
options: {
showOptionalFields: true,
Expand Down
1 change: 1 addition & 0 deletions integration/templates/next-app-router/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export const metadata = {
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<ClerkProvider
prefetchUI={process.env.NEXT_PUBLIC_CLERK_PREFETCH_UI_DISABLED === 'true' ? false : undefined}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/react-cra/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ root.render(
<ClerkProvider
publishableKey={process.env.REACT_APP_CLERK_PUBLISHABLE_KEY as string}
clerkJSUrl={process.env.REACT_APP_CLERK_JS as string}
clerkUiUrl={process.env.REACT_APP_CLERK_UI as string}
clerkUIUrl={process.env.REACT_APP_CLERK_UI as string}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/react-router-library/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ createRoot(document.getElementById('root')!).render(
<ClerkProvider
publishableKey={PUBLISHABLE_KEY}
clerkJSUrl={CLERK_JS_URL}
clerkUiUrl={CLERK_UI_URL}
clerkUIUrl={CLERK_UI_URL}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/react-router-node/app/root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default function App({ loaderData }: Route.ComponentProps) {
<ClerkProvider
loaderData={loaderData}
clerkJSUrl={import.meta.env.VITE_CLERK_JS_URL}
clerkUiUrl={import.meta.env.VITE_CLERK_UI_URL}
clerkUIUrl={import.meta.env.VITE_CLERK_UI_URL}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/react-vite/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const Root = () => {
// @ts-ignore
publishableKey={import.meta.env.VITE_CLERK_PUBLISHABLE_KEY as string}
clerkJSUrl={import.meta.env.VITE_CLERK_JS_URL as string}
clerkUiUrl={import.meta.env.VITE_CLERK_UI_URL as string}
clerkUIUrl={import.meta.env.VITE_CLERK_UI_URL as string}
routerPush={(to: string) => navigate(to)}
routerReplace={(to: string) => navigate(to, { replace: true })}
appearance={{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function RootDocument({ children }: { children: React.ReactNode }) {
<body>
<ClerkProvider
clerkJSUrl={import.meta.env.VITE_CLERK_JS_URL}
clerkUiUrl={import.meta.env.VITE_CLERK_UI_URL}
clerkUIUrl={import.meta.env.VITE_CLERK_UI_URL}
appearance={{
options: {
showOptionalFields: true,
Expand Down
2 changes: 1 addition & 1 deletion integration/templates/vue-vite/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const app = createApp(App);
app.use(clerkPlugin, {
publishableKey: import.meta.env.VITE_CLERK_PUBLISHABLE_KEY,
clerkJSUrl: import.meta.env.VITE_CLERK_JS_URL,
clerkUiUrl: import.meta.env.VITE_CLERK_UI_URL,
clerkUIUrl: import.meta.env.VITE_CLERK_UI_URL,
clerkJSVersion: import.meta.env.VITE_CLERK_JS_VERSION,
appearance: {
options: {
Expand Down
32 changes: 32 additions & 0 deletions integration/tests/prefetch-ui.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { expect, test } from '@playwright/test';

import type { Application } from '../models/application';
import { appConfigs } from '../presets';

test.describe('prefetchUI disabled @nextjs', () => {
test.describe.configure({ mode: 'serial' });
let app: Application;

test.beforeAll(async () => {
app = await appConfigs.next.appRouter.clone().commit();
await app.setup();
// Use withEmailCodes but disable the UI prefetching
const env = appConfigs.envs.withEmailCodes.clone().setEnvVariable('public', 'CLERK_PREFETCH_UI_DISABLED', 'true');
await app.withEnv(env);
await app.dev();
});

test.afterAll(async () => {
await app.teardown();
});

test('does not inject clerk-ui script when prefetchUI is disabled', async ({ page }) => {
await page.goto(app.serverUrl);

// Wait for clerk-js script to be present (ensures page has loaded)
await expect(page.locator('script[data-clerk-js-script]')).toBeAttached();

// clerk-ui script should NOT be present
await expect(page.locator('script[data-clerk-ui-script]')).not.toBeAttached();
});
});
4 changes: 2 additions & 2 deletions packages/astro/src/env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ interface InternalEnv {
readonly PUBLIC_CLERK_FRONTEND_API?: string;
readonly PUBLIC_CLERK_PUBLISHABLE_KEY?: string;
readonly PUBLIC_CLERK_JS_URL?: string;
readonly PUBLIC_CLERK_UI_URL?: string;
readonly PUBLIC_CLERK_JS_VARIANT?: 'headless' | '';
readonly PUBLIC_CLERK_JS_VERSION?: string;
readonly PUBLIC_CLERK_UI_URL?: string;
readonly PUBLIC_CLERK_PREFETCH_UI_DISABLED?: string;
readonly CLERK_API_KEY?: string;
readonly CLERK_API_URL?: string;
readonly CLERK_API_VERSION?: string;
Expand Down
20 changes: 5 additions & 15 deletions packages/astro/src/integration/create-integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@ function createIntegration<Params extends HotloadAstroClerkIntegrationParams>()

// These are not provided when the "bundled" integration is used
const clerkJSUrl = (params as any)?.clerkJSUrl as string | undefined;
const clerkUiUrl = (params as any)?.clerkUiUrl as string | undefined;
const clerkJSVariant = (params as any)?.clerkJSVariant as string | undefined;
const clerkJSVersion = (params as any)?.clerkJSVersion as string | undefined;
const prefetchUI = (params as any)?.prefetchUI as boolean | undefined;

return {
name: '@clerk/astro/integration',
Expand All @@ -32,10 +31,6 @@ function createIntegration<Params extends HotloadAstroClerkIntegrationParams>()
logger.error('Missing adapter, please update your Astro config to use one.');
}

if (typeof clerkJSVariant !== 'undefined' && clerkJSVariant !== 'headless' && clerkJSVariant !== '') {
logger.error('Invalid value for clerkJSVariant. Acceptable values are `"headless"`, `""`, and `undefined`');
}

const internalParams: ClerkOptions = {
...params,
sdkMetadata: {
Expand All @@ -61,9 +56,8 @@ function createIntegration<Params extends HotloadAstroClerkIntegrationParams>()
...buildEnvVarFromOption(proxyUrl, 'PUBLIC_CLERK_PROXY_URL'),
...buildEnvVarFromOption(domain, 'PUBLIC_CLERK_DOMAIN'),
...buildEnvVarFromOption(clerkJSUrl, 'PUBLIC_CLERK_JS_URL'),
...buildEnvVarFromOption(clerkUiUrl, 'PUBLIC_CLERK_UI_URL'),
...buildEnvVarFromOption(clerkJSVariant, 'PUBLIC_CLERK_JS_VARIANT'),
...buildEnvVarFromOption(clerkJSVersion, 'PUBLIC_CLERK_JS_VERSION'),
...buildEnvVarFromOption(prefetchUI === false, 'PUBLIC_CLERK_PREFETCH_UI_DISABLED'),
},

ssr: {
Expand Down Expand Up @@ -170,14 +164,10 @@ function createClerkEnvSchema() {
PUBLIC_CLERK_PROXY_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),
PUBLIC_CLERK_DOMAIN: envField.string({ context: 'client', access: 'public', optional: true, url: true }),
PUBLIC_CLERK_JS_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),
PUBLIC_CLERK_UI_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),
PUBLIC_CLERK_JS_VARIANT: envField.enum({
context: 'client',
access: 'public',
optional: true,
values: ['headless'],
}),
PUBLIC_CLERK_JS_VERSION: envField.string({ context: 'client', access: 'public', optional: true }),
PUBLIC_CLERK_PREFETCH_UI_DISABLED: envField.boolean({ context: 'client', access: 'public', optional: true }),
PUBLIC_CLERK_UI_URL: envField.string({ context: 'client', access: 'public', optional: true, url: true }),
PUBLIC_CLERK_UI_VERSION: envField.string({ context: 'client', access: 'public', optional: true }),
PUBLIC_CLERK_TELEMETRY_DISABLED: envField.boolean({ context: 'client', access: 'public', optional: true }),
PUBLIC_CLERK_TELEMETRY_DEBUG: envField.boolean({ context: 'client', access: 'public', optional: true }),
CLERK_SECRET_KEY: envField.string({ context: 'server', access: 'secret' }),
Expand Down
10 changes: 8 additions & 2 deletions packages/astro/src/internal/create-clerk-instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
loadClerkJsScript,
loadClerkUiScript,
setClerkJsLoadingErrorPackageName,
shouldPrefetchClerkUi,
} from '@clerk/shared/loadClerkJsScript';
import type { ClerkOptions } from '@clerk/shared/types';
import type { ClerkUiConstructor } from '@clerk/shared/ui';
Expand Down Expand Up @@ -111,15 +112,20 @@ async function getClerkJsEntryChunk<TUi extends Ui = Ui>(options?: AstroClerkCre
/**
* Gets the ClerkUI constructor, either from options or by loading the script.
* Returns early if window.__internal_ClerkUiCtor already exists.
* Returns undefined when prefetchUI={false} (no UI needed).
*/
async function getClerkUiEntryChunk<TUi extends Ui = Ui>(
options?: AstroClerkCreateInstanceParams<TUi>,
): Promise<ClerkUiConstructor> {
): Promise<ClerkUiConstructor | undefined> {
if (!shouldPrefetchClerkUi(options?.prefetchUI)) {
return undefined;
}

if (options?.clerkUiCtor) {
return options.clerkUiCtor;
}

await loadClerkUiScript(options);
await loadClerkUiScript(options as any);

if (!window.__internal_ClerkUiCtor) {
throw new Error('Failed to download latest Clerk UI. Contact support@clerk.com.');
Expand Down
28 changes: 24 additions & 4 deletions packages/astro/src/internal/merge-env-vars-with-params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,26 @@ import { isTruthy } from '@clerk/shared/underscore';

import type { AstroClerkIntegrationParams } from '../types';

/**
* Merges `prefetchUI` param with env vars.
* - If param `prefetchUI` is explicitly `false`, return `false`
* - If env `PUBLIC_CLERK_PREFETCH_UI_DISABLED` is "true", return `false`
* - Otherwise return `undefined` (default behavior: prefetch UI)
*/
function mergePrefetchUIConfig(paramPrefetchUI: AstroClerkIntegrationParams['prefetchUI']): boolean | undefined {
// Explicit false from param takes precedence
if (paramPrefetchUI === false) {
return false;
}

// Check env var for disabled
if (import.meta.env.PUBLIC_CLERK_PREFETCH_UI_DISABLED === 'true') {
return false;
}

return undefined;
}

/**
* @internal
*/
Expand All @@ -15,9 +35,9 @@ const mergeEnvVarsWithParams = (params?: AstroClerkIntegrationParams & { publish
publishableKey: paramPublishableKey,
telemetry: paramTelemetry,
clerkJSUrl: paramClerkJSUrl,
clerkUiUrl: paramClerkUiUrl,
clerkJSVariant: paramClerkJSVariant,
clerkJSVersion: paramClerkJSVersion,
clerkUIUrl: paramClerkUiUrl,
prefetchUI: paramPrefetchUI,
...rest
} = params || {};

Expand All @@ -28,10 +48,10 @@ const mergeEnvVarsWithParams = (params?: AstroClerkIntegrationParams & { publish
proxyUrl: paramProxy || import.meta.env.PUBLIC_CLERK_PROXY_URL,
domain: paramDomain || import.meta.env.PUBLIC_CLERK_DOMAIN,
publishableKey: paramPublishableKey || import.meta.env.PUBLIC_CLERK_PUBLISHABLE_KEY || '',
clerkUiUrl: paramClerkUiUrl || import.meta.env.PUBLIC_CLERK_UI_URL,
clerkJSUrl: paramClerkJSUrl || import.meta.env.PUBLIC_CLERK_JS_URL,
clerkJSVariant: paramClerkJSVariant || import.meta.env.PUBLIC_CLERK_JS_VARIANT,
clerkJSVersion: paramClerkJSVersion || import.meta.env.PUBLIC_CLERK_JS_VERSION,
clerkUIUrl: paramClerkUiUrl || import.meta.env.PUBLIC_CLERK_UI_URL,
prefetchUI: mergePrefetchUIConfig(paramPrefetchUI),
telemetry: paramTelemetry || {
disabled: isTruthy(import.meta.env.PUBLIC_CLERK_TELEMETRY_DISABLED),
debug: isTruthy(import.meta.env.PUBLIC_CLERK_TELEMETRY_DEBUG),
Expand Down
43 changes: 27 additions & 16 deletions packages/astro/src/server/build-clerk-hotload-script.ts
Original file line number Diff line number Diff line change
@@ -1,46 +1,57 @@
import { clerkJsScriptUrl, clerkUiScriptUrl } from '@clerk/shared/loadClerkJsScript';
import { clerkJsScriptUrl, clerkUiScriptUrl, shouldPrefetchClerkUi } from '@clerk/shared/loadClerkJsScript';
import type { APIContext } from 'astro';

import { getSafeEnv } from './get-safe-env';

function buildClerkHotloadScript(locals: APIContext['locals']) {
const env = getSafeEnv(locals);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const publishableKey = getSafeEnv(locals).pk!;
const publishableKey = env.pk!;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const proxyUrl = getSafeEnv(locals).proxyUrl!;
const proxyUrl = env.proxyUrl!;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const domain = getSafeEnv(locals).domain!;
const domain = env.domain!;

const clerkJsScriptSrc = clerkJsScriptUrl({
clerkJSUrl: getSafeEnv(locals).clerkJsUrl,
clerkJSVariant: getSafeEnv(locals).clerkJsVariant,
clerkJSVersion: getSafeEnv(locals).clerkJsVersion,
domain,
proxyUrl,
publishableKey,
});
const clerkUiScriptSrc = clerkUiScriptUrl({
clerkUiUrl: getSafeEnv(locals).clerkUiUrl,
clerkJSUrl: env.clerkJsUrl,
clerkJSVersion: env.clerkJsVersion,
domain,
proxyUrl,
publishableKey,
});
return `

const clerkJsScript = `
<script src="${clerkJsScriptSrc}"
data-clerk-js-script
async
crossOrigin='anonymous'
${publishableKey ? `data-clerk-publishable-key="${publishableKey}"` : ``}
${proxyUrl ? `data-clerk-proxy-url="${proxyUrl}"` : ``}
${domain ? `data-clerk-domain="${domain}"` : ``}
></script>
></script>`;

if (!shouldPrefetchClerkUi(env.prefetchUI)) {
return clerkJsScript + '\n';
}

const clerkUiScriptSrc = clerkUiScriptUrl({
clerkUIUrl: env.clerkUIUrl,
domain,
proxyUrl,
publishableKey,
});

const clerkUiScript = `
<script src="${clerkUiScriptSrc}"
data-clerk-ui-script
async
crossOrigin='anonymous'
${publishableKey ? `data-clerk-publishable-key="${publishableKey}"` : ``}
${proxyUrl ? `data-clerk-proxy-url="${proxyUrl}"` : ``}
${domain ? `data-clerk-domain="${domain}"` : ``}
></script>\n`;
></script>`;

return clerkJsScript + clerkUiScript + '\n';
}

export { buildClerkHotloadScript };
6 changes: 4 additions & 2 deletions packages/astro/src/server/get-safe-env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ function getContextEnvVar(envVarName: keyof InternalEnv, contextOrLocals: Contex
* @internal
*/
function getSafeEnv(context: ContextOrLocals) {
const prefetchUIDisabled = getContextEnvVar('PUBLIC_CLERK_PREFETCH_UI_DISABLED', context) === 'true';

return {
domain: getContextEnvVar('PUBLIC_CLERK_DOMAIN', context),
isSatellite: getContextEnvVar('PUBLIC_CLERK_IS_SATELLITE', context) === 'true',
Expand All @@ -31,9 +33,9 @@ function getSafeEnv(context: ContextOrLocals) {
signInUrl: getContextEnvVar('PUBLIC_CLERK_SIGN_IN_URL', context),
signUpUrl: getContextEnvVar('PUBLIC_CLERK_SIGN_UP_URL', context),
clerkJsUrl: getContextEnvVar('PUBLIC_CLERK_JS_URL', context),
clerkUiUrl: getContextEnvVar('PUBLIC_CLERK_UI_URL', context),
clerkJsVariant: getContextEnvVar('PUBLIC_CLERK_JS_VARIANT', context) as 'headless' | '' | undefined,
clerkJsVersion: getContextEnvVar('PUBLIC_CLERK_JS_VERSION', context),
clerkUIUrl: getContextEnvVar('PUBLIC_CLERK_UI_URL', context),
prefetchUI: prefetchUIDisabled ? false : undefined,
apiVersion: getContextEnvVar('CLERK_API_VERSION', context),
apiUrl: getContextEnvVar('CLERK_API_URL', context),
telemetryDisabled: isTruthy(getContextEnvVar('PUBLIC_CLERK_TELEMETRY_DISABLED', context)),
Expand Down
9 changes: 7 additions & 2 deletions packages/astro/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,17 @@ type AstroClerkIntegrationParams<TUi extends Ui = Ui> = Without<
MultiDomainAndOrProxyPrimitives & {
appearance?: Appearance<TUi>;
clerkJSUrl?: string;
clerkJSVariant?: 'headless' | '';
clerkJSVersion?: string;
/**
* The URL that `@clerk/ui` should be hot-loaded from.
*/
clerkUiUrl?: string;
clerkUIUrl?: string;
/**
* Controls prefetching of the `@clerk/ui` script.
* - `false` - Skip prefetching the UI (for custom UIs using Control Components)
* - `undefined` (default) - Prefetch UI normally
*/
prefetchUI?: boolean;
};

type AstroClerkCreateInstanceParams<TUi extends Ui = Ui> = AstroClerkIntegrationParams<TUi> & {
Expand Down
6 changes: 0 additions & 6 deletions packages/chrome-extension/src/internal/clerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,6 @@ export function createClerkClient({
storageCache = BrowserStorageCache,
syncHost,
}: CreateClerkClientOptions) {
if (scope === SCOPE.BACKGROUND) {
// TODO @nikos
// @ts-expect-error will be replaced by clerk ui
Clerk.mountComponentRenderer = undefined;
}

// Don't cache background scripts as it can result in out-of-sync client information.
if (clerk && scope !== SCOPE.BACKGROUND) {
return clerk;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ type Handler = Parameters<Clerk['__internal_onBeforeRequest']>[0];
type Req = Parameters<Handler>[0];

/** Append the JWT to the FAPI request */
export function requestHandler(jwtHandler: JWTHandler, { isProd }: { isProd: boolean }) {
export function requestHandler(jwtHandler: JWTHandler, { isProd }: { isProd: boolean }): Handler {
const handler: Handler = async requestInit => {
requestInit.credentials = 'omit';

Expand Down
Loading
Loading