Skip to content

Assign sdks in frontmatter for docs that should only be visible to a subset of sdks #2086

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 43 commits into from
Jul 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
62e83d7
assign applicable sdks in frontmatter for all components
NWylynko Mar 7, 2025
c674218
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Mar 10, 2025
e9e9410
apply the sdk filtering for the clerk hooks
NWylynko Mar 10, 2025
7ad27f1
prettier
NWylynko Apr 10, 2025
d8a75f8
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 1, 2025
a21f365
fixed up sdks to match current keys
NWylynko May 1, 2025
c630563
formatting
NWylynko May 5, 2025
27e16cf
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 13, 2025
df4b992
Add new pricing table component
NWylynko May 13, 2025
67e0405
Add build step to write out a list of all the markdown files
NWylynko May 15, 2025
9589bd8
Fix up tests
NWylynko May 15, 2025
5c935d0
Merge branch 'nick/build-step-output-file-directory' into nick/sdk-fr…
NWylynko May 15, 2025
2581357
parse, validate, optimize, transform and write out the redirects
NWylynko May 15, 2025
a03b205
Merge branch 'nick/include-docs-redirects-in-dist' into nick/sdk-fron…
NWylynko May 15, 2025
c9e0ddb
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 19, 2025
aca34e5
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 20, 2025
992d63a
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 21, 2025
b895d51
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 23, 2025
b1b610d
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko May 23, 2025
38e0d22
.
NWylynko Jun 10, 2025
43f9b5f
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jun 10, 2025
dca4eac
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jun 12, 2025
75ed4a7
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jun 16, 2025
b6d83ec
formatter
NWylynko Jun 16, 2025
558c4a1
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jun 24, 2025
5f5f643
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jun 30, 2025
8b14a94
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jul 2, 2025
4c958e8
disable warning on missing title in document
NWylynko Jul 2, 2025
c204b93
update astro sdk component available
NWylynko Jul 2, 2025
af6590b
Check up on function availability
NWylynko Jul 2, 2025
e75c1f0
improve speed of build script with lots of sdk scoped pages
NWylynko Jul 9, 2025
e007dca
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jul 11, 2025
0c2e0be
make overview unscoped
NWylynko Jul 11, 2025
13bc8fa
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jul 11, 2025
e9e8de3
Add expo web support
SarahSoutoul Jul 17, 2025
a7f74d3
Remove expo web and replace with expo in tabs
SarahSoutoul Jul 17, 2025
d7357ba
Fix linting issues
SarahSoutoul Jul 17, 2025
f15e26f
Add hooks overview
SarahSoutoul Jul 17, 2025
2544130
Fix linting
SarahSoutoul Jul 17, 2025
d1c6b6a
Merge branch 'main' into nick/sdk-frontmatter-labeling
SarahSoutoul Jul 17, 2025
0b39f5e
Move callouts to code snippets
SarahSoutoul Jul 21, 2025
6af01ac
Update docs/hooks/overview.mdx
alexisintech Jul 23, 2025
5a26d02
Merge branch 'main' into nick/sdk-frontmatter-labeling
NWylynko Jul 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/_partials/expo/web-only-callout.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
> [!NOTE]
> This component can be used in Expo Web projects, but won't work in native environments (iOS or Android). For native apps, use the supported native components instead.
1 change: 1 addition & 0 deletions docs/_partials/hooks/hook-list.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
- [`useSessionList()`](/docs/hooks/use-session-list)
- [`useOrganization()`](/docs/hooks/use-organization)
- [`useOrganizationList()`](/docs/hooks/use-organization-list)
- [`useReverification()`](/docs/hooks/use-reverification)
15 changes: 14 additions & 1 deletion docs/components/authentication/google-one-tap.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<GoogleOneTap />` component'
description: Clerk's <GoogleOneTap /> component renders a UI for authenticating users with Google's One Tap API.
sdk: astro, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

> [!IMPORTANT]
Expand Down Expand Up @@ -54,7 +55,7 @@ The following example includes basic implementation of the `<GoogleOneTap />` co
> [!NOTE]
> `<GoogleOneTap>` does not render if the user is already signed into your Clerk application, so there's no need to manually check if a user is signed in yourself before rendering it.

<Tabs items={["Next.js", "React", "Astro", "Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "Remix", "Tanstack React Start", "Vue"]}>
<Tab>
```tsx {{ filename: 'app/sign-in/[[...sign-in]]/page.tsx' }}
import { GoogleOneTap } from '@clerk/nextjs'
Expand Down Expand Up @@ -85,6 +86,18 @@ The following example includes basic implementation of the `<GoogleOneTap />` co
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/sign-in-google.web.tsx' }}
import { GoogleOneTap } from '@clerk/clerk-expo/web'

export default function Page() {
return <GoogleOneTap />
}
```
</Tab>

<Tab>
```jsx {{ filename: 'app/routes/sign-in/$.tsx' }}
import { GoogleOneTap } from '@clerk/remix'
Expand Down
5 changes: 4 additions & 1 deletion docs/components/authentication/sign-in.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<SignIn />` component'
description: Clerk's <SignIn /> component renders a UI for signing in users.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<SignIn /> component renders a UI for signing in users.](/docs/images/ui-components/sign-in.png){{ style: { maxWidth: '460px' } }}
Expand Down Expand Up @@ -156,7 +157,9 @@ The following example includes basic implementation of the `<SignIn />` componen
</Tab>

<Tab>
If you would like to create a dedicated `/sign-in` page in your Expo Web application, there are a few requirements you must follow. See the [dedicated guide](/docs/references/expo/web-support/custom-sign-in-or-up-page) for more information.
<Include src="_partials/expo/web-only-callout" />

If you would like to create a dedicated `/sign-in` page in your Expo application, there are a few requirements you must follow. See the [dedicated guide](/docs/references/expo/web-support/custom-sign-in-or-up-page) for more information.

```tsx {{ filename: '/app/sign-in.web.tsx' }}
import { SignIn } from '@clerk/clerk-expo/web'
Expand Down
15 changes: 14 additions & 1 deletion docs/components/authentication/sign-up.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<SignUp />` component'
description: Clerk's <SignUp /> component renders a UI for signing up users.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<SignUp /> component renders a UI for signing up users.](/docs/images/ui-components/sign-up.png){{ style: { maxWidth: '460px' } }}
Expand Down Expand Up @@ -108,7 +109,7 @@ All props are optional.

The following example includes basic implementation of the `<SignUp />` component. You can use this as a starting point for your own implementation.

<Tabs items={["Next.js", "Astro", "React", "React Router","Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "Astro", "Expo", "React", "React Router","Remix", "Tanstack React Start", "Vue"]}>
<Tab>
The following example demonstrates how you can use the `<SignUp />` component on a public page.

Expand Down Expand Up @@ -141,6 +142,18 @@ The following example includes basic implementation of the `<SignUp />` componen
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/sign-up.web.tsx' }}
import { SignUp } from '@clerk/clerk-expo/web'

export default function SignUpPage() {
return <SignUp />
}
```
</Tab>

<Tab>
```jsx {{ filename: 'src/sign-up.tsx' }}
import { SignUp } from '@clerk/clerk-react'
Expand Down
1 change: 1 addition & 0 deletions docs/components/clerk-provider.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<ClerkProvider>`'
description: The <ClerkProvider> component provides session and user context to Clerk's hooks and components.
sdk: chrome-extension, expo, nextjs, react, react-router, remix, tanstack-react-start
---

The `<ClerkProvider>` component is required to integrate Clerk into your React application, providing session and user context to Clerk's hooks and components.
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/authenticate-with-callback.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: <code>\<AuthenticateWith<wbr />RedirectCallback /></code>
description: Clerk's `<AuthenticateWithRedirectCallback />` component is used to implement custom OAuth flows. It handles the OAuth callback and completes the authentication process.
sdk: astro, chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

The `<AuthenticateWithRedirectCallback />` component is a crucial part of implementing custom OAuth flows in your application. It serves as the callback handler for the authentication process initiated by the `authenticateWithRedirect()` method. Render it on the route specified as the `redirectUrl` in your `authenticateWithRedirect()` call.
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/clerk-loaded.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<ClerkLoaded>`'
description: The `<ClerkLoaded>` component guarantees that the Clerk object has loaded and will be available under `window.Clerk`. This allows you to wrap child components to access the Clerk object without the need to check it exists.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

The `<ClerkLoaded>` component guarantees that the Clerk object has loaded and will be available under `window.Clerk`. This allows you to wrap child components to access the `Clerk` object without the need to check it exists.
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/clerk-loading.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<ClerkLoading>`'
description: The `<ClerkLoading>` renders its children while Clerk is loading, and is helpful for showing a custom loading state.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue
---

The `<ClerkLoading>` renders its children while Clerk is loading, and is helpful for showing a custom loading state.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<RedirectToCreateOrganization />` (deprecated)'
description: The <RedirectToCreateOrganization /> component will navigate to the user profile URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
sdk: chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

> [!WARNING]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<RedirectToOrganizationProfile />` (deprecated)'
description: The <RedirectToOrganizationProfile /> component will navigate to the organization profile URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
sdk: chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

> [!WARNING]
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/redirect-to-signin.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<RedirectToSignIn />`'
description: The <RedirectToSignIn /> component will navigate to the sign in URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
sdk: chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

The `<RedirectToSignIn />` component will navigate to the sign in URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/redirect-to-signup.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<RedirectToSignUp />`'
description: The <RedirectToSignUp /> component will navigate to the sign up URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
sdk: chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

The `<RedirectToSignUp />` component will navigate to the sign up URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/redirect-to-userprofile.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<RedirectToUserProfile />` (deprecated)'
description: The <RedirectToUserProfile /> component will navigate to the user profile URL which has been configured in your application instance. The behavior will be just like a server-side (3xx) redirect, and will override the current location in the history stack.
sdk: chrome-extension, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

> [!WARNING]
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/signed-in.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<SignedIn>`'
description: Conditionally render content only when a user is signed in.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue
---

## Overview
Expand Down
1 change: 1 addition & 0 deletions docs/components/control/signed-out.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<SignedOut>`'
description: Conditionally render content only when a user is signed out.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue
---

The `<SignedOut>` component offers authentication checks as a cross-cutting concern. Any child nodes wrapped by a `<SignedOut>` component will be rendered only if there's no User signed in to your application.
Expand Down
15 changes: 14 additions & 1 deletion docs/components/organization/create-organization.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<CreateOrganization />` component'
description: Clerk's <CreateOrganization /> component is used to render an organization creation UI that allows users to create brand new organizations within your application.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<CreateOrganization /> component renders an organization creation UI that allows users to create brand new organizations within your application.](/docs/images/ui-components/create-organization.png){{ style: { maxWidth: '492px' } }}
Expand Down Expand Up @@ -64,7 +65,7 @@ All props are optional.

The following example includes a basic implementation of the `<CreateOrganization />` component. You can use this as a starting point for your own implementation.

<Tabs items={["Next.js", "React", "Astro", "Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "Remix", "Tanstack React Start", "Vue"]}>
<Tab>
```jsx {{ filename: 'app/create-organization/[[...create-organization]]/page.tsx' }}
import { CreateOrganization } from '@clerk/nextjs'
Expand Down Expand Up @@ -95,6 +96,18 @@ The following example includes a basic implementation of the `<CreateOrganizatio
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/create-organization.web.tsx' }}
import { CreateOrganization } from '@clerk/clerk-expo/web'

export default function CreateOrganizationPage() {
return <CreateOrganization />
}
```
</Tab>

<Tab>
```jsx {{ filename: '/route/create-organization/$.tsx' }}
import { CreateOrganization } from '@clerk/remix'
Expand Down
21 changes: 20 additions & 1 deletion docs/components/organization/organization-list.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<OrganizationList />` component'
description: Clerk's <OrganizationList /> component is used to display organization related memberships, invitations, and suggestions for the user.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<OrganizationList /> component displays organization-related memberships and automatic invitations and suggestions for the user.](/docs/images/ui-components/organization-list.png){{ style: { maxWidth: '460px' } }}
Expand Down Expand Up @@ -69,7 +70,7 @@ The `<OrganizationList />` component accepts the following properties, all of wh

## Usage with frameworks

<Tabs items={["Next.js", "React", "Astro", "Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "Remix", "Tanstack React Start", "Vue"]}>
<Tab>
```jsx {{ filename: 'app/organizations/page.tsx' }}
import { OrganizationList } from '@clerk/nextjs'
Expand Down Expand Up @@ -116,6 +117,24 @@ The `<OrganizationList />` component accepts the following properties, all of wh
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/organizations.web.tsx' }}
import { OrganizationList } from '@clerk/clerk-expo/web'

export default function OrganizationListPage() {
return (
<OrganizationList
afterCreateOrganizationUrl={(org) => `/organization/${org.slug}`}
afterSelectPersonalUrl={(user) => `/user/${user.id}`}
afterSelectOrganizationUrl={(org) => `/organization/${org.slug}`}
/>
)
}
```
</Tab>

<Tab>
```jsx {{ filename: '/route/organizations.tsx' }}
import { OrganizationList } from '@clerk/remix'
Expand Down
15 changes: 14 additions & 1 deletion docs/components/organization/organization-profile.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<OrganizationProfile />` component'
description: Clerk's <OrganizationProfile /> component is used to render a beautiful, full-featured organization management UI that allows users to manage their organization profile and security settings.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<OrganizationProfile /> component allows users to manage their organization membership and security settings.](/docs/images/ui-components/organization-profile.png)
Expand Down Expand Up @@ -61,7 +62,7 @@ The `<OrganizationProfile />` component accepts the following properties, all of

## Usage with frameworks

<Tabs items={["Next.js", "React", "Astro", "Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "Remix", "Tanstack React Start", "Vue"]}>
<Tab>
The `<OrganizationProfile />` component must embedded using the [Next.js optional catch-all route](https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes#optional-catch-all-routes) in order for the routing to work.

Expand Down Expand Up @@ -94,6 +95,18 @@ The `<OrganizationProfile />` component accepts the following properties, all of
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/organization-profile.web.tsx' }}
import { OrganizationProfile } from '@clerk/clerk-expo/web'

export default function OrganizationProfilePage() {
return <OrganizationProfile />
}
```
</Tab>

<Tab>
```jsx {{ filename: '/pages/organization-profile/$.tsx' }}
import { OrganizationProfile } from '@clerk/remix'
Expand Down
15 changes: 14 additions & 1 deletion docs/components/organization/organization-switcher.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<OrganizationSwitcher />` component'
description: Clerk's <OrganizationSwitcher /> component is used to enable the ability to switch between available organizations the user may be part of in your application.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

![The \<OrganizationSwitcher /> component allows a user to switch between their account types - their personal account and their joined organizations.](/docs/images/ui-components/organization-switcher.png){{ style: { maxWidth: '436px' } }}
Expand Down Expand Up @@ -106,7 +107,7 @@ The `<OrganizationSwitcher />` component accepts the following properties, all o

## Usage with frameworks

<Tabs items={["Next.js", "React", "Astro", "Remix", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "Remix", "Tanstack React Start", "Vue"]}>
<Tab>
```jsx {{ filename: 'app/organization-switcher/[[...organization-switcher]]/page.tsx' }}
import { OrganizationSwitcher } from '@clerk/nextjs'
Expand Down Expand Up @@ -137,6 +138,18 @@ The `<OrganizationSwitcher />` component accepts the following properties, all o
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/organization-switcher.web.tsx' }}
import { OrganizationSwitcher } from '@clerk/clerk-expo/web'

export default function OrganizationSwitcherPage() {
return <OrganizationSwitcher />
}
```
</Tab>

<Tab>
```jsx {{ filename: '/pages/organization-switcher/$.tsx' }}
import { OrganizationSwitcher } from '@clerk/remix'
Expand Down
15 changes: 14 additions & 1 deletion docs/components/pricing-table.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<PricingTable />`'
description: Clerk's <PricingTable /> component displays a table of Plans and Features that users can subscribe to.
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue, js-frontend
---

The `<PricingTable />` component displays a table of Plans and Features that users can subscribe to.
Expand Down Expand Up @@ -64,7 +65,7 @@ All props are optional.

The following example includes a basic implementation of the `<PricingTable />` component. You can use this as a starting point for your own implementation.

<Tabs items={["Next.js", "React", "Astro", "React Router", "Tanstack React Start", "Vue"]}>
<Tabs items={["Next.js", "React", "Astro", "Expo", "React Router", "Tanstack React Start", "Vue"]}>
<Tab>
```tsx {{ filename: 'app/pricing/page.tsx' }}
import { PricingTable } from '@clerk/nextjs'
Expand Down Expand Up @@ -95,6 +96,18 @@ The following example includes a basic implementation of the `<PricingTable />`
```
</Tab>

<Tab>
<Include src="_partials/expo/web-only-callout" />

```jsx {{ filename: '/app/pricing.web.tsx' }}
import { PricingTable } from '@clerk/clerk-expo/web'

export default function PricingPage() {
return <PricingTable />
}
```
</Tab>

<Tab>
```tsx {{ filename: 'src/routes/pricing.tsx' }}
import { PricingTable } from '@clerk/react-router'
Expand Down
1 change: 1 addition & 0 deletions docs/components/protect.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: '`<Protect>`'
description: The Protect component protects content or even entire routes based on authentication, and optionally, authorization. It only renders its children when the current user is signed-in, and if performing authorization checks, if the user has been granted a specific type of access control (role, permission, feature, or plan).
sdk: astro, chrome-extension, expo, nextjs, nuxt, react, react-router, remix, tanstack-react-start, vue
---

The [`<Protect />`](/docs/components/protect) component protects content or even entire routes based on:
Expand Down
Loading