clerk-astro-patterns

bởi clerk

Các mẫu Astro với Clerk — middleware, trang SSR, thành phần island,

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

Astro Patterns

SDK: @clerk/astro v3+. Requires Astro 4.15+.

What Do You Need?

TaskReference
Configure middlewarereferences/middleware.md
Protect SSR pagesreferences/ssr-pages.md
Use Clerk in island componentsreferences/island-components.md
Auth in API routesreferences/api-routes.md
Use Clerk with React in Astroreferences/astro-react.md

Mental Model

Astro has two rendering modes per page: SSR and static prerender. Clerk works differently in each:

  • SSR pages — use Astro.locals.auth() which is populated by the middleware
  • Static pages (export const prerender = true) — Clerk middleware skips them; use client-side hooks in islands
  • Islands — React/Vue/Svelte components; use useAuth() and other hooks from @clerk/astro/react
Request → clerkMiddleware() → SSR page → Astro.locals.auth()
                                ↓
                         Island (.client) → useAuth() hook

Setup

astro.config.mjs

import { defineConfig } from 'astro/config'
import clerk from '@clerk/astro'

export default defineConfig({
  integrations: [clerk()],
  output: 'server',
})

src/middleware.ts

import { clerkMiddleware, createRouteMatcher } from '@clerk/astro/server'

const isProtectedRoute = createRouteMatcher(['/dashboard(.*)'])

export const onRequest = clerkMiddleware((auth, context, next) => {
  if (isProtectedRoute(context.request) && !auth().userId) {
    return auth().redirectToSignIn()
  }
  return next()
})

SSR Page Auth

---
const { userId, orgId } = Astro.locals.auth()
if (!userId) return Astro.redirect('/sign-in')
---

<h1>Dashboard</h1>

Common Pitfalls

SymptomCauseFix
Astro.locals.auth is undefinedMissing middlewareAdd clerkMiddleware to src/middleware.ts
Auth works in dev but not productionoutput: 'static' globallySet output: 'server' or hybrid for protected pages
Static page has no authPrerendered pages skip middlewareUse export const prerender = false or move to island
Island not reactive to sign-inMissing client:load directiveAdd client:load to the island component

Import Map

WhatImport From
clerkMiddleware, createRouteMatcher@clerk/astro/server
useAuth, useUser, UserButton@clerk/astro/react
Astro components (<SignIn>, etc.)@clerk/astro/components

Env Variables

# .env
PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...

Astro uses PUBLIC_ prefix for client-exposed variables (not NEXT_PUBLIC_).

See Also

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

Docs

Astro SDK

Thêm skills từ clerk

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
Quản lý đăng ký Clerk Billing - hiển thị PricingTable của Clerk
clerk-nextjs-patterns
clerk
Các mẫu Next.js nâng cao cho xác thực, middleware, Server Actions và bộ nhớ đệm theo phạm vi người dùng với Clerk. Phân biệt auth() phía máy chủ với hook useAuth() phía máy khách; việc trộn lẫn chúng là một lỗi phổ biến gây hỏng. Bao gồm các chiến lược middleware (ưu tiên công khai so với ưu tiên bảo vệ), bảo vệ tuyến API và mã trạng thái HTTP phù hợp (401 so với 403). Bao gồm các mẫu bộ nhớ đệm theo phạm vi người dùng với unstable_cache và bảo vệ Server Actions khỏi các thay đổi trái phép. Cung cấp khả năng tương thích Core 2...
clerk-expo-patterns
clerk
Các mẫu Expo / React Native với Clerk — Bộ nhớ đệm token 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
clerk
Tệp nhị phân clerk là một cổng đã được xác thực trước đến Backend API và Platform API của Clerk, cùng với các công cụ cấp dự án (xác thực, liên kết, kéo biến môi trường, cấu hình phiên bản). Khi người dùng hỏi bất cứ điều gì liên quan đến tài nguyên Clerk, hãy sử dụng clerk trước thay vì tự viết lệnh curl.
clerk-cli
clerk
Tệp nhị phân clerk là một cổng đã được xác thực trước đến Backend API và Platform API của Clerk, cùng với các công cụ cấp dự án (xác thực, liên kết, kéo môi trường, cấu hình phiên bản). Khi người dùng hỏi bất cứ điều gì liên quan đến tài nguyên Clerk, hãy sử dụng clerk trước thay vì tự viết lệnh curl.
audit-expo-skill
clerk
Audits the bundled `clerk-expo` skill against the @clerk/expo SDK source and clerk-docs, then proposes or applies updates. Use when the user says "audit the…