react
NextAuth.js methods and components that work in Client components and the Pages Router.
For use in Server Actions, check out these methods
SessionProvider()β
SessionProvider(
props
):Element
React Context provider to wrap the app (pages/
) to make session data available anywhere.
When used, the session state is automatically synchronized across all open tabs/windows and they are all updated whenever they gain or lose focus
or the state changes (e.g. a user signs in or out) when refetchOnWindowFocus is true
.
You will likely not need SessionProvider
if you are using the Next.js App Router (app/
).
Parametersβ
Parameter | Type |
---|---|
props | SessionProviderProps |
Returnsβ
Element
signIn()β
signIn<
P
>(provider
?,options
?,authorizationParams
?):Promise
<P
extendsRedirectableProviderType
?SignInResponse
|undefined
:undefined
>
Initiate a signin flow or send the user to the signin page listing all possible providers. Handles CSRF protection.
Type parametersβ
Parameter | Default |
---|---|
P extends undefined | RedirectableProviderType | undefined |
Parametersβ
Parameter | Type |
---|---|
provider ? | LiteralUnion < P extends RedirectableProviderType ? BuiltInProviderType | P : BuiltInProviderType , string > |
options ? | SignInOptions |
authorizationParams ? | SignInAuthorizationParams |
Returnsβ
Promise
< P
extends RedirectableProviderType
? SignInResponse
| undefined
: undefined
>
signOut()β
signOut<
R
>(options
?):Promise
<R
extendstrue
?undefined
:SignOutResponse
>
Initiate a signout, by destroying the current session. Handles CSRF protection.
Type parametersβ
Parameter | Default |
---|---|
R extends boolean | true |
Parametersβ
Parameter | Type |
---|---|
options ? | SignOutParams < R > |
Returnsβ
Promise
< R
extends true
? undefined
: SignOutResponse
>
useSession()β
useSession<
R
>(options
?):SessionContextValue
<R
>
React Hook that gives you access to the logged in user's session data and lets you modify it.
You will likely not need useSession
if you are using the Next.js App Router (app/
).
Type parametersβ
Parameter |
---|
R extends boolean |
Parametersβ
Parameter | Type |
---|---|
options ? | UseSessionOptions < R > |
Returnsβ
SessionContextValue
< R
>
SessionContextValueβ
SessionContextValue: <
R
>R
extendstrue
? {data
:Session
;status
:"authenticated"
;update
:UpdateSession
;} | {data
:null
;status
:"loading"
;update
:UpdateSession
;} : {data
:Session
;status
:"authenticated"
;update
:UpdateSession
;} | {data
:null
;status
:"unauthenticated"
|"loading"
;update
:UpdateSession
;}
useSession() returns an object containing three things: a method called update, data
and status
.
Type parametersβ
Parameter | Default |
---|---|
R extends boolean | false |
UpdateSessionβ
UpdateSession: (
data
?) =>Promise
<Session
|null
>
Todoβ
Document
Parametersβ
Parameter | Type |
---|---|
data ? | any |
Returnsβ
Promise
< Session
| null
>
SessionProviderPropsβ
If you have session expiry times of 30 days (the default) or more, then you probably don't need to change any of the default options.
However, if you need to customize the session behavior and/or are using short session expiry times, you can pass options to the provider to customize the behavior of the useSession hook.
Propertiesβ
refetchIntervalβ
optional
refetchInterval:number
A time interval (in seconds) after which the session will be re-fetched.
If set to 0
(default), the session is not polled.
refetchOnWindowFocusβ
optional
refetchOnWindowFocus:boolean
SessionProvider
automatically refetches the session when the user switches between windows.
This option activates this behaviour if set to true
(default).
refetchWhenOfflineβ
optional
refetchWhenOffline:false
Set to false
to stop polling when the device has no internet access offline (determined by navigator.onLine
)