Additional resources
Next is a React framework that makes it easy to build fast, production-ready web apps. This guide will show you how to add Userfront to your Next.js app.
Add the UserfrontProvider with your desired tenantId to the root layout:
| Option | Default | Description | 
|---|---|---|
tenantId | string | The tenant identifier, this can be found in workspace Tenants on the Userfront dashboard. | 
loginUrl | string | Redirect URL for unauthenticated visitors that need to login, the default is /login. | 
loginRedirect | string | Redirect URL after login, false to disable. When undefined, uses the path configured to the workspace paths & routing settings. | 
signupRedirect | string | Redirect URL after signup, false to disable. When undefined, uses the path configured to the workspace paths & routing settings. | 
logoutRedirect | string | Redirect URL after logout, false to disable. When undefined, uses the path configured to the workspace paths & routing settings. | 
requireAuth | boolean | When true, unauthenticated visitors will be redirected to the loginUrl. | 
Use @userfront/next/client with client components. These files or functions have the "use client"; directive.
UI Toolkit components are included in this package. Import and use them without any props:
The available components are LoginForm, SignupForm, PasswordResetForm and LogoutButton.
Use the useUserfront() hook to access the current client auth state:
In addition to the core JS library and the UserfrontProvider properties, these are also available for use:
| Property | Type | Description | 
|---|---|---|
isAuthenticated | boolean | Whether or not the current visitor is signed into a valid user account. | 
isLoading | boolean | Whether or not Userfront has loaded and initialized. | 
For example, redirect unauthenticated visitors to the login page:
Use @userfront/next/server on the server. These files or functions should have the "use server"; directive.
Define these environment variables in your .env or however they are configured in your application:
The SDK will use these variables when they are defined.
You may choose to instantiate the Node client instead, for example, when your secrets are retrieved asynchronously, if you're using a context, or if you prefer the greater abstraction. There are other debugging and error handling benefits as well.
| Option | Default | Description | 
|---|---|---|
apiKey | USERFRONT_API_KEY | The secret admin API key, from Authentication / API Keys in the Userfront dashboard. | 
baseUrl | 'https://api.userfront.com' | The API URL to use for requests, in case you're using a proxy or custom domain. | 
version | 'v0' | The API version to use, an empty string will remove the version from requests. | 
tenantId | USERFRONT_TENANT_ID | The parent workspace ID, this can be found on the Userfront dashboard. | 
mode | NODE_ENV === 'production' ? 'live' : 'test' | The mode to use, live when process.env.NODE_ENV is production, otherwise test. To enable live mode, visit Live Domains in the Userfront dashboard. | 
origin | undefined | The origin header for requests, this may be required in some cases. | 
debug | NODE_ENV !== 'production' | Log a cURL per request, disabled when process.env.NODE_ENV is production. | 
With the client, a cURL logger will be enabled by default in development environments.
Disable this by setting debug to false in the client options.
Responses that are not 2xx will throw a UserfrontFetcherError. Catch them to handle Userfront errors appropriately.
Got stuck and need some help? Please do not hesistate to contact us and our team of engineers will be happy to help.