首页/AI 应用构建与集成/clerk-tanstack-patterns
C

clerk-tanstack-patterns

by @clerkv
4.5(120)

此 Skill 提供了将 Clerk 认证服务集成到 TanStack React Start 应用的模式和最佳实践。它帮助开发者轻松实现路由保护、服务器函数认证以及加载器中的认证上下文传递,有效避免了常见的集成陷阱,加速了安全可靠的 Web 应用开发。

clerktanstack-react-startauthenticationweb-developmentfrontendGitHub
安装方式
npx skills add https://github.com/clerk/skills --skill clerk-tanstack-patterns
compare_arrows

Before / After 效果对比

1 组
使用前

在 TanStack React Start 框架中手动配置 Clerk 认证,需要深入理解其服务器和路由层的工作机制,容易遇到 `auth()` 返回空、重定向失败等问题,耗费大量时间进行调试和排查。

使用后

通过 Clerk TanStack Patterns 提供的标准化模式和中间件,开发者可以快速、准确地集成认证功能,显著减少了配置和调试时间,确保认证流程的顺畅和安全。

SKILL.md

TanStack React Start Patterns

What Do You Need?

TaskReference
Protect routes with beforeLoadreferences/router-guards.md
Auth in createServerFnreferences/server-functions.md
Pass auth to loadersreferences/loaders.md
Configure Vinxi + clerkMiddlewarereferences/vinxi-server.md

References

ReferenceDescription
references/router-guards.mdbeforeLoad auth redirect
references/server-functions.mdcreateServerFn with auth()
references/loaders.mdAuth context in loaders
references/vinxi-server.mdclerkMiddleware() 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:

  1. Server layer — createServerFn + auth() from @clerk/tanstack-react-start/server
  2. Router layer — beforeLoad on route definitions, throws redirect for 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

SymptomCauseFix
auth() returns emptyMissing clerkMiddleware in start.tsAdd to requestMiddleware array
redirect not thrownUsing return instead of throwthrow redirect(...) in TanStack
Wrong import for authMixing client/server importsServer: @clerk/tanstack-react-start/server
Loader context missing userIdNot passing from beforeLoadReturn from beforeLoad, access via context
ClerkProvider missingForgot root wrappingAdd to __root.tsx shell component

See Also

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

Docs

TanStack React Start SDK

用户评价 (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日
🎁 Agent 知识卡片
调研问卷