<UserButton />
Component
The <UserButton />
component is used to render the familiar user button UI popularized by Google.
mountUserButton()
Render the <UserButton />
component to an HTML <div>
element.
Usage
import Clerk from '@clerk/clerk-js';
import { dark } from "@clerk/themes";
document.querySelector<HTMLDivElement>('#app')!.innerHTML = `
<div
id="user-button"
></div>
`;
const userButtonComponent = document.querySelector<HTMLDivElement>('#user-button')!;
const clerk = new Clerk('pk_[publishable_key]');
await clerk.load();
clerk.mountUserButton(userButtonComponent, {
appearance: {
baseTheme: dark
}
});
<div id="user-button"></div>
<script>
const script = document.createElement('script');
script.setAttribute('data-clerk-publishable-key', 'pk_[publishable_key]');
script.async = true;
script.src = `https://[your-domain].clerk.accounts.dev/npm/@clerk/clerk-js@latest/dist/clerk.browser.js`;
script.addEventListener('load', async function () {
await window.Clerk.load();
const userButtonComponent = document.querySelector('#user-button');
window.Clerk.mountUserButton(userButtonComponent, {
appearance: {
baseTheme: dark
}
});
});
document.body.appendChild(script);
</script>
Props
function mountUserButton(node: HTMLDivElement, props?: UserButtonProps): void;
Name | Type | Description |
---|---|---|
node | HTMLDivElement | The <div> element used to render in the <UserButton /> component |
props? | UserButtonProps | The properties to pass to the `<UserButton />` component |
unmountUserButton()
Unmount and run cleanup on an existing <UserButton />
component instance.
Usage
import Clerk from '@clerk/clerk-js';
document.querySelector<HTMLDivElement>('#app')!.innerHTML = `
<div
id="user-button"
></div>
`
const userButtonComponent = document.querySelector<HTMLDivElement>('#user-button')!;
const clerk = new Clerk('pk_[publishable_key]');
await clerk.load();
clerk.mountUserButton(userButtonComponent);
// ...
clerk.unmountUserButton(userButtonComponent);
<div id="user-button"></div>
<script>
const script = document.createElement('script');
script.setAttribute('data-clerk-publishable-key', 'pk_[publishable_key]');
script.async = true;
script.src = `https://[your-domain].clerk.accounts.dev/npm/@clerk/clerk-js@latest/dist/clerk.browser.js`;
script.addEventListener('load', async function () {
await window.Clerk.load();
const userButtonComponent = document.querySelector('#user-button');
window.Clerk.mountUserButton(userButtonComponent);
// ...
window.Clerk.unmountUserButton(userButtonComponent);
});
document.body.appendChild(script);
</script>
Props
function unmountUserButton(node: HTMLDivElement): void;
Name | Type | Description |
---|---|---|
node | HTMLDivElement | The container <div> element with a rendered <UserButton /> component instance |
UserButtonProps
All props below are optional.
Name | Type | Description |
---|---|---|
appearance | object | Controls the overall look and feel. |
showName | string | Controls if the user name is displayed next to the user image button. |
signInUrl | string | The full URL or path to navigate to when the "Add another account" button is clicked. |
userProfileMode | "modal" | "navigation" | Controls whether clicking the "Manage your account" button will cause the <UserProfile /> component to open as a modal, or if the browser will navigate to the userProfileUrl where <UserProfile /> is mounted as a page. |
userProfileUrl | string | The full URL or path leading to the user management interface. |
afterSignOutUrl | string | The full URL or path to navigate to after a signing out from all accounts (applies to both single-session and multi-session apps) |
afterMultiSessionSingleSignOutUrl | string | The full URL or path to navigate to after a signing out from currently active account (multisession apps). |
afterSwitchSessionUrl | string | Full URL or path to navigate to after a successful account change (multi-session apps). |
defaultOpen | string | Controls whether the <UserButton/> should open by default during the first render. |
userProfileProps | object | Specify options for the underlying <UserProfile /> component. e.g. {additionalOAuthScopes: {google: ['foo', 'bar'], github: ['qux']}} |