Skip to main content
Docs

<OrganizationList /> component

The <OrganizationList /> component displays organization-related memberships and automatic invitations and suggestions for the user.

The <OrganizationList /> component displays organization-related memberships and automatic invitations and suggestions for the user.

Properties

The <OrganizationList /> component accepts the following properties, all of which are optional:

  • Name
    afterCreateOrganizationUrl
    Type
    ((org: Organization) => string) | string
    Description

    The full URL or path to navigate to after creating a new organization.

  • Name
    afterSelectOrganizationUrl
    Type
    ((org: Organization) => string) | string
    Description

    The full URL or path to navigate to after selecting an organization. Defaults to undefined.

  • Name
    afterSelectPersonalUrl
    Type
    ((org: Organization) => string) | string
    Description

    The full URL or path to navigate to after selecting the personal account. Defaults to undefined.

  • Name
    appearance
    Type
    Appearance | undefined
    Description

    Optional object to style your components. Will only affect Clerk components and not Account Portal pages.

  • Name
    fallback?
    Type
    ReactNode
    Description

    An optional element to be rendered while the component is mounting.

  • Name
    hidePersonal
    Type
    boolean
    Description

    A boolean that controls whether <OrganizationList /> will include the user's personal account in the organization list. Setting this to true will hide the personal account option, and users will only be able to switch between organizations. Defaults to false.

  • Name
    hideSlug
    Type
    boolean
    Description

    A boolean that controls whether the optional slug field in the organization creation screen is hidden. Defaults to false.

  • Name
    skipInvitationScreen
    Type
    boolean | undefined
    Description

    A boolean that controls whether the screen for sending invitations after an organization is created is hidden. When undefined, Clerk will automatically hide the screen if the number of max allowed members is equal to 1. Defaults to false.

app/organizations/page.tsx
import { OrganizationList } from '@clerk/nextjs'

export default function OrganizationListPage() {
  return (
    <OrganizationList
      afterCreateOrganizationUrl="/organization/:slug"
      afterSelectPersonalUrl="/user/:id"
      afterSelectOrganizationUrl="/organization/:slug"
    />
  )
}
organizations.tsx
import { OrganizationList } from '@clerk/clerk-react'

export default function OrganizationListPage() {
  return (
    <OrganizationList
      afterCreateOrganizationUrl={(org) => `/organization/${org.slug}`}
      afterSelectPersonalUrl={(user) => `/user/${user.id}`}
      afterSelectOrganizationUrl={(org) => `/organization/${org.slug}`}
    />
  )
}
/pages/organizations.astro
---
import { OrganizationList } from '@clerk/astro/components'
---

<OrganizationList
  afterCreateOrganizationUrl="/organization/:slug"
  afterSelectPersonalUrl="/user/:id"
  afterSelectOrganizationUrl="/organization/:slug"
/>
/route/organizations.tsx
import { OrganizationList } from '@clerk/remix'

export default function OrganizationListPage() {
  return (
    <OrganizationList
      afterCreateOrganizationUrl={(org) => `/organization/${org.slug}`}
      afterSelectPersonalUrl={(user) => `/user/${user.id}`}
      afterSelectOrganizationUrl={(org) => `/organization/${org.slug}`}
    />
  )
}
app/routes/organizations.tsx
import { OrganizationList } from '@clerk/tanstack-start'
import { createFileRoute } from '@tanstack/react-router'

export const Route = createFileRoute('/organizations')({
  component: OrganizationList,
})

function OrganizationList() {
  return (
    <OrganizationList
      afterCreateOrganizationUrl={(org) => `/organization/${org.slug}`}
      afterSelectPersonalUrl={(user) => `/user/${user.id}`}
      afterSelectOrganizationUrl={(org) => `/organization/${org.slug}`}
    />
  )
}
organizations.vue
<script setup lang="ts">
import { OrganizationList } from '@clerk/vue'
</script>

<template>
  <OrganizationList
    :after-create-organization-url="(org) => `/organization/${org.slug}`"
    :after-select-personal-url="(org) => `/organization/${org.slug}`"
    :after-select-organization-url="(org) => `/organization/${org.slug}`"
  />
</template>

Usage with JavaScript

The following methods available on an instance of the Clerk class are used to render and control the <OrganizationList /> component:

The following examples assume that you have followed the quickstart in order to add Clerk to your JavaScript application.

mountOrganizationList()

Render the <OrganizationList /> component to an HTML <div> element.

function mountOrganizationList(node: HTMLDivElement, props?: OrganizationListProps): void
  • Name
    node
    Type
    HTMLDivElement
    Description

    The <div> element used to render in the <OrganizationList /> component

  • Name
    props?
    Type
    OrganizationListProps
    Description

    The properties to pass to the <OrganizationList /> component

main.js
import { Clerk } from '@clerk/clerk-js'

// Initialize Clerk with your Clerk Publishable Key
const clerkPubKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY

const clerk = new Clerk(clerkPubKey)
await clerk.load()

document.getElementById('app').innerHTML = `
  <div id="organization-list"></div>
`

const orgListDiv = document.getElementById('organization-list')

clerk.mountOrganizationList(orgListDiv)

unmountOrganizationList()

Unmount and run cleanup on an existing <OrganizationList /> component instance.

function unmountOrganizationList(node: HTMLDivElement): void
  • Name
    node
    Type
    HTMLDivElement
    Description

    The container <div> element with a rendered <OrganizationList /> component instance

main.js
import { Clerk } from '@clerk/clerk-js'

// Initialize Clerk with your Clerk Publishable Key
const clerkPubKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY

const clerk = new Clerk(clerkPubKey)
await clerk.load()

document.getElementById('app').innerHTML = `
  <div id="organization-list"></div>
`

const orgListDiv = document.getElementById('organization-list')

clerk.mountOrganizationList(orgListDiv)

// ...

clerk.unmountOrganizationList(orgListDiv)

Force organizations

If you would like to prohibit people from using their personal accounts and force them to be part of an organization, the hidePersonal property forces your user to join or create an organization in order to continue. For more information on how to hide personal accounts and force organizations, see the dedicated guide.

organization-portal.tsx
export default function OrganizationListPage() {
  return (
    <OrganizationList
      hidePersonal={true}
      // ...
    />
  )
}

Customization

To learn about how to customize Clerk components, see the customization documentation.

Feedback

What did you think of this content?

Last updated on