Skip to main content
Docs

$sessionListStore

The $sessionListStore store returns an array of objects that have been registered on the client device.

How to use the $sessionListStore store

The following example demonstrates how to use the $sessionListStore to create a basic user button component. This component displays the current session's email address and provides a menu to switch between active sessions or sign out of all accounts.

user-button.tsx
import { $sessionListStore, $clerkStore } from '@clerk/astro/client'  export default function UserButton() {  const sessions = useStore($sessionListStore)  const { session, setActive, signOut } = useStore($clerkStore)   if (sessions === undefined) {  // Handle loading state  return <div>Loading sessions...</div>  }   return (  <div>  <div>{session.user.primaryEmailAddress}</div>  <div role="menu">  {sessions.map((sess) => (  <button role="menuitem" onClick={() => setActive({ session: sess.id })} key={sess.id}>  {sess.user.primaryEmailAddress}  </button>  ))}  <button role="menuitem" onClick={() => signOut()}>  Sign out of all accounts  </button>  </div>  </div>  ) }
user-button.vue
<script setup> import { useStore } from '@nanostores/vue' import { $sessionListStore, $clerkStore } from '@clerk/astro/client'  const sessions = useStore($sessionListStore) const clerk = useStore($clerkStore) </script>  <template>  <div v-if="sessions === undefined">Loading sessions...</div>  <div v-else>  <div>{{ clerk.session.user.primaryEmailAddress }}</div>  <div role="menu">  <button  v-for="sess in sessions"  :key="sess.id"  role="menuitem"  @click="clerk.setActive({ session: sess.id })"  >  {{ sess.user.primaryEmailAddress }}  </button>  <button role="menuitem" @click="clerk.signOut">Sign out of all accounts</button>  </div>  </div> </template>
session-list.svelte
<script>  // The $ prefix is reserved in Svelte for its own reactivity system.  // Alias the imports to avoid conflicts.  import { $sessionListStore as sessions, $clerkStore as clerk } from '@clerk/astro/client' </script>  {#if $sessions === undefined}  <div>Loading sessions...</div> {:else}  <div>  <div>{$clerk.session.user.primaryEmailAddress}</div>  <div role="menu">  {#each $sessions as sess (sess.id)}  <button role="menuitem" on:click={() => $clerk.setActive({ session: sess.id })}>  {sess.user.primaryEmailAddress}  </button>  {/each}  <button role="menuitem" on:click={() => $clerk.signOut()}> Sign out of all accounts </button>  </div>  </div> {/if}

Feedback

Last updated on