clerk-vue-patterns

作成者: clerk

Vue 3パターンとClerk — コンポーザブル(useAuth、useUser、

npx skills add https://github.com/clerk/skills --skill clerk-vue-patterns

Vue Patterns

SDK: @clerk/vue v2+ (Vue 3). For Nuxt, use clerk-nuxt-patterns.

What Do You Need?

TaskReference
Composables: useAuth, useUser, useOrganizationreferences/composables.md
Vue Router navigation guardsreferences/vue-router-guards.md
Pinia store with auth statereferences/pinia-integration.md

Mental Model

Vue uses composables from @clerk/vue:

  • useAuth() — reactive isSignedIn, userId, signOut
  • useUser() — reactive user object
  • useClerk() — full Clerk instance for advanced operations
  • useOrganization() — reactive organization, membership

Setup

Vue (Plain)

// main.ts
import { clerkPlugin } from '@clerk/vue'
import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)
app.use(clerkPlugin, {
  publishableKey: import.meta.env.VITE_CLERK_PUBLISHABLE_KEY,
})
app.mount('#app')

Composables Usage

<script setup lang="ts">
import { useAuth, useUser } from '@clerk/vue'

const { isSignedIn, userId, signOut } = useAuth()
const { user } = useUser()
</script>

<template>
  <div v-if="isSignedIn">
    <p>Hello {{ user?.firstName }}</p>
    <button @click="signOut()">Sign Out</button>
  </div>
  <SignInButton v-else />
</template>

Org Switching

<script setup lang="ts">
import { useOrganizationList } from '@clerk/vue'

const { userMemberships, setActive } = useOrganizationList()
</script>

<template>
  <button
    v-for="mem in userMemberships.data ?? []"
    :key="mem.organization.id"
    @click="setActive({ organization: mem.organization.id })"
  >
    {{ mem.organization.name }}
  </button>
</template>

Common Pitfalls

SymptomCauseFix
Composables return undefinedNot inside ClerkProvider treeEnsure app.use(clerkPlugin, { publishableKey }) is called
userId reactive but not updatingDestructuring loses reactivityUse const { userId } = useAuth() (toRefs-style composable, reactive)

Import Map

WhatImport
Composables@clerk/vue
Plugin setup@clerk/vue
Components@clerk/vue

See Also

  • clerk-setup - Initial Clerk install
  • clerk-custom-ui - Custom flows & appearance
  • clerk-orgs - B2B organizations

Docs

clerkのその他のスキル

clerk-testing
clerk
Clerk認証フローのE2Eテストユーティリティ(PlaywrightおよびCypress対応)。PlaywrightとCypressの両フレームワークをサポートし、フレームワーク固有のセットアップパターン(PlaywrightではglobalSetup、Cypressではカスタムコマンド)を提供。clerkSetup()とsetupClerkTestingToken()ユーティリティを使用してテスト環境を初期化し、ボット検出をバイパス。認証済みセッションをテスト間で再利用するstorageState永続化機能を含み、テスト実行時間を短縮。テスト用APIキー(pk_test_*、...)が必要。
clerk-swift
clerk
ClerkKitを使用したネイティブSwift/iOS認証で、事前構築済みまたはカスタム認証フローに対応。プロジェクト要件に基づいて、事前構築済みのAuthViewコンポーネントまたは完全カスタムのネイティブフローの2つの実装モードをサポート。アプリ設定で有効なClerk公開鍵を直接配線する必要があり、デフォルトではplistや環境ファイルによる間接指定は使用しない。パッケージインストール後、機能の利用可能性(例:Apple Sign Inサポート)を判断するために、/v1/environment呼び出しが必須。
mosaic
clerk
Work on Mosaic UI: styling a component with slot recipes (`defineSlotRecipe` / `useRecipe` / slots / variants), or building a flow — authoring a state machine…
clerk-billing
clerk
サブスクリプション管理のためのClerk Billing - ClerkのPricingTableをレンダリング
clerk-nextjs-patterns
clerk
Clerkを使用した認証、ミドルウェア、Server Actions、ユーザースコープキャッシングのための高度なNext.jsパターン。サーバーサイドのawait auth()とクライアントサイドのuseAuth()フックを区別します。これらを混在させることはよくある破壊的なミスです。ミドルウェア戦略(public-first vs protected-first)、APIルート保護、適切なHTTPステータスコード(401 vs 403)をカバーします。unstable_cacheを使用したユーザースコープキャッシングパターンと、Server Actionsを不正な変更から保護する方法を含みます。Core 2互換性を提供します...
clerk-expo-patterns
clerk
Expo / React NativeパターンとClerk — SecureStoreトークンキャッシュ、OAuth
changesets
clerk
Create or refresh a `.changeset/<slug>.md` for the current branch, or report that none is required. Triggers on "/changesets create", "add a changeset",…
clerk-astro-patterns
clerk
Clerkを使ったAstroパターン — ミドルウェア、SSRページ、アイランドコンポーネント