<ClerkProvider>
The <ClerkProvider> component is required to integrate Clerk into your React application, providing session and user context to Clerk's hooks and components.
The recommended approach is to wrap your entire app with <ClerkProvider> at the entry point to make authentication globally accessible. If you only need authentication for specific routes or pieces of your application, render <ClerkProvider> deeper in the component tree. This allows you to implement Clerk's functionality precisely where required without impacting the rest of your app.
Example
import React from 'react'
import { ClerkProvider } from '@clerk/nextjs'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<ClerkProvider>{children}</ClerkProvider>
</body>
</html>
)
}import { ClerkProvider } from '@clerk/nextjs'
import type { AppProps } from 'next/app'
function MyApp({ Component, pageProps }: AppProps) {
return (
<ClerkProvider {...pageProps}>
<Component {...pageProps} />
</ClerkProvider>
)
}
export default MyApp- Name
-
afterMultiSessionSingleSignOutUrl? - Type
null | string- Description
The full URL or path to navigate to after signing out the current user is complete. This option applies to multi-session applications.
- Name
-
appearance? - Type
ExtractAppearanceType<TUi,Appearance>- Description
Optional object to style your components. Will only affect Clerk Components and not Account Portal pages.
- Name
-
experimental? - Type
Autocomplete<{ commerce: boolean; persistClient: boolean; rethrowOfflineNetworkErrors: boolean; },Record<string,any>>- Description
Enable experimental flags to gain access to new features. These flags are not guaranteed to be stable and may change drastically in between patch or minor versions.
- Name
-
initialState? - Type
Serializable<{ actor: undefined | { [x: string]: unknown; sub: string; type?: "agent"; }; factorVerificationAge: [number, number]; organization: undefined | OrganizationResource; orgId: undefined | string; orgPermissions: undefined | string[]; orgRole: undefined | string; orgSlug: undefined | string; session: undefined | SessionResource; sessionClaims: JwtPayload; sessionId: undefined | string; sessionStatus: SessionStatusClaim; user: undefined | UserResource; userId: undefined | string; }>- Description
Provide an initial state of the Clerk client during server-side rendering. You don't need to set this value yourself unless you're developing an SDK.
- Name
-
localization? - Type
LocalizationResource- Description
Optional object to localize your components. Will only affect Clerk Components and not Account Portal pages.
- Name
-
nonce? - Type
string- Description
This nonce value will be passed through to the
@clerk/clerk-jsscript tag. Use it to implement a strict-dynamic CSP. Requires thedynamicprop to also be set.
- Name
-
publishableKey - Type
string- Description
The Clerk Publishable Key for your instance. This can be found on the API keys page in the Clerk Dashboard.
- Name
-
satelliteAutoSync? - Type
boolean- Description
Controls whether satellite apps automatically sync with the primary domain on initial page load. When
false(default), satellite apps will skip the automatic handshake if no session cookies exist, and only trigger the handshake after an explicit sign-in action. This provides the best performance by showing the satellite app immediately without attempting to sync state first. Whentrue, satellite apps will automatically trigger a handshake redirect to sync authentication state with the primary domain on first load, even if no session cookies exist. Use this if you want users who are already signed in on the primary domain to be automatically recognized on the satellite. Defaults tofalse.
- Name
-
sdkMetadata? - Type
{ environment?: string; name: string; version: string; }- Description
Contains information about the SDK that the host application is using. You don't need to set this value yourself unless you're developing an SDK.
- Name
sdkMetadata.environment?- Type
string- Description
Typically this will be the
NODE_ENVthat the SDK is currently running in.
- Name
sdkMetadata.name- Type
string- Description
The npm package name of the SDK.
- Name
sdkMetadata.version- Type
string- Description
The npm package version of the SDK.
- Name
-
selectInitialSession? - Type
(client: ClientResource) => null | SignedInSessionResource- Description
By default, the last signed-in session is used during client initialization. This option allows you to override that behavior, e.g. by selecting a specific session.
- Name
-
signInFallbackRedirectUrl? - Type
null | string- Description
The fallback URL to redirect to after the user signs in, if there's no
redirect_urlin the path already. It's recommended to use the environment variable instead. Defaults to'/'.
- Name
-
signInForceRedirectUrl? - Type
null | string- Description
This URL will always be redirected to after the user signs in. It's recommended to use the environment variable instead.
- Name
-
signInUrl? - Type
string- Description
This URL will be used for any redirects that might happen and needs to point to your primary application on the client-side. This option is optional for production instances. It is required to be set for a satellite application in a development instance. It's recommended to use the environment variable instead.
- Name
-
signUpFallbackRedirectUrl? - Type
null | string- Description
The fallback URL to redirect to after the user signs up, if there's no
redirect_urlin the path already. It's recommended to use the environment variable instead. Defaults to'/'.
- Name
-
signUpForceRedirectUrl? - Type
null | string- Description
This URL will always be redirected to after the user signs up. It's recommended to use the environment variable instead.
- Name
-
signUpUrl? - Type
string- Description
This URL will be used for any redirects that might happen and needs to point to your primary application on the client-side. This option is optional for production instances but must be set for a satellite application in a development instance. It's recommended to use the environment variable instead.
- Name
-
supportEmail? - Type
string- Description
Optional support email for display in authentication screens. Will only affect Clerk Components and not Account Portal pages.
- Name
-
taskUrls? - Type
Partial<Record<"choose-organization" | "reset-password" | "setup-mfa",string>>- Description
Customize the URL paths users are redirected to after sign-in or sign-up when specific session tasks need to be completed. When
undefined, it uses Clerk's default task flow URLs. Defaults toundefined.
- Name
-
telemetry? - Type
false | { debug?: boolean; disabled?: boolean; perEventSampling?: boolean; }- Description
Controls whether or not Clerk will collect telemetry data. If set to
debug, telemetry events are only logged to the console and not sent to Clerk.
- Name
-
touchSession? - Type
boolean- Description
By default, the Clerk Frontend API
touchendpoint is called during page focus to keep the last active session alive. This option allows you to disable this behavior.
- Name
-
unsafe_disableDevelopmentModeConsoleWarning? - Type
boolean- Description
Disables the console warning that is logged when Clerk is initialized with development keys. [WARNING] The development mode warning is intended to ensure that you don't go to production with a non-production Clerk instance. If you're disabling it, please make sure you don't ship with a non-production Clerk instance! More information: /docs/guides/development/deployment/production
- Name
-
waitlistUrl? - Type
string- Description
The full URL or path to the waitlist page. If
undefined, will redirect to the Account Portal waitlist page.
- Name
dynamic- Type
boolean- Description
Indicates whether or not Clerk should make dynamic auth data available based on the current request. Defaults to
false. Opts the application into dynamic rendering whentrue. For more information, see Next.js rendering modes and Clerk.
Feedback
Last updated on