<SignOutButton>
The <SignOutButton>
component is a button that signs a user out. By default, it is a <button>
tag that says Sign Out, but it is completely customizable by passing children.
Properties
- Name
asChild?
- Type
boolean
- Description
For Astro only: If
true
, the<SignOutButton>
component will render its children as a child of the component.
- Name
redirectUrl?
- Type
string
- Description
The full URL or path to navigate after successful sign-out.
- Name
signOutOptions?
- Type
SignOutOptions
- Description
Options for signing out. Includes
sessionId
which if passed, signs the user out of a specific session. Useful for multi-session applications.
- Name
children?
- Type
React.ReactNode
- Description
Children you want to wrap the
<SignOutButton>
in.
SignOutOptions
The type of the signOutOptions
prop for the <SignOutButton>
component is defined as follows:
- Name
sessionId?
- Type
string
- Description
The ID of a specific session to sign out of. Useful for multi-session applications.
- Name
redirectUrl?
- Type
string
- Description
The full URL or path to navigate after successful sign-out.
import { SignOutButton } from '@clerk/nextjs'
export default function Home() {
return <SignOutButton />
}
import { SignOutButton } from '@clerk/clerk-react'
const SignOutPage = () => <SignOutButton />
export default SignOutPage
---
import { SignOutButton } from '@clerk/astro/components'
---
<SignOutButton />
import { SignOutButton } from '@clerk/remix'
export default function SignOutPage() {
return <SignOutButton />
}
import { SignOutButton } from '@clerk/tanstack-start'
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/sign-out')({
component: SignOut,
})
function SignOut() {
return <SignOutButton />
}
<script setup>
import { SignOutButton } from '@clerk/vue'
</script>
<template>
<SignOutButton />
</template>
Custom usage
You can create a custom button by wrapping your own button, or button text, in the <SignOutButton>
component.
import { SignOutButton } from '@clerk/nextjs'
export default function Home() {
return (
<SignOutButton>
<button>Custom sign out button</button>
</SignOutButton>
)
}
import { SignOutButton } from '@clerk/clerk-react'
export default function Example() {
return (
<SignOutButton>
<button>Custom sign out button</button>
</SignOutButton>
)
}
import { SignOutButton } from '@clerk/remix'
export default function Home() {
return (
<SignOutButton>
<button>Custom sign out button</button>
</SignOutButton>
)
}
You must pass the asChild
prop to the <SignOutButton>
component if you are passing children to it.
---
import { SignOutButton } from '@clerk/astro/components'
---
<SignOutButton asChild>
<button>Custom sign out button</button>
</SignOutButton>
<script setup>
import { SignOutButton } from '@clerk/vue'
</script>
<template>
<SignOutButton>
<button>Custom sign out button</button>
</SignOutButton>
</template>
Multi-session usage
Sign out of all sessions
Clicking the <SignOutButton>
component signs the user out of all sessions. This is the default behavior.
Sign out of a specific session
You can sign out of a specific session by passing in a sessionId
to the signOutOptions
prop. This is useful for signing a single account out of a multi-session (multiple account) application.
In the following example, the sessionId
is retrieved from the useAuth()
hook. If the user is not signed in, the sessionId
will be null
, and the user is shown the <SignInButton>
component. If the user is signed in, the user is shown the <SignOutButton>
component, which when clicked, signs the user out of that specific session.
'use client'
import { SignInButton, SignOutButton, useAuth } from '@clerk/nextjs'
export default function Home() {
const { sessionId } = useAuth()
if (!sessionId) {
return <SignInButton />
}
return <SignOutButton signOutOptions={{ sessionId }} />
}
import { SignInButton, SignOutButton, useAuth } from '@clerk/clerk-react'
export default function Home() {
const { sessionId } = useAuth()
if (!sessionId) {
return <SignInButton />
}
return <SignOutButton signOutOptions={{ sessionId }} />
}
import { SignInButton, SignOutButton, useAuth } from '@clerk/remix'
export default function Home() {
const { sessionId } = useAuth()
if (!sessionId) {
return <SignInButton />
}
return <SignOutButton signOutOptions={{ sessionId }} />
}
<script setup>
import { SignInButton, SignOutButton, useAuth } from '@clerk/vue'
const { sessionId } = useAuth()
</script>
<template>
<SignInButton v-if="!sessionId" />
<SignOutButton v-else :sign-out-options="{ sessionId }" />
</template>
Feedback
Last updated on