<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
sessionIdwhich 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-react-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>
)
}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>import { SignOutButton } from '@clerk/remix'
export default function Home() {
return (
<SignOutButton>
<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