[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-clerk-clerk-nuxt-patterns":3,"mdc--qb584k-key":37,"related-repo-clerk-clerk-nuxt-patterns":1425,"related-org-clerk-clerk-nuxt-patterns":1539},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"clerk-nuxt-patterns","implement Clerk auth in Nuxt 3 apps","Nuxt 3 auth patterns with @clerk\u002Fnuxt - middleware, composables, server API routes, SSR. Triggers on: Nuxt auth, useAuth composable, clerkMiddleware Nuxt, server API Clerk, Nuxt route protection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"clerk","Clerk","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fclerk.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Nuxt","nuxt","tag",{"name":17,"slug":18,"type":15},"Backend","backend",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Authentication","authentication",{"name":24,"slug":25,"type":15},"Frontend","frontend",59,"https:\u002F\u002Fgithub.com\u002Fclerk\u002Fskills","2026-04-07T04:46:18.337538","MIT",4,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"AI Skills to enhance working with Clerk","https:\u002F\u002Fgithub.com\u002Fclerk\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fframeworks\u002Fclerk-nuxt-patterns","---\nname: clerk-nuxt-patterns\ndescription: 'Nuxt 3 auth patterns with @clerk\u002Fnuxt - middleware, composables, server\n  API routes, SSR. Triggers on: Nuxt auth, useAuth composable, clerkMiddleware Nuxt,\n  server API Clerk, Nuxt route protection.'\nlicense: MIT\nallowed-tools: WebFetch\nmetadata:\n  author: clerk\n  version: 1.0.0\n---\n\n# Nuxt Patterns\n\n## What Do You Need?\n\n| Task | Reference |\n|------|-----------|\n| Protect routes with middleware | references\u002Fnuxt-middleware.md |\n| Auth in server API routes (Nitro) | references\u002Fserver-api-routes.md |\n| useAuth \u002F useUser in components | references\u002Fcomposables.md |\n| SSR-safe auth patterns | references\u002Fssr-auth.md |\n\n## References\n\n| Reference | Description |\n|-----------|-------------|\n| `references\u002Fnuxt-middleware.md` | Route protection, clerkMiddleware() |\n| `references\u002Fserver-api-routes.md` | Nitro server route auth |\n| `references\u002Fcomposables.md` | useAuth, useUser, useClerk |\n| `references\u002Fssr-auth.md` | SSR hydration, server vs client |\n\n## Setup\n\n```\nnpm install @clerk\u002Fnuxt\n```\n\n`.env`:\n```\nNUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...\nNUXT_CLERK_SECRET_KEY=sk_...\n```\n\n`nuxt.config.ts`:\n```typescript\nexport default defineNuxtConfig({\n  modules: ['@clerk\u002Fnuxt'],\n})\n```\n\nThis single line auto-configures middleware, plugins, and component auto-imports.\n\n## Mental Model\n\n`@clerk\u002Fnuxt` auto-imports all Clerk components and composables — no explicit imports needed in `\u003Cscript setup>`.\n\n- **Composables** (`useAuth`, `useUser`) — client-side reactive, inside `\u003Cscript setup>`\n- **Server routes** (`clerkClient`) — Nitro server routes, `event.context.auth`\n- **Middleware** (`clerkMiddleware`) — auto-registered, use `auth().protect()` to lock routes\n\n## Minimal Pattern\n\n```vue\n\u003C!-- pages\u002Fdashboard.vue -->\n\u003Cscript setup lang=\"ts\">\ndefinePageMeta({ middleware: 'auth' })\nconst { userId } = useAuth()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CShow when=\"signed-in\">\n    \u003Cp>Hello {{ userId }}\u003C\u002Fp>\n  \u003C\u002FShow>\n\u003C\u002Ftemplate>\n```\n\n> `definePageMeta({ middleware: 'auth' })` uses the built-in auth middleware from `@clerk\u002Fnuxt`.\n\n## Common Pitfalls\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| Composables return `undefined` on server | useAuth is client-only | Use `event.context.auth` in server routes |\n| Route not protected | Missing `middleware: 'auth'` meta | Add `definePageMeta({ middleware: 'auth' })` |\n| `clerkClient` not available | Wrong import path | Import from `@clerk\u002Fnuxt\u002Fserver` |\n| Hydration mismatch | Rendering auth state before mounted | Wrap in `\u003CClientOnly>` or check `isLoaded` |\n| Env vars not picked up | Wrong prefix | Nuxt requires `NUXT_PUBLIC_` for public, `NUXT_` for server |\n\n## Org-Aware Pattern\n\n```vue\n\u003Cscript setup lang=\"ts\">\nconst { orgId, orgRole } = useAuth()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"orgId\">\n    \u003Cp>Org: {{ orgId }}\u003C\u002Fp>\n    \u003Cp v-if=\"orgRole === 'org:admin'\">Admin panel\u003C\u002Fp>\n  \u003C\u002Fdiv>\n  \u003Cdiv v-else>\n    \u003COrganizationSwitcher \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n```\n\n## See Also\n\n- `clerk-setup` - Initial Clerk install\n- `clerk-custom-ui` - Custom flows & appearance\n- `clerk-orgs` - B2B organizations\n\n## Docs\n\n[Nuxt SDK](https:\u002F\u002Fclerk.com\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fquickstart)\n",{"data":38,"body":42},{"name":4,"description":6,"license":29,"allowed-tools":39,"metadata":40},"WebFetch",{"author":8,"version":41},"1.0.0",{"type":43,"children":44},"root",[45,54,61,141,147,233,239,251,263,272,282,384,389,395,413,498,504,808,829,835,1021,1027,1359,1365,1401,1407,1419],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"nuxt-patterns",[51],{"type":52,"value":53},"text","Nuxt Patterns",{"type":46,"tag":55,"props":56,"children":58},"h2",{"id":57},"what-do-you-need",[59],{"type":52,"value":60},"What Do You Need?",{"type":46,"tag":62,"props":63,"children":64},"table",{},[65,84],{"type":46,"tag":66,"props":67,"children":68},"thead",{},[69],{"type":46,"tag":70,"props":71,"children":72},"tr",{},[73,79],{"type":46,"tag":74,"props":75,"children":76},"th",{},[77],{"type":52,"value":78},"Task",{"type":46,"tag":74,"props":80,"children":81},{},[82],{"type":52,"value":83},"Reference",{"type":46,"tag":85,"props":86,"children":87},"tbody",{},[88,102,115,128],{"type":46,"tag":70,"props":89,"children":90},{},[91,97],{"type":46,"tag":92,"props":93,"children":94},"td",{},[95],{"type":52,"value":96},"Protect routes with middleware",{"type":46,"tag":92,"props":98,"children":99},{},[100],{"type":52,"value":101},"references\u002Fnuxt-middleware.md",{"type":46,"tag":70,"props":103,"children":104},{},[105,110],{"type":46,"tag":92,"props":106,"children":107},{},[108],{"type":52,"value":109},"Auth in server API routes (Nitro)",{"type":46,"tag":92,"props":111,"children":112},{},[113],{"type":52,"value":114},"references\u002Fserver-api-routes.md",{"type":46,"tag":70,"props":116,"children":117},{},[118,123],{"type":46,"tag":92,"props":119,"children":120},{},[121],{"type":52,"value":122},"useAuth \u002F useUser in components",{"type":46,"tag":92,"props":124,"children":125},{},[126],{"type":52,"value":127},"references\u002Fcomposables.md",{"type":46,"tag":70,"props":129,"children":130},{},[131,136],{"type":46,"tag":92,"props":132,"children":133},{},[134],{"type":52,"value":135},"SSR-safe auth patterns",{"type":46,"tag":92,"props":137,"children":138},{},[139],{"type":52,"value":140},"references\u002Fssr-auth.md",{"type":46,"tag":55,"props":142,"children":144},{"id":143},"references",[145],{"type":52,"value":146},"References",{"type":46,"tag":62,"props":148,"children":149},{},[150,165],{"type":46,"tag":66,"props":151,"children":152},{},[153],{"type":46,"tag":70,"props":154,"children":155},{},[156,160],{"type":46,"tag":74,"props":157,"children":158},{},[159],{"type":52,"value":83},{"type":46,"tag":74,"props":161,"children":162},{},[163],{"type":52,"value":164},"Description",{"type":46,"tag":85,"props":166,"children":167},{},[168,185,201,217],{"type":46,"tag":70,"props":169,"children":170},{},[171,180],{"type":46,"tag":92,"props":172,"children":173},{},[174],{"type":46,"tag":175,"props":176,"children":178},"code",{"className":177},[],[179],{"type":52,"value":101},{"type":46,"tag":92,"props":181,"children":182},{},[183],{"type":52,"value":184},"Route protection, clerkMiddleware()",{"type":46,"tag":70,"props":186,"children":187},{},[188,196],{"type":46,"tag":92,"props":189,"children":190},{},[191],{"type":46,"tag":175,"props":192,"children":194},{"className":193},[],[195],{"type":52,"value":114},{"type":46,"tag":92,"props":197,"children":198},{},[199],{"type":52,"value":200},"Nitro server route auth",{"type":46,"tag":70,"props":202,"children":203},{},[204,212],{"type":46,"tag":92,"props":205,"children":206},{},[207],{"type":46,"tag":175,"props":208,"children":210},{"className":209},[],[211],{"type":52,"value":127},{"type":46,"tag":92,"props":213,"children":214},{},[215],{"type":52,"value":216},"useAuth, useUser, useClerk",{"type":46,"tag":70,"props":218,"children":219},{},[220,228],{"type":46,"tag":92,"props":221,"children":222},{},[223],{"type":46,"tag":175,"props":224,"children":226},{"className":225},[],[227],{"type":52,"value":140},{"type":46,"tag":92,"props":229,"children":230},{},[231],{"type":52,"value":232},"SSR hydration, server vs client",{"type":46,"tag":55,"props":234,"children":236},{"id":235},"setup",[237],{"type":52,"value":238},"Setup",{"type":46,"tag":240,"props":241,"children":245},"pre",{"className":242,"code":244,"language":52},[243],"language-text","npm install @clerk\u002Fnuxt\n",[246],{"type":46,"tag":175,"props":247,"children":249},{"__ignoreMap":248},"",[250],{"type":52,"value":244},{"type":46,"tag":252,"props":253,"children":254},"p",{},[255,261],{"type":46,"tag":175,"props":256,"children":258},{"className":257},[],[259],{"type":52,"value":260},".env",{"type":52,"value":262},":",{"type":46,"tag":240,"props":264,"children":267},{"className":265,"code":266,"language":52},[243],"NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...\nNUXT_CLERK_SECRET_KEY=sk_...\n",[268],{"type":46,"tag":175,"props":269,"children":270},{"__ignoreMap":248},[271],{"type":52,"value":266},{"type":46,"tag":252,"props":273,"children":274},{},[275,281],{"type":46,"tag":175,"props":276,"children":278},{"className":277},[],[279],{"type":52,"value":280},"nuxt.config.ts",{"type":52,"value":262},{"type":46,"tag":240,"props":283,"children":287},{"className":284,"code":285,"language":286,"meta":248,"style":248},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@clerk\u002Fnuxt'],\n})\n","typescript",[288],{"type":46,"tag":175,"props":289,"children":290},{"__ignoreMap":248},[291,326,370],{"type":46,"tag":292,"props":293,"children":296},"span",{"class":294,"line":295},"line",1,[297,303,308,314,320],{"type":46,"tag":292,"props":298,"children":300},{"style":299},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[301],{"type":52,"value":302},"export",{"type":46,"tag":292,"props":304,"children":305},{"style":299},[306],{"type":52,"value":307}," default",{"type":46,"tag":292,"props":309,"children":311},{"style":310},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[312],{"type":52,"value":313}," defineNuxtConfig",{"type":46,"tag":292,"props":315,"children":317},{"style":316},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[318],{"type":52,"value":319},"(",{"type":46,"tag":292,"props":321,"children":323},{"style":322},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[324],{"type":52,"value":325},"{\n",{"type":46,"tag":292,"props":327,"children":329},{"class":294,"line":328},2,[330,336,340,345,350,356,360,365],{"type":46,"tag":292,"props":331,"children":333},{"style":332},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[334],{"type":52,"value":335},"  modules",{"type":46,"tag":292,"props":337,"children":338},{"style":322},[339],{"type":52,"value":262},{"type":46,"tag":292,"props":341,"children":342},{"style":316},[343],{"type":52,"value":344}," [",{"type":46,"tag":292,"props":346,"children":347},{"style":322},[348],{"type":52,"value":349},"'",{"type":46,"tag":292,"props":351,"children":353},{"style":352},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[354],{"type":52,"value":355},"@clerk\u002Fnuxt",{"type":46,"tag":292,"props":357,"children":358},{"style":322},[359],{"type":52,"value":349},{"type":46,"tag":292,"props":361,"children":362},{"style":316},[363],{"type":52,"value":364},"]",{"type":46,"tag":292,"props":366,"children":367},{"style":322},[368],{"type":52,"value":369},",\n",{"type":46,"tag":292,"props":371,"children":373},{"class":294,"line":372},3,[374,379],{"type":46,"tag":292,"props":375,"children":376},{"style":322},[377],{"type":52,"value":378},"}",{"type":46,"tag":292,"props":380,"children":381},{"style":316},[382],{"type":52,"value":383},")\n",{"type":46,"tag":252,"props":385,"children":386},{},[387],{"type":52,"value":388},"This single line auto-configures middleware, plugins, and component auto-imports.",{"type":46,"tag":55,"props":390,"children":392},{"id":391},"mental-model",[393],{"type":52,"value":394},"Mental Model",{"type":46,"tag":252,"props":396,"children":397},{},[398,403,405,411],{"type":46,"tag":175,"props":399,"children":401},{"className":400},[],[402],{"type":52,"value":355},{"type":52,"value":404}," auto-imports all Clerk components and composables — no explicit imports needed in ",{"type":46,"tag":175,"props":406,"children":408},{"className":407},[],[409],{"type":52,"value":410},"\u003Cscript setup>",{"type":52,"value":412},".",{"type":46,"tag":414,"props":415,"children":416},"ul",{},[417,450,473],{"type":46,"tag":418,"props":419,"children":420},"li",{},[421,427,429,435,437,443,445],{"type":46,"tag":422,"props":423,"children":424},"strong",{},[425],{"type":52,"value":426},"Composables",{"type":52,"value":428}," (",{"type":46,"tag":175,"props":430,"children":432},{"className":431},[],[433],{"type":52,"value":434},"useAuth",{"type":52,"value":436},", ",{"type":46,"tag":175,"props":438,"children":440},{"className":439},[],[441],{"type":52,"value":442},"useUser",{"type":52,"value":444},") — client-side reactive, inside ",{"type":46,"tag":175,"props":446,"children":448},{"className":447},[],[449],{"type":52,"value":410},{"type":46,"tag":418,"props":451,"children":452},{},[453,458,459,465,467],{"type":46,"tag":422,"props":454,"children":455},{},[456],{"type":52,"value":457},"Server routes",{"type":52,"value":428},{"type":46,"tag":175,"props":460,"children":462},{"className":461},[],[463],{"type":52,"value":464},"clerkClient",{"type":52,"value":466},") — Nitro server routes, ",{"type":46,"tag":175,"props":468,"children":470},{"className":469},[],[471],{"type":52,"value":472},"event.context.auth",{"type":46,"tag":418,"props":474,"children":475},{},[476,481,482,488,490,496],{"type":46,"tag":422,"props":477,"children":478},{},[479],{"type":52,"value":480},"Middleware",{"type":52,"value":428},{"type":46,"tag":175,"props":483,"children":485},{"className":484},[],[486],{"type":52,"value":487},"clerkMiddleware",{"type":52,"value":489},") — auto-registered, use ",{"type":46,"tag":175,"props":491,"children":493},{"className":492},[],[494],{"type":52,"value":495},"auth().protect()",{"type":52,"value":497}," to lock routes",{"type":46,"tag":55,"props":499,"children":501},{"id":500},"minimal-pattern",[502],{"type":52,"value":503},"Minimal Pattern",{"type":46,"tag":240,"props":505,"children":509},{"className":506,"code":507,"language":508,"meta":248,"style":248},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- pages\u002Fdashboard.vue -->\n\u003Cscript setup lang=\"ts\">\ndefinePageMeta({ middleware: 'auth' })\nconst { userId } = useAuth()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CShow when=\"signed-in\">\n    \u003Cp>Hello {{ userId }}\u003C\u002Fp>\n  \u003C\u002FShow>\n\u003C\u002Ftemplate>\n","vue",[510],{"type":46,"tag":175,"props":511,"children":512},{"__ignoreMap":248},[513,522,570,619,656,673,683,700,740,775,792],{"type":46,"tag":292,"props":514,"children":515},{"class":294,"line":295},[516],{"type":46,"tag":292,"props":517,"children":519},{"style":518},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[520],{"type":52,"value":521},"\u003C!-- pages\u002Fdashboard.vue -->\n",{"type":46,"tag":292,"props":523,"children":524},{"class":294,"line":328},[525,530,535,541,546,551,556,561,565],{"type":46,"tag":292,"props":526,"children":527},{"style":322},[528],{"type":52,"value":529},"\u003C",{"type":46,"tag":292,"props":531,"children":532},{"style":332},[533],{"type":52,"value":534},"script",{"type":46,"tag":292,"props":536,"children":538},{"style":537},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[539],{"type":52,"value":540}," setup",{"type":46,"tag":292,"props":542,"children":543},{"style":537},[544],{"type":52,"value":545}," lang",{"type":46,"tag":292,"props":547,"children":548},{"style":322},[549],{"type":52,"value":550},"=",{"type":46,"tag":292,"props":552,"children":553},{"style":322},[554],{"type":52,"value":555},"\"",{"type":46,"tag":292,"props":557,"children":558},{"style":352},[559],{"type":52,"value":560},"ts",{"type":46,"tag":292,"props":562,"children":563},{"style":322},[564],{"type":52,"value":555},{"type":46,"tag":292,"props":566,"children":567},{"style":322},[568],{"type":52,"value":569},">\n",{"type":46,"tag":292,"props":571,"children":572},{"class":294,"line":372},[573,578,582,587,592,596,601,606,610,615],{"type":46,"tag":292,"props":574,"children":575},{"style":310},[576],{"type":52,"value":577},"definePageMeta",{"type":46,"tag":292,"props":579,"children":580},{"style":316},[581],{"type":52,"value":319},{"type":46,"tag":292,"props":583,"children":584},{"style":322},[585],{"type":52,"value":586},"{",{"type":46,"tag":292,"props":588,"children":589},{"style":332},[590],{"type":52,"value":591}," middleware",{"type":46,"tag":292,"props":593,"children":594},{"style":322},[595],{"type":52,"value":262},{"type":46,"tag":292,"props":597,"children":598},{"style":322},[599],{"type":52,"value":600}," '",{"type":46,"tag":292,"props":602,"children":603},{"style":352},[604],{"type":52,"value":605},"auth",{"type":46,"tag":292,"props":607,"children":608},{"style":322},[609],{"type":52,"value":349},{"type":46,"tag":292,"props":611,"children":612},{"style":322},[613],{"type":52,"value":614}," }",{"type":46,"tag":292,"props":616,"children":617},{"style":316},[618],{"type":52,"value":383},{"type":46,"tag":292,"props":620,"children":621},{"class":294,"line":30},[622,627,632,637,641,646,651],{"type":46,"tag":292,"props":623,"children":624},{"style":537},[625],{"type":52,"value":626},"const",{"type":46,"tag":292,"props":628,"children":629},{"style":322},[630],{"type":52,"value":631}," {",{"type":46,"tag":292,"props":633,"children":634},{"style":316},[635],{"type":52,"value":636}," userId ",{"type":46,"tag":292,"props":638,"children":639},{"style":322},[640],{"type":52,"value":378},{"type":46,"tag":292,"props":642,"children":643},{"style":322},[644],{"type":52,"value":645}," =",{"type":46,"tag":292,"props":647,"children":648},{"style":310},[649],{"type":52,"value":650}," useAuth",{"type":46,"tag":292,"props":652,"children":653},{"style":316},[654],{"type":52,"value":655},"()\n",{"type":46,"tag":292,"props":657,"children":659},{"class":294,"line":658},5,[660,665,669],{"type":46,"tag":292,"props":661,"children":662},{"style":322},[663],{"type":52,"value":664},"\u003C\u002F",{"type":46,"tag":292,"props":666,"children":667},{"style":332},[668],{"type":52,"value":534},{"type":46,"tag":292,"props":670,"children":671},{"style":322},[672],{"type":52,"value":569},{"type":46,"tag":292,"props":674,"children":676},{"class":294,"line":675},6,[677],{"type":46,"tag":292,"props":678,"children":680},{"emptyLinePlaceholder":679},true,[681],{"type":52,"value":682},"\n",{"type":46,"tag":292,"props":684,"children":686},{"class":294,"line":685},7,[687,691,696],{"type":46,"tag":292,"props":688,"children":689},{"style":322},[690],{"type":52,"value":529},{"type":46,"tag":292,"props":692,"children":693},{"style":332},[694],{"type":52,"value":695},"template",{"type":46,"tag":292,"props":697,"children":698},{"style":322},[699],{"type":52,"value":569},{"type":46,"tag":292,"props":701,"children":703},{"class":294,"line":702},8,[704,709,714,719,723,727,732,736],{"type":46,"tag":292,"props":705,"children":706},{"style":322},[707],{"type":52,"value":708},"  \u003C",{"type":46,"tag":292,"props":710,"children":711},{"style":332},[712],{"type":52,"value":713},"Show",{"type":46,"tag":292,"props":715,"children":716},{"style":537},[717],{"type":52,"value":718}," when",{"type":46,"tag":292,"props":720,"children":721},{"style":322},[722],{"type":52,"value":550},{"type":46,"tag":292,"props":724,"children":725},{"style":322},[726],{"type":52,"value":555},{"type":46,"tag":292,"props":728,"children":729},{"style":352},[730],{"type":52,"value":731},"signed-in",{"type":46,"tag":292,"props":733,"children":734},{"style":322},[735],{"type":52,"value":555},{"type":46,"tag":292,"props":737,"children":738},{"style":322},[739],{"type":52,"value":569},{"type":46,"tag":292,"props":741,"children":743},{"class":294,"line":742},9,[744,749,753,758,763,767,771],{"type":46,"tag":292,"props":745,"children":746},{"style":322},[747],{"type":52,"value":748},"    \u003C",{"type":46,"tag":292,"props":750,"children":751},{"style":332},[752],{"type":52,"value":252},{"type":46,"tag":292,"props":754,"children":755},{"style":322},[756],{"type":52,"value":757},">",{"type":46,"tag":292,"props":759,"children":760},{"style":316},[761],{"type":52,"value":762},"Hello {{ userId }}",{"type":46,"tag":292,"props":764,"children":765},{"style":322},[766],{"type":52,"value":664},{"type":46,"tag":292,"props":768,"children":769},{"style":332},[770],{"type":52,"value":252},{"type":46,"tag":292,"props":772,"children":773},{"style":322},[774],{"type":52,"value":569},{"type":46,"tag":292,"props":776,"children":778},{"class":294,"line":777},10,[779,784,788],{"type":46,"tag":292,"props":780,"children":781},{"style":322},[782],{"type":52,"value":783},"  \u003C\u002F",{"type":46,"tag":292,"props":785,"children":786},{"style":332},[787],{"type":52,"value":713},{"type":46,"tag":292,"props":789,"children":790},{"style":322},[791],{"type":52,"value":569},{"type":46,"tag":292,"props":793,"children":795},{"class":294,"line":794},11,[796,800,804],{"type":46,"tag":292,"props":797,"children":798},{"style":322},[799],{"type":52,"value":664},{"type":46,"tag":292,"props":801,"children":802},{"style":332},[803],{"type":52,"value":695},{"type":46,"tag":292,"props":805,"children":806},{"style":322},[807],{"type":52,"value":569},{"type":46,"tag":809,"props":810,"children":811},"blockquote",{},[812],{"type":46,"tag":252,"props":813,"children":814},{},[815,821,823,828],{"type":46,"tag":175,"props":816,"children":818},{"className":817},[],[819],{"type":52,"value":820},"definePageMeta({ middleware: 'auth' })",{"type":52,"value":822}," uses the built-in auth middleware from ",{"type":46,"tag":175,"props":824,"children":826},{"className":825},[],[827],{"type":52,"value":355},{"type":52,"value":412},{"type":46,"tag":55,"props":830,"children":832},{"id":831},"common-pitfalls",[833],{"type":52,"value":834},"Common Pitfalls",{"type":46,"tag":62,"props":836,"children":837},{},[838,859],{"type":46,"tag":66,"props":839,"children":840},{},[841],{"type":46,"tag":70,"props":842,"children":843},{},[844,849,854],{"type":46,"tag":74,"props":845,"children":846},{},[847],{"type":52,"value":848},"Symptom",{"type":46,"tag":74,"props":850,"children":851},{},[852],{"type":52,"value":853},"Cause",{"type":46,"tag":74,"props":855,"children":856},{},[857],{"type":52,"value":858},"Fix",{"type":46,"tag":85,"props":860,"children":861},{},[862,895,926,955,987],{"type":46,"tag":70,"props":863,"children":864},{},[865,878,883],{"type":46,"tag":92,"props":866,"children":867},{},[868,870,876],{"type":52,"value":869},"Composables return ",{"type":46,"tag":175,"props":871,"children":873},{"className":872},[],[874],{"type":52,"value":875},"undefined",{"type":52,"value":877}," on server",{"type":46,"tag":92,"props":879,"children":880},{},[881],{"type":52,"value":882},"useAuth is client-only",{"type":46,"tag":92,"props":884,"children":885},{},[886,888,893],{"type":52,"value":887},"Use ",{"type":46,"tag":175,"props":889,"children":891},{"className":890},[],[892],{"type":52,"value":472},{"type":52,"value":894}," in server routes",{"type":46,"tag":70,"props":896,"children":897},{},[898,903,916],{"type":46,"tag":92,"props":899,"children":900},{},[901],{"type":52,"value":902},"Route not protected",{"type":46,"tag":92,"props":904,"children":905},{},[906,908,914],{"type":52,"value":907},"Missing ",{"type":46,"tag":175,"props":909,"children":911},{"className":910},[],[912],{"type":52,"value":913},"middleware: 'auth'",{"type":52,"value":915}," meta",{"type":46,"tag":92,"props":917,"children":918},{},[919,921],{"type":52,"value":920},"Add ",{"type":46,"tag":175,"props":922,"children":924},{"className":923},[],[925],{"type":52,"value":820},{"type":46,"tag":70,"props":927,"children":928},{},[929,939,944],{"type":46,"tag":92,"props":930,"children":931},{},[932,937],{"type":46,"tag":175,"props":933,"children":935},{"className":934},[],[936],{"type":52,"value":464},{"type":52,"value":938}," not available",{"type":46,"tag":92,"props":940,"children":941},{},[942],{"type":52,"value":943},"Wrong import path",{"type":46,"tag":92,"props":945,"children":946},{},[947,949],{"type":52,"value":948},"Import from ",{"type":46,"tag":175,"props":950,"children":952},{"className":951},[],[953],{"type":52,"value":954},"@clerk\u002Fnuxt\u002Fserver",{"type":46,"tag":70,"props":956,"children":957},{},[958,963,968],{"type":46,"tag":92,"props":959,"children":960},{},[961],{"type":52,"value":962},"Hydration mismatch",{"type":46,"tag":92,"props":964,"children":965},{},[966],{"type":52,"value":967},"Rendering auth state before mounted",{"type":46,"tag":92,"props":969,"children":970},{},[971,973,979,981],{"type":52,"value":972},"Wrap in ",{"type":46,"tag":175,"props":974,"children":976},{"className":975},[],[977],{"type":52,"value":978},"\u003CClientOnly>",{"type":52,"value":980}," or check ",{"type":46,"tag":175,"props":982,"children":984},{"className":983},[],[985],{"type":52,"value":986},"isLoaded",{"type":46,"tag":70,"props":988,"children":989},{},[990,995,1000],{"type":46,"tag":92,"props":991,"children":992},{},[993],{"type":52,"value":994},"Env vars not picked up",{"type":46,"tag":92,"props":996,"children":997},{},[998],{"type":52,"value":999},"Wrong prefix",{"type":46,"tag":92,"props":1001,"children":1002},{},[1003,1005,1011,1013,1019],{"type":52,"value":1004},"Nuxt requires ",{"type":46,"tag":175,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":52,"value":1010},"NUXT_PUBLIC_",{"type":52,"value":1012}," for public, ",{"type":46,"tag":175,"props":1014,"children":1016},{"className":1015},[],[1017],{"type":52,"value":1018},"NUXT_",{"type":52,"value":1020}," for server",{"type":46,"tag":55,"props":1022,"children":1024},{"id":1023},"org-aware-pattern",[1025],{"type":52,"value":1026},"Org-Aware Pattern",{"type":46,"tag":240,"props":1028,"children":1030},{"className":506,"code":1029,"language":508,"meta":248,"style":248},"\u003Cscript setup lang=\"ts\">\nconst { orgId, orgRole } = useAuth()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"orgId\">\n    \u003Cp>Org: {{ orgId }}\u003C\u002Fp>\n    \u003Cp v-if=\"orgRole === 'org:admin'\">Admin panel\u003C\u002Fp>\n  \u003C\u002Fdiv>\n  \u003Cdiv v-else>\n    \u003COrganizationSwitcher \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[1031],{"type":46,"tag":175,"props":1032,"children":1033},{"__ignoreMap":248},[1034,1073,1115,1130,1137,1152,1190,1222,1275,1290,1310,1327,1343],{"type":46,"tag":292,"props":1035,"children":1036},{"class":294,"line":295},[1037,1041,1045,1049,1053,1057,1061,1065,1069],{"type":46,"tag":292,"props":1038,"children":1039},{"style":322},[1040],{"type":52,"value":529},{"type":46,"tag":292,"props":1042,"children":1043},{"style":332},[1044],{"type":52,"value":534},{"type":46,"tag":292,"props":1046,"children":1047},{"style":537},[1048],{"type":52,"value":540},{"type":46,"tag":292,"props":1050,"children":1051},{"style":537},[1052],{"type":52,"value":545},{"type":46,"tag":292,"props":1054,"children":1055},{"style":322},[1056],{"type":52,"value":550},{"type":46,"tag":292,"props":1058,"children":1059},{"style":322},[1060],{"type":52,"value":555},{"type":46,"tag":292,"props":1062,"children":1063},{"style":352},[1064],{"type":52,"value":560},{"type":46,"tag":292,"props":1066,"children":1067},{"style":322},[1068],{"type":52,"value":555},{"type":46,"tag":292,"props":1070,"children":1071},{"style":322},[1072],{"type":52,"value":569},{"type":46,"tag":292,"props":1074,"children":1075},{"class":294,"line":328},[1076,1080,1084,1089,1094,1099,1103,1107,1111],{"type":46,"tag":292,"props":1077,"children":1078},{"style":537},[1079],{"type":52,"value":626},{"type":46,"tag":292,"props":1081,"children":1082},{"style":322},[1083],{"type":52,"value":631},{"type":46,"tag":292,"props":1085,"children":1086},{"style":316},[1087],{"type":52,"value":1088}," orgId",{"type":46,"tag":292,"props":1090,"children":1091},{"style":322},[1092],{"type":52,"value":1093},",",{"type":46,"tag":292,"props":1095,"children":1096},{"style":316},[1097],{"type":52,"value":1098}," orgRole ",{"type":46,"tag":292,"props":1100,"children":1101},{"style":322},[1102],{"type":52,"value":378},{"type":46,"tag":292,"props":1104,"children":1105},{"style":322},[1106],{"type":52,"value":645},{"type":46,"tag":292,"props":1108,"children":1109},{"style":310},[1110],{"type":52,"value":650},{"type":46,"tag":292,"props":1112,"children":1113},{"style":316},[1114],{"type":52,"value":655},{"type":46,"tag":292,"props":1116,"children":1117},{"class":294,"line":372},[1118,1122,1126],{"type":46,"tag":292,"props":1119,"children":1120},{"style":322},[1121],{"type":52,"value":664},{"type":46,"tag":292,"props":1123,"children":1124},{"style":332},[1125],{"type":52,"value":534},{"type":46,"tag":292,"props":1127,"children":1128},{"style":322},[1129],{"type":52,"value":569},{"type":46,"tag":292,"props":1131,"children":1132},{"class":294,"line":30},[1133],{"type":46,"tag":292,"props":1134,"children":1135},{"emptyLinePlaceholder":679},[1136],{"type":52,"value":682},{"type":46,"tag":292,"props":1138,"children":1139},{"class":294,"line":658},[1140,1144,1148],{"type":46,"tag":292,"props":1141,"children":1142},{"style":322},[1143],{"type":52,"value":529},{"type":46,"tag":292,"props":1145,"children":1146},{"style":332},[1147],{"type":52,"value":695},{"type":46,"tag":292,"props":1149,"children":1150},{"style":322},[1151],{"type":52,"value":569},{"type":46,"tag":292,"props":1153,"children":1154},{"class":294,"line":675},[1155,1159,1164,1169,1173,1177,1182,1186],{"type":46,"tag":292,"props":1156,"children":1157},{"style":322},[1158],{"type":52,"value":708},{"type":46,"tag":292,"props":1160,"children":1161},{"style":332},[1162],{"type":52,"value":1163},"div",{"type":46,"tag":292,"props":1165,"children":1166},{"style":537},[1167],{"type":52,"value":1168}," v-if",{"type":46,"tag":292,"props":1170,"children":1171},{"style":322},[1172],{"type":52,"value":550},{"type":46,"tag":292,"props":1174,"children":1175},{"style":322},[1176],{"type":52,"value":555},{"type":46,"tag":292,"props":1178,"children":1179},{"style":352},[1180],{"type":52,"value":1181},"orgId",{"type":46,"tag":292,"props":1183,"children":1184},{"style":322},[1185],{"type":52,"value":555},{"type":46,"tag":292,"props":1187,"children":1188},{"style":322},[1189],{"type":52,"value":569},{"type":46,"tag":292,"props":1191,"children":1192},{"class":294,"line":685},[1193,1197,1201,1205,1210,1214,1218],{"type":46,"tag":292,"props":1194,"children":1195},{"style":322},[1196],{"type":52,"value":748},{"type":46,"tag":292,"props":1198,"children":1199},{"style":332},[1200],{"type":52,"value":252},{"type":46,"tag":292,"props":1202,"children":1203},{"style":322},[1204],{"type":52,"value":757},{"type":46,"tag":292,"props":1206,"children":1207},{"style":316},[1208],{"type":52,"value":1209},"Org: {{ orgId }}",{"type":46,"tag":292,"props":1211,"children":1212},{"style":322},[1213],{"type":52,"value":664},{"type":46,"tag":292,"props":1215,"children":1216},{"style":332},[1217],{"type":52,"value":252},{"type":46,"tag":292,"props":1219,"children":1220},{"style":322},[1221],{"type":52,"value":569},{"type":46,"tag":292,"props":1223,"children":1224},{"class":294,"line":702},[1225,1229,1233,1237,1241,1245,1250,1254,1258,1263,1267,1271],{"type":46,"tag":292,"props":1226,"children":1227},{"style":322},[1228],{"type":52,"value":748},{"type":46,"tag":292,"props":1230,"children":1231},{"style":332},[1232],{"type":52,"value":252},{"type":46,"tag":292,"props":1234,"children":1235},{"style":537},[1236],{"type":52,"value":1168},{"type":46,"tag":292,"props":1238,"children":1239},{"style":322},[1240],{"type":52,"value":550},{"type":46,"tag":292,"props":1242,"children":1243},{"style":322},[1244],{"type":52,"value":555},{"type":46,"tag":292,"props":1246,"children":1247},{"style":352},[1248],{"type":52,"value":1249},"orgRole === 'org:admin'",{"type":46,"tag":292,"props":1251,"children":1252},{"style":322},[1253],{"type":52,"value":555},{"type":46,"tag":292,"props":1255,"children":1256},{"style":322},[1257],{"type":52,"value":757},{"type":46,"tag":292,"props":1259,"children":1260},{"style":316},[1261],{"type":52,"value":1262},"Admin panel",{"type":46,"tag":292,"props":1264,"children":1265},{"style":322},[1266],{"type":52,"value":664},{"type":46,"tag":292,"props":1268,"children":1269},{"style":332},[1270],{"type":52,"value":252},{"type":46,"tag":292,"props":1272,"children":1273},{"style":322},[1274],{"type":52,"value":569},{"type":46,"tag":292,"props":1276,"children":1277},{"class":294,"line":742},[1278,1282,1286],{"type":46,"tag":292,"props":1279,"children":1280},{"style":322},[1281],{"type":52,"value":783},{"type":46,"tag":292,"props":1283,"children":1284},{"style":332},[1285],{"type":52,"value":1163},{"type":46,"tag":292,"props":1287,"children":1288},{"style":322},[1289],{"type":52,"value":569},{"type":46,"tag":292,"props":1291,"children":1292},{"class":294,"line":777},[1293,1297,1301,1306],{"type":46,"tag":292,"props":1294,"children":1295},{"style":322},[1296],{"type":52,"value":708},{"type":46,"tag":292,"props":1298,"children":1299},{"style":332},[1300],{"type":52,"value":1163},{"type":46,"tag":292,"props":1302,"children":1303},{"style":537},[1304],{"type":52,"value":1305}," v-else",{"type":46,"tag":292,"props":1307,"children":1308},{"style":322},[1309],{"type":52,"value":569},{"type":46,"tag":292,"props":1311,"children":1312},{"class":294,"line":794},[1313,1317,1322],{"type":46,"tag":292,"props":1314,"children":1315},{"style":322},[1316],{"type":52,"value":748},{"type":46,"tag":292,"props":1318,"children":1319},{"style":332},[1320],{"type":52,"value":1321},"OrganizationSwitcher",{"type":46,"tag":292,"props":1323,"children":1324},{"style":322},[1325],{"type":52,"value":1326}," \u002F>\n",{"type":46,"tag":292,"props":1328,"children":1330},{"class":294,"line":1329},12,[1331,1335,1339],{"type":46,"tag":292,"props":1332,"children":1333},{"style":322},[1334],{"type":52,"value":783},{"type":46,"tag":292,"props":1336,"children":1337},{"style":332},[1338],{"type":52,"value":1163},{"type":46,"tag":292,"props":1340,"children":1341},{"style":322},[1342],{"type":52,"value":569},{"type":46,"tag":292,"props":1344,"children":1346},{"class":294,"line":1345},13,[1347,1351,1355],{"type":46,"tag":292,"props":1348,"children":1349},{"style":322},[1350],{"type":52,"value":664},{"type":46,"tag":292,"props":1352,"children":1353},{"style":332},[1354],{"type":52,"value":695},{"type":46,"tag":292,"props":1356,"children":1357},{"style":322},[1358],{"type":52,"value":569},{"type":46,"tag":55,"props":1360,"children":1362},{"id":1361},"see-also",[1363],{"type":52,"value":1364},"See Also",{"type":46,"tag":414,"props":1366,"children":1367},{},[1368,1379,1390],{"type":46,"tag":418,"props":1369,"children":1370},{},[1371,1377],{"type":46,"tag":175,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":52,"value":1376},"clerk-setup",{"type":52,"value":1378}," - Initial Clerk install",{"type":46,"tag":418,"props":1380,"children":1381},{},[1382,1388],{"type":46,"tag":175,"props":1383,"children":1385},{"className":1384},[],[1386],{"type":52,"value":1387},"clerk-custom-ui",{"type":52,"value":1389}," - Custom flows & appearance",{"type":46,"tag":418,"props":1391,"children":1392},{},[1393,1399],{"type":46,"tag":175,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":52,"value":1398},"clerk-orgs",{"type":52,"value":1400}," - B2B organizations",{"type":46,"tag":55,"props":1402,"children":1404},{"id":1403},"docs",[1405],{"type":52,"value":1406},"Docs",{"type":46,"tag":252,"props":1408,"children":1409},{},[1410],{"type":46,"tag":1411,"props":1412,"children":1416},"a",{"href":1413,"rel":1414},"https:\u002F\u002Fclerk.com\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fquickstart",[1415],"nofollow",[1417],{"type":52,"value":1418},"Nuxt SDK",{"type":46,"tag":1420,"props":1421,"children":1422},"style",{},[1423],{"type":52,"value":1424},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1426,"total":1538},[1427,1441,1456,1472,1488,1504,1521],{"slug":8,"name":8,"fn":1428,"description":1429,"org":1430,"tags":1431,"stars":26,"repoUrl":27,"updatedAt":1440},"route Clerk authentication requests","Clerk authentication router. Use when user asks about Clerk CLI operations, adding authentication, setting up Clerk, custom sign-in flows, Swift or native iOS auth, native Android auth, Next.js patterns, React patterns, Vue patterns, Nuxt patterns, Astro patterns, TanStack Start patterns, Expo patterns, React Router patterns, Chrome Extension patterns, organizations, billing, subscriptions, payments, pricing, plans, seat-based pricing, feature entitlements, syncing users, testing, impersonating a user, or testing webhooks locally. Automatically routes to the specific skill based on their task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1432,1433,1434,1437],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1435,"slug":1436,"type":15},"Mobile","mobile",{"name":1438,"slug":1439,"type":15},"Web Development","web-development","2026-07-18T05:12:23.438307",{"slug":1442,"name":1442,"fn":1443,"description":1444,"org":1445,"tags":1446,"stars":26,"repoUrl":27,"updatedAt":1455},"clerk-android","implement Clerk auth for native Android apps","Implement Clerk authentication for native Android apps using Kotlin and Jetpack Compose with clerk-android source-guided patterns. Use for prebuilt AuthView\u002FUserButton or custom API-driven auth flows. Do not use for Expo or React Native projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1447,1450,1451,1454],{"name":1448,"slug":1449,"type":15},"Android","android",{"name":9,"slug":8,"type":15},{"name":1452,"slug":1453,"type":15},"Kotlin","kotlin",{"name":1435,"slug":1436,"type":15},"2026-04-10T05:00:18.622871",{"slug":1457,"name":1457,"fn":1458,"description":1459,"org":1460,"tags":1461,"stars":26,"repoUrl":27,"updatedAt":1471},"clerk-astro-patterns","implement Clerk auth in Astro apps","Astro patterns with Clerk — middleware, SSR pages, island components, API routes, static vs SSR rendering. Triggers on: astro clerk, clerk astro middleware, astro protected page, clerk island component, astro API route auth, clerk astro SSR.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1462,1465,1466,1467,1468],{"name":1463,"slug":1464,"type":15},"Astro","astro",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1469,"slug":1470,"type":15},"Serverless","serverless","2026-04-07T04:46:14.731808",{"slug":1473,"name":1473,"fn":1474,"description":1475,"org":1476,"tags":1477,"stars":26,"repoUrl":27,"updatedAt":1487},"clerk-backend-api","execute Clerk Backend API requests","Clerk Backend REST API explorer and executor. Browse tags, inspect endpoint schemas, and execute authenticated requests. Use when listing users, managing organizations, or calling any Clerk API endpoint.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1478,1481,1482,1483,1484],{"name":1479,"slug":1480,"type":15},"API Development","api-development",{"name":21,"slug":22,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1485,"slug":1486,"type":15},"REST API","rest-api","2026-04-10T05:00:08.728072",{"slug":1489,"name":1489,"fn":1490,"description":1491,"org":1492,"tags":1493,"stars":26,"repoUrl":27,"updatedAt":1503},"clerk-billing","manage subscriptions with Clerk Billing","Clerk Billing for subscription management - render Clerk's PricingTable and in-app checkout drawer, configure subscription plans, seat-limit plans for B2B, feature entitlements with has(), and billing webhooks. Use for SaaS monetization, plan gating, checkout flows, trials, invoicing, and subscription lifecycle management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1494,1495,1496,1497,1500],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1498,"slug":1499,"type":15},"Payments","payments",{"name":1501,"slug":1502,"type":15},"SaaS","saas","2026-04-29T05:37:27.130955",{"slug":1505,"name":1505,"fn":1506,"description":1507,"org":1508,"tags":1509,"stars":26,"repoUrl":27,"updatedAt":1520},"clerk-chrome-extension-patterns","implement Clerk auth in Chrome Extensions","Chrome Extension auth with @clerk\u002Fchrome-extension -- popup\u002Fsidepanel setup, syncHost for OAuth\u002FSAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID. Triggers on: Chrome extension auth, Plasmo clerk, popup sign-in, syncHost, background service worker token, createClerkClient, headless extension.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1510,1512,1513,1514,1517],{"name":1511,"slug":605,"type":15},"Auth",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1515,"slug":1516,"type":15},"OAuth","oauth",{"name":1518,"slug":1519,"type":15},"Security","security","2026-04-07T04:46:08.489328",{"slug":1522,"name":1522,"fn":1523,"description":1524,"org":1525,"tags":1526,"stars":26,"repoUrl":27,"updatedAt":1537},"clerk-cli","manage Clerk authentication and instances via CLI","Operate the Clerk CLI (`clerk` binary) for authentication, user\u002Forg\u002Fsession management, impersonation, local webhook testing, deploy verification, instance config, env keys, feature toggles, and any Clerk Backend, Platform, or Frontend API call. Use when the user mentions Clerk management tasks, \"list clerk users\", \"impersonate a user\", \"test webhooks locally\", \"enable orgs\", \"enable billing\", \"clerk env pull\", \"clerk doctor\", \"clerk deploy\", \"clerk api\", or any ad-hoc Clerk API request. Prefer the CLI over raw HTTP: it handles auth, key resolution, app\u002Finstance targeting, and formatting automatically.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1527,1528,1529,1530,1533,1536],{"name":1479,"slug":1480,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1531,"slug":1532,"type":15},"CLI","cli",{"name":1534,"slug":1535,"type":15},"Deployment","deployment",{"name":1518,"slug":1519,"type":15},"2026-07-31T05:52:40.580813",20,{"items":1540,"total":1538},[1541,1548,1555,1563,1571,1579,1587,1596,1611,1628,1643,1651],{"slug":8,"name":8,"fn":1428,"description":1429,"org":1542,"tags":1543,"stars":26,"repoUrl":27,"updatedAt":1440},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1544,1545,1546,1547],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1435,"slug":1436,"type":15},{"name":1438,"slug":1439,"type":15},{"slug":1442,"name":1442,"fn":1443,"description":1444,"org":1549,"tags":1550,"stars":26,"repoUrl":27,"updatedAt":1455},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1551,1552,1553,1554],{"name":1448,"slug":1449,"type":15},{"name":9,"slug":8,"type":15},{"name":1452,"slug":1453,"type":15},{"name":1435,"slug":1436,"type":15},{"slug":1457,"name":1457,"fn":1458,"description":1459,"org":1556,"tags":1557,"stars":26,"repoUrl":27,"updatedAt":1471},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1558,1559,1560,1561,1562],{"name":1463,"slug":1464,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1469,"slug":1470,"type":15},{"slug":1473,"name":1473,"fn":1474,"description":1475,"org":1564,"tags":1565,"stars":26,"repoUrl":27,"updatedAt":1487},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1566,1567,1568,1569,1570],{"name":1479,"slug":1480,"type":15},{"name":21,"slug":22,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1485,"slug":1486,"type":15},{"slug":1489,"name":1489,"fn":1490,"description":1491,"org":1572,"tags":1573,"stars":26,"repoUrl":27,"updatedAt":1503},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1574,1575,1576,1577,1578],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1498,"slug":1499,"type":15},{"name":1501,"slug":1502,"type":15},{"slug":1505,"name":1505,"fn":1506,"description":1507,"org":1580,"tags":1581,"stars":26,"repoUrl":27,"updatedAt":1520},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1582,1583,1584,1585,1586],{"name":1511,"slug":605,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1515,"slug":1516,"type":15},{"name":1518,"slug":1519,"type":15},{"slug":1522,"name":1522,"fn":1523,"description":1524,"org":1588,"tags":1589,"stars":26,"repoUrl":27,"updatedAt":1537},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1590,1591,1592,1593,1594,1595],{"name":1479,"slug":1480,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1531,"slug":1532,"type":15},{"name":1534,"slug":1535,"type":15},{"name":1518,"slug":1519,"type":15},{"slug":1387,"name":1387,"fn":1597,"description":1598,"org":1599,"tags":1600,"stars":26,"repoUrl":27,"updatedAt":1610},"customize Clerk UI and auth flows","Custom authentication flows and component appearance - hooks (useSignIn, useSignUp), themes, colors, fonts, CSS. Use for custom sign-in\u002Fsign-up flows, appearance styling, visual customization, branding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1601,1602,1605,1606,1609],{"name":21,"slug":22,"type":15},{"name":1603,"slug":1604,"type":15},"Branding","branding",{"name":9,"slug":8,"type":15},{"name":1607,"slug":1608,"type":15},"Design","design",{"name":24,"slug":25,"type":15},"2026-04-10T05:00:10.109158",{"slug":1612,"name":1612,"fn":1613,"description":1614,"org":1615,"tags":1616,"stars":26,"repoUrl":27,"updatedAt":1627},"clerk-expo","implement Clerk authentication in Expo apps","Add Clerk authentication to Expo and React Native apps using @clerk\u002Fexpo. Use for Expo setup, prebuilt native components (AuthView, UserButton), custom sign-in\u002Fsign-up flows (email, password, SMS\u002Fphone OTP, MFA), OAuth\u002FSSO, native Google\u002FApple sign-in, Expo Router protected routes, biometrics, and push notifications. Do not use for native Swift\u002FiOS, native Android\u002FKotlin, or web-only framework projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1617,1618,1619,1622,1623,1624],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":1620,"slug":1621,"type":15},"Expo","expo",{"name":24,"slug":25,"type":15},{"name":1435,"slug":1436,"type":15},{"name":1625,"slug":1626,"type":15},"React Native","react-native","2026-05-19T06:48:47.074181",{"slug":1629,"name":1629,"fn":1630,"description":1631,"org":1632,"tags":1633,"stars":26,"repoUrl":27,"updatedAt":1642},"clerk-nextjs-patterns","implement advanced Next.js patterns with Clerk","Advanced Next.js patterns - middleware, Server Actions, caching with Clerk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1634,1635,1636,1639],{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":1637,"slug":1638,"type":15},"Next.js","next-js",{"name":1640,"slug":1641,"type":15},"Performance","performance","2026-04-10T05:00:15.80215",{"slug":4,"name":4,"fn":5,"description":6,"org":1644,"tags":1645,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1646,1647,1648,1649,1650],{"name":21,"slug":22,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":13,"slug":14,"type":15},{"slug":1398,"name":1398,"fn":1652,"description":1653,"org":1654,"tags":1655,"stars":26,"repoUrl":27,"updatedAt":1664},"manage Clerk Organizations for B2B SaaS","Clerk Organizations for B2B SaaS - create multi-tenant apps with org switching, role-based access, verified domains, and enterprise SSO. Use for team workspaces, RBAC, org-based routing, member management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1656,1657,1660,1663],{"name":9,"slug":8,"type":15},{"name":1658,"slug":1659,"type":15},"Multi-Tenant","multi-tenant",{"name":1661,"slug":1662,"type":15},"RBAC","rbac",{"name":1501,"slug":1502,"type":15},"2026-04-10T05:00:14.40165"]