C
clerk-tanstack-patterns
by @clerkv
4.5(120)
このスキルは、Clerk認証サービスをTanStack React Startアプリケーションに統合するためのパターンとベストプラクティスを提供します。開発者がルート保護、サーバー機能認証、ローダーへの認証コンテキストの受け渡しを容易に実装できるよう支援し、一般的な統合の落とし穴を効果的に回避し、安全で信頼性の高いWebアプリケーションの開発を加速します。
インストール方法
npx skills add https://github.com/clerk/skills --skill clerk-tanstack-patternscompare_arrows
Before / After 効果比較
1 组使用前
TanStack React Start フレームワーク内でClerk認証を手動で設定する場合、サーバー層とルーター層の動作メカニズムを深く理解する必要があり、`auth()`が空を返す、リダイレクトが失敗するなどの問題に遭遇しやすく、デバッグとトラブルシューティングに多くの時間を費やします。
使用後
Clerk TanStack Patternsが提供する標準化されたパターンとミドルウェアを使用することで、開発者は認証機能を迅速かつ正確に統合でき、設定とデバッグの時間を大幅に削減し、認証フローのスムーズさと安全性を確保します。
SKILL.md
TanStack React Start Patterns
What Do You Need?
| Task | Reference |
|---|---|
| Protect routes with beforeLoad | references/router-guards.md |
| Auth in createServerFn | references/server-functions.md |
| Pass auth to loaders | references/loaders.md |
| Configure Vinxi + clerkMiddleware | references/vinxi-server.md |
References
| Reference | Description |
|---|---|
references/router-guards.md | beforeLoad auth redirect |
references/server-functions.md | createServerFn with auth() |
references/loaders.md | Auth context in loaders |
references/vinxi-server.md | clerkMiddleware() setup |
Setup
npm install @clerk/tanstack-react-start
.env:
CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
src/start.ts (Vinxi entry):
import { clerkMiddleware } from '@clerk/tanstack-react-start/server'
import { createStart } from '@tanstack/react-start'
export const startInstance = createStart(() => {
return {
requestMiddleware: [clerkMiddleware()],
}
})
src/routes/__root.tsx — wrap with <ClerkProvider>:
import { ClerkProvider } from '@clerk/tanstack-react-start'
function RootDocument({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<ClerkProvider>
{children}
</ClerkProvider>
</body>
</html>
)
}
Mental Model
TanStack Start runs on Vinxi. Auth flows through two layers:
- Server layer —
createServerFn+auth()from@clerk/tanstack-react-start/server - Router layer —
beforeLoadon route definitions, throwsredirectfor unauthenticated
Both layers are server-executed. Client hooks (useAuth, useUser) are React hooks for the browser side.
Minimal Pattern
import { createFileRoute, redirect } from '@tanstack/react-router'
import { createServerFn } from '@tanstack/react-start'
import { auth } from '@clerk/tanstack-react-start/server'
const authStateFn = createServerFn().handler(async () => {
const { isAuthenticated, userId } = await auth()
if (!isAuthenticated) {
throw redirect({ to: '/sign-in' })
}
return { userId }
})
export const Route = createFileRoute('/dashboard')({
beforeLoad: async () => await authStateFn(),
})
Common Pitfalls
| Symptom | Cause | Fix |
|---|---|---|
auth() returns empty | Missing clerkMiddleware in start.ts | Add to requestMiddleware array |
redirect not thrown | Using return instead of throw | throw redirect(...) in TanStack |
Wrong import for auth | Mixing client/server imports | Server: @clerk/tanstack-react-start/server |
| Loader context missing userId | Not passing from beforeLoad | Return from beforeLoad, access via context |
ClerkProvider missing | Forgot root wrapping | Add to __root.tsx shell component |
See Also
clerk-setup- Initial Clerk installclerk-custom-ui- Custom flows & appearanceclerk-orgs- B2B organizations
Docs
ユーザーレビュー (0)
レビューを書く
効果
使いやすさ
ドキュメント
互換性
レビューなし
統計データ
インストール数15.4K
評価4.5 / 5.0
バージョン
更新日2026年10月22日
比較事例1 件
ユーザー評価
4.5(120)
5
37%
4
43%
3
13%
2
5%
1
2%
この Skill を評価
0.0
対応プラットフォーム
🤖claude-code
タイムライン
作成2026年5月28日
最終更新2026年10月22日