[{"data":1,"prerenderedAt":1901},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:Kr45-LC22PIAmoAz0OoVCH85QL4VtLMxhxDzbSEtB4U":651,"content-page-surround:docs:Kr45-LC22PIAmoAz0OoVCH85QL4VtLMxhxDzbSEtB4U":1889,"i-logos:typescript-icon":1894,"i-lucide:clipboard":1898},[4,41,110,418,485,550,601,646],{"title":5,"page":6,"canonicalKey":7,"locale":8,"id":9,"draft":6,"icon":10,"sidebar":11,"children":12},"Learn",false,"1","en","content:docs:1.overview:.navigation.yml","i-lucide-book-open","section",[13,20,27,34],{"title":14,"id":15,"canonicalKey":16,"locale":8,"draft":6,"navigation":17,"icon":18,"path":19},"Better Convex Nuxt","content:docs:1.overview:1.introduction.md","1\u002F1",{"icon":18},"i-lucide-orbit","\u002Fdocs\u002Foverview\u002Fintroduction",{"title":21,"id":22,"canonicalKey":23,"locale":8,"draft":6,"navigation":24,"icon":25,"path":26},"Who it is for","content:docs:1.overview:2.who-it-is-for.md","1\u002F2",{"icon":25},"i-lucide-users","\u002Fdocs\u002Foverview\u002Fwho-it-is-for",{"title":28,"id":29,"canonicalKey":30,"locale":8,"draft":6,"navigation":31,"icon":32,"path":33},"Limitations and trade-offs","content:docs:1.overview:3.limitations.md","1\u002F3",{"icon":32},"i-lucide-triangle-alert","\u002Fdocs\u002Foverview\u002Flimitations",{"title":35,"id":36,"canonicalKey":37,"locale":8,"draft":6,"navigation":38,"icon":39,"path":40},"Compare Nuxt integrations","content:docs:1.overview:4.comparison.md","1\u002F4",{"icon":39},"i-lucide-scale","\u002Fdocs\u002Foverview\u002Fcomparison",{"title":42,"page":6,"canonicalKey":43,"locale":8,"id":44,"draft":6,"icon":45,"children":46},"Get started","2","content:docs:2.get-started:.navigation.yml","i-lucide-rocket",[47,54,61,68,75,82,89,96,103],{"title":48,"id":49,"canonicalKey":50,"locale":8,"draft":6,"navigation":51,"icon":52,"path":53},"Choose your path","content:docs:2.get-started:1.choose-your-path.md","2\u002F1",{"icon":52},"i-lucide-signpost","\u002Fdocs\u002Fget-started\u002Fchoose-your-path",{"title":55,"id":56,"canonicalKey":57,"locale":8,"draft":6,"navigation":58,"icon":59,"path":60},"Installation","content:docs:2.get-started:2.installation.md","2\u002F2",{"icon":59},"i-lucide-download","\u002Fdocs\u002Fget-started\u002Finstallation",{"title":62,"id":63,"canonicalKey":64,"locale":8,"draft":6,"navigation":65,"icon":66,"path":67},"First real-time page","content:docs:2.get-started:3.first-realtime-page.md","2\u002F3",{"icon":66},"i-lucide-radio","\u002Fdocs\u002Fget-started\u002Ffirst-realtime-page",{"title":69,"id":70,"canonicalKey":71,"locale":8,"draft":6,"navigation":72,"icon":73,"path":74},"Add a mutation","content:docs:2.get-started:4.add-a-mutation.md","2\u002F4",{"icon":73},"i-lucide-square-pen","\u002Fdocs\u002Fget-started\u002Fadd-a-mutation",{"title":76,"id":77,"canonicalKey":78,"locale":8,"draft":6,"navigation":79,"icon":80,"path":81},"Add authentication","content:docs:2.get-started:5.add-authentication.md","2\u002F5",{"icon":80},"i-lucide-log-in","\u002Fdocs\u002Fget-started\u002Fadd-authentication",{"title":83,"id":84,"canonicalKey":85,"locale":8,"draft":6,"navigation":86,"icon":87,"path":88},"Protect data","content:docs:2.get-started:6.protect-data.md","2\u002F6",{"icon":87},"i-lucide-shield-check","\u002Fdocs\u002Fget-started\u002Fprotect-data",{"title":90,"id":91,"canonicalKey":92,"locale":8,"draft":6,"navigation":93,"icon":94,"path":95},"Project structure","content:docs:2.get-started:7.project-structure.md","2\u002F7",{"icon":94},"i-lucide-folder-tree","\u002Fdocs\u002Fget-started\u002Fproject-structure",{"title":97,"id":98,"canonicalKey":99,"locale":8,"draft":6,"navigation":100,"icon":101,"path":102},"Next steps","content:docs:2.get-started:8.next-steps.md","2\u002F8",{"icon":101},"i-lucide-arrow-right","\u002Fdocs\u002Fget-started\u002Fnext-steps",{"title":104,"id":105,"canonicalKey":106,"locale":8,"draft":6,"navigation":107,"icon":108,"path":109},"Plain Vue and Vite","content:docs:2.get-started:9.plain-vue.md","2\u002F9",{"icon":108},"i-lucide-panels-top-left","\u002Fdocs\u002Fget-started\u002Fplain-vue",{"title":111,"page":6,"canonicalKey":112,"locale":8,"id":113,"draft":6,"icon":114,"sidebar":11,"children":115},"Build","3","content:docs:3.build:.navigation.yml","i-lucide-blocks",[116,154,199,292,324,349,388],{"title":117,"page":6,"canonicalKey":118,"locale":8,"children":119},"Queries","3\u002F1",[120,126,133,140,147],{"title":117,"id":121,"canonicalKey":122,"locale":8,"draft":6,"navigation":123,"icon":124,"path":125},"content:docs:3.build:1.queries:1.queries.md","3\u002F1\u002F1",{"icon":124},"i-lucide-database","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fqueries",{"title":127,"id":128,"canonicalKey":129,"locale":8,"draft":6,"navigation":130,"icon":131,"path":132},"Reactive arguments","content:docs:3.build:1.queries:2.reactive-arguments.md","3\u002F1\u002F2",{"icon":131},"i-lucide-sliders-horizontal","\u002Fdocs\u002Fbuild\u002Fqueries\u002Freactive-arguments",{"title":134,"id":135,"canonicalKey":136,"locale":8,"draft":6,"navigation":137,"icon":138,"path":139},"Loading and stale data","content:docs:3.build:1.queries:3.loading-and-stale-data.md","3\u002F1\u002F3",{"icon":138},"i-lucide-loader-circle","\u002Fdocs\u002Fbuild\u002Fqueries\u002Floading-and-stale-data",{"title":141,"id":142,"canonicalKey":143,"locale":8,"draft":6,"navigation":144,"icon":145,"path":146},"Query execution options","content:docs:3.build:1.queries:4.ssr-options.md","3\u002F1\u002F4",{"icon":145},"i-lucide-server-cog","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fssr-options",{"title":148,"id":149,"canonicalKey":150,"locale":8,"draft":6,"navigation":151,"icon":152,"path":153},"Pagination","content:docs:3.build:1.queries:6.pagination.md","3\u002F1\u002F6",{"icon":152},"i-lucide-list-plus","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fpagination",{"title":155,"page":6,"canonicalKey":156,"locale":8,"children":157},"Write Data","3\u002F2",[158,164,171,178,185,192],{"title":159,"id":160,"canonicalKey":161,"locale":8,"draft":6,"navigation":162,"icon":73,"path":163},"Mutations","content:docs:3.build:2.write-data:1.mutations.md","3\u002F2\u002F1",{"icon":73},"\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fmutations",{"title":165,"id":166,"canonicalKey":167,"locale":8,"draft":6,"navigation":168,"icon":169,"path":170},"Actions","content:docs:3.build:2.write-data:2.actions.md","3\u002F2\u002F2",{"icon":169},"i-lucide-zap","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Factions",{"title":172,"id":173,"canonicalKey":174,"locale":8,"draft":6,"navigation":175,"icon":176,"path":177},"Optimistic updates","content:docs:3.build:2.write-data:3.optimistic-updates.md","3\u002F2\u002F3",{"icon":176},"i-lucide-gauge","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Foptimistic-updates",{"title":179,"id":180,"canonicalKey":181,"locale":8,"draft":6,"navigation":182,"icon":183,"path":184},"Concurrent operations","content:docs:3.build:2.write-data:4.concurrent-operations.md","3\u002F2\u002F4",{"icon":183},"i-lucide-git-fork","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fconcurrent-operations",{"title":186,"id":187,"canonicalKey":188,"locale":8,"draft":6,"navigation":189,"icon":190,"path":191},"Form submissions","content:docs:3.build:2.write-data:5.forms.md","3\u002F2\u002F5",{"icon":190},"i-lucide-list-checks","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fforms",{"title":193,"id":194,"canonicalKey":195,"locale":8,"draft":6,"navigation":196,"icon":197,"path":198},"Multi-step operations","content:docs:3.build:2.write-data:6.multi-step-operations.md","3\u002F2\u002F6",{"icon":197},"i-lucide-list-ordered","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fmulti-step-operations",{"title":200,"page":6,"canonicalKey":201,"locale":8,"children":202},"Authentication","3\u002F3",[203,209,216,223,229,236,243,250,257,264,271,278,285],{"title":200,"id":204,"canonicalKey":205,"locale":8,"draft":6,"navigation":206,"icon":207,"path":208},"content:docs:3.build:3.authentication:1.overview.md","3\u002F3\u002F1",{"icon":207},"i-lucide-shield","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Foverview",{"title":210,"id":211,"canonicalKey":212,"locale":8,"draft":6,"navigation":213,"icon":214,"path":215},"Better Auth setup","content:docs:3.build:3.authentication:2.better-auth-setup.md","3\u002F3\u002F2",{"icon":214},"i-lucide-settings-2","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-setup",{"title":217,"id":218,"canonicalKey":219,"locale":8,"draft":6,"navigation":220,"icon":221,"path":222},"Auth state and user data","content:docs:3.build:3.authentication:3.auth-state-and-user.md","3\u002F3\u002F3",{"icon":221},"i-lucide-user-round","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fauth-state-and-user",{"title":224,"id":225,"canonicalKey":226,"locale":8,"draft":6,"navigation":227,"icon":80,"path":228},"Sign in and sign out","content:docs:3.build:3.authentication:4.sign-in-and-sign-out.md","3\u002F3\u002F4",{"icon":80},"\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fsign-in-and-sign-out",{"title":230,"id":231,"canonicalKey":232,"locale":8,"draft":6,"navigation":233,"icon":234,"path":235},"Route protection","content:docs:3.build:3.authentication:5.route-protection.md","3\u002F3\u002F5",{"icon":234},"i-lucide-route","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Froute-protection",{"title":237,"id":238,"canonicalKey":239,"locale":8,"draft":6,"navigation":240,"icon":241,"path":242},"Backend authorization","content:docs:3.build:3.authentication:6.backend-authorization.md","3\u002F3\u002F6",{"icon":241},"i-lucide-lock-keyhole","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbackend-authorization",{"title":244,"id":245,"canonicalKey":246,"locale":8,"draft":6,"navigation":247,"icon":248,"path":249},"Better Auth plugins","content:docs:3.build:3.authentication:7.better-auth-plugins.md","3\u002F3\u002F7",{"icon":248},"i-lucide-plug","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-plugins",{"title":251,"id":252,"canonicalKey":253,"locale":8,"draft":6,"navigation":254,"icon":255,"path":256},"Custom user fields","content:docs:3.build:3.authentication:8.custom-user-fields.md","3\u002F3\u002F8",{"icon":255},"i-lucide-user-cog","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fcustom-user-fields",{"title":258,"id":259,"canonicalKey":260,"locale":8,"draft":6,"navigation":261,"icon":262,"path":263},"User synchronization","content:docs:3.build:3.authentication:9.user-synchronization.md","3\u002F3\u002F9",{"icon":262},"i-lucide-refresh-ccw","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fuser-synchronization",{"title":265,"id":266,"canonicalKey":267,"locale":8,"draft":6,"navigation":268,"icon":269,"path":270},"Delegated OAuth and MCP","content:docs:3.build:3.authentication:10.delegated-oauth-and-mcp.md","3\u002F3\u002F10",{"icon":269},"i-lucide-bot","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fdelegated-oauth-and-mcp",{"title":272,"id":273,"canonicalKey":274,"locale":8,"draft":6,"navigation":275,"icon":276,"path":277},"Transactional auth email","content:docs:3.build:3.authentication:11.transactional-email.md","3\u002F3\u002F11",{"icon":276},"i-lucide-mail","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Ftransactional-email",{"title":279,"id":280,"canonicalKey":281,"locale":8,"draft":6,"navigation":282,"icon":283,"path":284},"Social sign-in","content:docs:3.build:3.authentication:12.social-sign-in.md","3\u002F3\u002F12",{"icon":283},"i-lucide-github","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fsocial-sign-in",{"title":286,"id":287,"canonicalKey":288,"locale":8,"draft":6,"navigation":289,"icon":290,"path":291},"Better Auth plugin support","content:docs:3.build:3.authentication:13.better-auth-plugin-support.md","3\u002F3\u002F13",{"icon":290},"i-lucide-puzzle","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-plugin-support",{"title":293,"page":6,"canonicalKey":294,"locale":8,"children":295},"Server","3\u002F4",[296,303,310,317],{"title":297,"id":298,"canonicalKey":299,"locale":8,"draft":6,"navigation":300,"icon":301,"path":302},"serverConvex","content:docs:3.build:4.server:1.server-convex.md","3\u002F4\u002F1",{"icon":301},"i-lucide-server","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-convex",{"title":304,"id":305,"canonicalKey":306,"locale":8,"draft":6,"navigation":307,"icon":308,"path":309},"Server routes","content:docs:3.build:4.server:2.server-routes.md","3\u002F4\u002F2",{"icon":308},"i-lucide-waypoints","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-routes",{"title":311,"id":312,"canonicalKey":313,"locale":8,"draft":6,"navigation":314,"icon":315,"path":316},"Webhooks and jobs","content:docs:3.build:4.server:3.webhooks-and-jobs.md","3\u002F4\u002F3",{"icon":315},"i-lucide-webhook","\u002Fdocs\u002Fbuild\u002Fserver\u002Fwebhooks-and-jobs",{"title":318,"id":319,"canonicalKey":320,"locale":8,"draft":6,"navigation":321,"icon":322,"path":323},"Credentials and server security","content:docs:3.build:4.server:4.credentials-and-security.md","3\u002F4\u002F4",{"icon":322},"i-lucide-key-round","\u002Fdocs\u002Fbuild\u002Fserver\u002Fcredentials-and-security",{"title":325,"page":6,"canonicalKey":326,"locale":8,"children":327},"Files","3\u002F5",[328,335,342],{"title":329,"id":330,"canonicalKey":331,"locale":8,"draft":6,"navigation":332,"icon":333,"path":334},"Upload files","content:docs:3.build:5.files:1.upload-files.md","3\u002F5\u002F1",{"icon":333},"i-lucide-upload","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fupload-files",{"title":336,"id":337,"canonicalKey":338,"locale":8,"draft":6,"navigation":339,"icon":340,"path":341},"Storage URLs","content:docs:3.build:5.files:3.storage-urls.md","3\u002F5\u002F3",{"icon":340},"i-lucide-link","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fstorage-urls",{"title":343,"id":344,"canonicalKey":345,"locale":8,"draft":6,"navigation":346,"icon":347,"path":348},"File validation and deletion","content:docs:3.build:5.files:4.validation-and-deletion.md","3\u002F5\u002F4",{"icon":347},"i-lucide-file-x","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fvalidation-and-deletion",{"title":350,"page":6,"canonicalKey":351,"locale":8,"children":352},"Application Behavior","3\u002F6",[353,360,367,374,381],{"title":354,"id":355,"canonicalKey":356,"locale":8,"draft":6,"navigation":357,"icon":358,"path":359},"Connection state","content:docs:3.build:6.application-behavior:1.connection-state.md","3\u002F6\u002F1",{"icon":358},"i-lucide-wifi","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fconnection-state",{"title":361,"id":362,"canonicalKey":363,"locale":8,"draft":6,"navigation":364,"icon":365,"path":366},"Error handling","content:docs:3.build:6.application-behavior:2.error-handling.md","3\u002F6\u002F2",{"icon":365},"i-lucide-circle-alert","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Ferror-handling",{"title":368,"id":369,"canonicalKey":370,"locale":8,"draft":6,"navigation":371,"icon":372,"path":373},"Logging","content:docs:3.build:6.application-behavior:3.logging.md","3\u002F6\u002F3",{"icon":372},"i-lucide-scroll-text","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Flogging",{"title":375,"id":376,"canonicalKey":377,"locale":8,"draft":6,"navigation":378,"icon":379,"path":380},"DevTools","content:docs:3.build:6.application-behavior:4.devtools.md","3\u002F6\u002F4",{"icon":379},"i-lucide-wrench","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fdevtools",{"title":382,"id":383,"canonicalKey":384,"locale":8,"draft":6,"navigation":385,"icon":386,"path":387},"Performance","content:docs:3.build:6.application-behavior:5.performance.md","3\u002F6\u002F5",{"icon":386},"i-lucide-chart-no-axes-combined","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fperformance",{"title":389,"page":6,"canonicalKey":390,"locale":8,"id":391,"draft":6,"icon":269,"children":392},"Agents and MCP","3\u002F7","content:docs:3.build:7.agents:.navigation.yml",[393,400,406,412],{"title":394,"id":395,"canonicalKey":396,"locale":8,"draft":6,"navigation":397,"icon":398,"path":399},"MCP on Convex","content:docs:3.build:7.agents:1.mcp.md","3\u002F7\u002F1",{"icon":398},"i-lucide-plug-zap","\u002Fdocs\u002Fbuild\u002Fagents\u002Fmcp",{"title":401,"id":402,"canonicalKey":403,"locale":8,"draft":6,"navigation":404,"icon":248,"path":405},"Add MCP to your application","content:docs:3.build:7.agents:2.mcp-application.md","3\u002F7\u002F2",{"icon":248},"\u002Fdocs\u002Fbuild\u002Fagents\u002Fmcp-application",{"title":407,"id":408,"canonicalKey":409,"locale":8,"draft":6,"navigation":410,"icon":340,"path":411},"Connect ChatGPT and Claude","content:docs:3.build:7.agents:3.connect-chatgpt-and-claude.md","3\u002F7\u002F3",{"icon":340},"\u002Fdocs\u002Fbuild\u002Fagents\u002Fconnect-chatgpt-and-claude",{"title":413,"id":414,"canonicalKey":415,"locale":8,"draft":6,"navigation":416,"icon":108,"path":417},"MCP Apps","content:docs:3.build:7.agents:4.mcp-apps.md","3\u002F7\u002F4",{"icon":108},"\u002Fdocs\u002Fbuild\u002Fagents\u002Fmcp-apps",{"title":419,"page":6,"canonicalKey":420,"locale":8,"id":421,"draft":6,"icon":422,"children":423},"Recipes","4","content:docs:4.recipes:.navigation.yml","i-lucide-cooking-pot",[424,431,438,445,452,459,466,472,478],{"title":425,"id":426,"canonicalKey":427,"locale":8,"draft":6,"navigation":428,"icon":429,"path":430},"Protected dashboard","content:docs:4.recipes:1.protected-dashboard.md","4\u002F1",{"icon":429},"i-lucide-layout-dashboard","\u002Fdocs\u002Frecipes\u002Fprotected-dashboard",{"title":432,"id":433,"canonicalKey":434,"locale":8,"draft":6,"navigation":435,"icon":436,"path":437},"Real-time feed","content:docs:4.recipes:2.realtime-feed.md","4\u002F2",{"icon":436},"i-lucide-messages-square","\u002Fdocs\u002Frecipes\u002Frealtime-feed",{"title":439,"id":440,"canonicalKey":441,"locale":8,"draft":6,"navigation":442,"icon":443,"path":444},"Optimistic todo list","content:docs:4.recipes:3.optimistic-todo-list.md","4\u002F3",{"icon":443},"i-lucide-list-todo","\u002Fdocs\u002Frecipes\u002Foptimistic-todo-list",{"title":446,"id":447,"canonicalKey":448,"locale":8,"draft":6,"navigation":449,"icon":450,"path":451},"Infinite scroll","content:docs:4.recipes:4.infinite-scroll.md","4\u002F4",{"icon":450},"i-lucide-mouse","\u002Fdocs\u002Frecipes\u002Finfinite-scroll",{"title":453,"id":454,"canonicalKey":455,"locale":8,"draft":6,"navigation":456,"icon":457,"path":458},"File upload form","content:docs:4.recipes:5.file-upload-form.md","4\u002F5",{"icon":457},"i-lucide-file-up","\u002Fdocs\u002Frecipes\u002Ffile-upload-form",{"title":460,"id":461,"canonicalKey":462,"locale":8,"draft":6,"navigation":463,"icon":464,"path":465},"Organization permissions","content:docs:4.recipes:6.organization-permissions.md","4\u002F6",{"icon":464},"i-lucide-building-2","\u002Fdocs\u002Frecipes\u002Forganization-permissions",{"title":467,"id":468,"canonicalKey":469,"locale":8,"draft":6,"navigation":470,"icon":301,"path":471},"Authenticated server route","content:docs:4.recipes:7.authenticated-server-route.md","4\u002F7",{"icon":301},"\u002Fdocs\u002Frecipes\u002Fauthenticated-server-route",{"title":473,"id":474,"canonicalKey":475,"locale":8,"draft":6,"navigation":476,"icon":108,"path":477},"Public and private data","content:docs:4.recipes:8.public-and-private-data.md","4\u002F8",{"icon":108},"\u002Fdocs\u002Frecipes\u002Fpublic-and-private-data",{"title":479,"id":480,"canonicalKey":481,"locale":8,"draft":6,"navigation":482,"icon":483,"path":484},"Test signed-in screens","content:docs:4.recipes:9.component-testing.md","4\u002F9",{"icon":483},"i-lucide-flask-conical","\u002Fdocs\u002Frecipes\u002Fcomponent-testing",{"title":486,"page":6,"canonicalKey":487,"locale":8,"id":488,"draft":6,"icon":489,"children":490},"Concepts","5","content:docs:5.concepts:.navigation.yml","i-lucide-brain",[491,497,503,510,516,523,529,536,543],{"title":492,"id":493,"canonicalKey":494,"locale":8,"draft":6,"navigation":495,"icon":489,"path":496},"Mental model","content:docs:5.concepts:1.mental-model.md","5\u002F1",{"icon":489},"\u002Fdocs\u002Fconcepts\u002Fmental-model",{"title":498,"id":499,"canonicalKey":500,"locale":8,"draft":6,"navigation":501,"icon":234,"path":502},"Request lifecycle","content:docs:5.concepts:2.request-lifecycle.md","5\u002F2",{"icon":234},"\u002Fdocs\u002Fconcepts\u002Frequest-lifecycle",{"title":504,"id":505,"canonicalKey":506,"locale":8,"draft":6,"navigation":507,"icon":508,"path":509},"SSR, hydration, and real-time","content:docs:5.concepts:3.ssr-hydration-realtime.md","5\u002F3",{"icon":508},"i-lucide-refresh-cw","\u002Fdocs\u002Fconcepts\u002Fssr-hydration-realtime",{"title":511,"id":512,"canonicalKey":513,"locale":8,"draft":6,"navigation":514,"icon":124,"path":515},"Query ownership and caching","content:docs:5.concepts:4.query-ownership-and-caching.md","5\u002F4",{"icon":124},"\u002Fdocs\u002Fconcepts\u002Fquery-ownership-and-caching",{"title":517,"id":518,"canonicalKey":519,"locale":8,"draft":6,"navigation":520,"icon":521,"path":522},"Authentication and identity","content:docs:5.concepts:5.authentication-and-identity.md","5\u002F5",{"icon":521},"i-lucide-fingerprint","\u002Fdocs\u002Fconcepts\u002Fauthentication-and-identity",{"title":524,"id":525,"canonicalKey":526,"locale":8,"draft":6,"navigation":527,"icon":108,"path":528},"Server and client boundaries","content:docs:5.concepts:6.server-and-client-boundaries.md","5\u002F6",{"icon":108},"\u002Fdocs\u002Fconcepts\u002Fserver-and-client-boundaries",{"title":530,"id":531,"canonicalKey":532,"locale":8,"draft":6,"navigation":533,"icon":534,"path":535},"Errors and failures","content:docs:5.concepts:7.errors-and-failures.md","5\u002F7",{"icon":534},"i-lucide-circle-x","\u002Fdocs\u002Fconcepts\u002Ferrors-and-failures",{"title":537,"id":538,"canonicalKey":539,"locale":8,"draft":6,"navigation":540,"icon":541,"path":542},"Design decisions","content:docs:5.concepts:8.design-decisions.md","5\u002F8",{"icon":541},"i-lucide-git-branch","\u002Fdocs\u002Fconcepts\u002Fdesign-decisions",{"title":544,"id":545,"canonicalKey":546,"locale":8,"draft":6,"navigation":547,"icon":548,"path":549},"Glossary","content:docs:5.concepts:9.glossary.md","5\u002F9",{"icon":548},"i-lucide-book-a","\u002Fdocs\u002Fconcepts\u002Fglossary",{"title":551,"page":6,"canonicalKey":552,"locale":8,"id":553,"draft":6,"icon":214,"children":554},"Operations","6","content:docs:6.operations:.navigation.yml",[555,561,568,575,581,588,594],{"title":556,"id":557,"canonicalKey":558,"locale":8,"draft":6,"navigation":559,"icon":45,"path":560},"Deployment","content:docs:6.operations:1.deployment.md","6\u002F1",{"icon":45},"\u002Fdocs\u002Foperations\u002Fdeployment",{"title":562,"id":563,"canonicalKey":564,"locale":8,"draft":6,"navigation":565,"icon":566,"path":567},"Environment variables","content:docs:6.operations:2.environment-variables.md","6\u002F2",{"icon":566},"i-lucide-variable","\u002Fdocs\u002Foperations\u002Fenvironment-variables",{"title":569,"id":570,"canonicalKey":571,"locale":8,"draft":6,"navigation":572,"icon":573,"path":574},"Deploy to Vercel","content:docs:6.operations:3.deploy-to-vercel.md","6\u002F3",{"icon":573},"i-lucide-triangle","\u002Fdocs\u002Foperations\u002Fdeploy-to-vercel",{"title":576,"id":577,"canonicalKey":578,"locale":8,"draft":6,"navigation":579,"icon":379,"path":580},"Troubleshooting","content:docs:6.operations:4.troubleshooting.md","6\u002F4",{"icon":379},"\u002Fdocs\u002Foperations\u002Ftroubleshooting",{"title":582,"id":583,"canonicalKey":584,"locale":8,"draft":6,"navigation":585,"icon":586,"path":587},"Release compatibility","content:docs:6.operations:5.release-compatibility.md","6\u002F5",{"icon":586},"i-lucide-badge-check","\u002Fdocs\u002Foperations\u002Frelease-compatibility",{"title":589,"id":590,"canonicalKey":591,"locale":8,"draft":6,"navigation":592,"icon":87,"path":593},"Security model","content:docs:6.operations:6.security-model.md","6\u002F6",{"icon":87},"\u002Fdocs\u002Foperations\u002Fsecurity-model",{"title":595,"id":596,"canonicalKey":597,"locale":8,"draft":6,"navigation":598,"icon":599,"path":600},"Upgrade to 1.0","content:docs:6.operations:7.upgrade-to-1-0.md","6\u002F7",{"icon":599},"i-lucide-arrow-up-circle","\u002Fdocs\u002Foperations\u002Fupgrade-to-1-0",{"title":602,"page":6,"canonicalKey":603,"locale":8,"id":604,"draft":6,"icon":605,"children":606},"Reference","7","content:docs:7.reference:.navigation.yml","i-lucide-braces",[607,613,619,625,632,639],{"title":608,"id":609,"canonicalKey":610,"locale":8,"draft":6,"navigation":611,"icon":605,"path":612},"Composables","content:docs:7.reference:1.composables.md","7\u002F1",{"icon":605},"\u002Fdocs\u002Freference\u002Fcomposables",{"title":614,"id":615,"canonicalKey":616,"locale":8,"draft":6,"navigation":617,"icon":301,"path":618},"Server API","content:docs:7.reference:3.server-api.md","7\u002F3",{"icon":301},"\u002Fdocs\u002Freference\u002Fserver-api",{"title":620,"id":621,"canonicalKey":622,"locale":8,"draft":6,"navigation":623,"icon":534,"path":624},"Error types","content:docs:7.reference:4.error-types.md","7\u002F4",{"icon":534},"\u002Fdocs\u002Freference\u002Ferror-types",{"title":626,"id":627,"canonicalKey":628,"locale":8,"draft":6,"navigation":629,"icon":630,"path":631},"Module configuration","content:docs:7.reference:5.module-configuration.md","7\u002F5",{"icon":630},"i-lucide-settings","\u002Fdocs\u002Freference\u002Fmodule-configuration",{"title":633,"id":634,"canonicalKey":635,"locale":8,"draft":6,"navigation":636,"icon":637,"path":638},"Package exports","content:docs:7.reference:6.package-exports.md","7\u002F6",{"icon":637},"i-lucide-package-open","\u002Fdocs\u002Freference\u002Fpackage-exports",{"title":640,"id":641,"canonicalKey":642,"locale":8,"draft":6,"navigation":643,"icon":644,"path":645},"API surface","content:docs:7.reference:7.api-surface.md","7\u002F7",{"icon":644},"i-lucide-list","\u002Fdocs\u002Freference\u002Fapi-surface",{"title":647,"id":648,"canonicalKey":649,"locale":8,"draft":6,"path":650},"Better Convex documentation","content:docs:index.md","\u002F","\u002Fdocs",{"title":272,"description":652,"navigation":653,"body":654,"type":1876,"id":273,"canonicalKey":274,"draft":6,"partial":6,"locale":8,"collection":1877,"navigationFile":6,"file":1878,"route":1884,"resolution":1886},"Deliver reset, verification, one-time code, and invitation email through one typed hook.",{"icon":276},{"type":655,"children":656,"toc":1867},"root",[657,680,687,1357,1367,1373,1389,1610,1688,1732,1738,1757,1770,1782,1788,1837,1857,1862],{"type":658,"tag":659,"props":660,"children":661},"element","p",{},[662,665,671,673,678],{"type":663,"value":664},"text","Pass one ",{"type":658,"tag":666,"props":667,"children":668},"code",{},[669],{"type":663,"value":670},"email",{"type":663,"value":672}," hook to ",{"type":658,"tag":666,"props":674,"children":675},{},[676],{"type":663,"value":677},"createBetterConvexAuth",{"type":663,"value":679},". The library calls it for\nevery auth email that an enabled capability sends. The application is\nresponsible for recipients, templates, delivery, and retries. Better Convex does not install a\nsending provider or render email.",{"type":658,"tag":681,"props":682,"children":684},"h2",{"id":683},"add-the-email-hook",[685],{"type":663,"value":686},"Add the email hook",{"type":658,"tag":688,"props":689,"children":693},"pre",{"language":690,"filename":691,"class":692},"ts","convex\u002Fauth.ts","shiki shiki-themes light-plus dark-plus dark:dark-plus",[694],{"type":658,"tag":666,"props":695,"children":697},{"class":696},"language-ts",[698,737,739,742,743,782,783,817,818,821,822,886,887,900,901,919,920,936,937,953,954,962,963,989,990,1041,1042,1072,1073,1090,1091,1107,1108,1161,1162,1187,1188,1213,1214,1239,1240,1248,1249,1257,1258,1270,1271,1331,1332,1340,1341,1348,1349],{"type":658,"tag":699,"props":700,"children":703},"span",{"class":701,"style":702},"line","display: inline",[704,710,716,721,726,731],{"type":658,"tag":699,"props":705,"children":707},{"style":706},"color:#AF00DB;--shiki-dark:#C586C0",[708],{"type":663,"value":709},"import",{"type":658,"tag":699,"props":711,"children":713},{"style":712},"color:#000000;--shiki-dark:#D4D4D4",[714],{"type":663,"value":715}," { ",{"type":658,"tag":699,"props":717,"children":719},{"style":718},"color:#001080;--shiki-dark:#9CDCFE",[720],{"type":663,"value":677},{"type":658,"tag":699,"props":722,"children":723},{"style":712},[724],{"type":663,"value":725}," } ",{"type":658,"tag":699,"props":727,"children":728},{"style":706},[729],{"type":663,"value":730},"from",{"type":658,"tag":699,"props":732,"children":734},{"style":733},"color:#A31515;--shiki-dark:#CE9178",[735],{"type":663,"value":736}," '@lupinum\u002Fbetter-convex-nuxt\u002Fbetter-auth\u002Fserver'",{"type":663,"value":738},"\n",{"type":658,"tag":699,"props":740,"children":741},{"class":701,"style":702},[],{"type":663,"value":738},{"type":658,"tag":699,"props":744,"children":745},{"class":701,"style":702},[746,750,754,759,764,769,773,777],{"type":658,"tag":699,"props":747,"children":748},{"style":706},[749],{"type":663,"value":709},{"type":658,"tag":699,"props":751,"children":752},{"style":712},[753],{"type":663,"value":715},{"type":658,"tag":699,"props":755,"children":756},{"style":718},[757],{"type":663,"value":758},"components",{"type":658,"tag":699,"props":760,"children":761},{"style":712},[762],{"type":663,"value":763},", ",{"type":658,"tag":699,"props":765,"children":766},{"style":718},[767],{"type":663,"value":768},"internal",{"type":658,"tag":699,"props":770,"children":771},{"style":712},[772],{"type":663,"value":725},{"type":658,"tag":699,"props":774,"children":775},{"style":706},[776],{"type":663,"value":730},{"type":658,"tag":699,"props":778,"children":779},{"style":733},[780],{"type":663,"value":781}," '.\u002F_generated\u002Fapi'",{"type":663,"value":738},{"type":658,"tag":699,"props":784,"children":785},{"class":701,"style":702},[786,790,795,799,804,808,812],{"type":658,"tag":699,"props":787,"children":788},{"style":706},[789],{"type":663,"value":709},{"type":658,"tag":699,"props":791,"children":792},{"style":706},[793],{"type":663,"value":794}," type",{"type":658,"tag":699,"props":796,"children":797},{"style":712},[798],{"type":663,"value":715},{"type":658,"tag":699,"props":800,"children":801},{"style":718},[802],{"type":663,"value":803},"DataModel",{"type":658,"tag":699,"props":805,"children":806},{"style":712},[807],{"type":663,"value":725},{"type":658,"tag":699,"props":809,"children":810},{"style":706},[811],{"type":663,"value":730},{"type":658,"tag":699,"props":813,"children":814},{"style":733},[815],{"type":663,"value":816}," '.\u002F_generated\u002FdataModel'",{"type":663,"value":738},{"type":658,"tag":699,"props":819,"children":820},{"class":701,"style":702},[],{"type":663,"value":738},{"type":658,"tag":699,"props":823,"children":824},{"class":701,"style":702},[825,830,836,842,847,852,857,862,867,871,876,881],{"type":658,"tag":699,"props":826,"children":827},{"style":706},[828],{"type":663,"value":829},"export",{"type":658,"tag":699,"props":831,"children":833},{"style":832},"color:#0000FF;--shiki-dark:#569CD6",[834],{"type":663,"value":835}," const",{"type":658,"tag":699,"props":837,"children":839},{"style":838},"color:#0070C1;--shiki-dark:#4FC1FF",[840],{"type":663,"value":841}," auth",{"type":658,"tag":699,"props":843,"children":844},{"style":712},[845],{"type":663,"value":846}," = ",{"type":658,"tag":699,"props":848,"children":850},{"style":849},"color:#795E26;--shiki-dark:#DCDCAA",[851],{"type":663,"value":677},{"type":658,"tag":699,"props":853,"children":854},{"style":712},[855],{"type":663,"value":856},"\u003C",{"type":658,"tag":699,"props":858,"children":860},{"style":859},"color:#267F99;--shiki-dark:#4EC9B0",[861],{"type":663,"value":803},{"type":658,"tag":699,"props":863,"children":864},{"style":712},[865],{"type":663,"value":866},">(",{"type":658,"tag":699,"props":868,"children":869},{"style":718},[870],{"type":663,"value":758},{"type":658,"tag":699,"props":872,"children":873},{"style":712},[874],{"type":663,"value":875},".",{"type":658,"tag":699,"props":877,"children":878},{"style":718},[879],{"type":663,"value":880},"betterAuth",{"type":658,"tag":699,"props":882,"children":883},{"style":712},[884],{"type":663,"value":885},", {",{"type":663,"value":738},{"type":658,"tag":699,"props":888,"children":889},{"class":701,"style":702},[890,895],{"type":658,"tag":699,"props":891,"children":892},{"style":718},[893],{"type":663,"value":894},"  emailAndPassword:",{"type":658,"tag":699,"props":896,"children":897},{"style":712},[898],{"type":663,"value":899}," {",{"type":663,"value":738},{"type":658,"tag":699,"props":902,"children":903},{"class":701,"style":702},[904,909,914],{"type":658,"tag":699,"props":905,"children":906},{"style":718},[907],{"type":663,"value":908},"    requireEmailVerification:",{"type":658,"tag":699,"props":910,"children":911},{"style":832},[912],{"type":663,"value":913}," true",{"type":658,"tag":699,"props":915,"children":916},{"style":712},[917],{"type":663,"value":918},",",{"type":663,"value":738},{"type":658,"tag":699,"props":921,"children":922},{"class":701,"style":702},[923,928,932],{"type":658,"tag":699,"props":924,"children":925},{"style":718},[926],{"type":663,"value":927},"    passwordReset:",{"type":658,"tag":699,"props":929,"children":930},{"style":832},[931],{"type":663,"value":913},{"type":658,"tag":699,"props":933,"children":934},{"style":712},[935],{"type":663,"value":918},{"type":663,"value":738},{"type":658,"tag":699,"props":938,"children":939},{"class":701,"style":702},[940,945,949],{"type":658,"tag":699,"props":941,"children":942},{"style":718},[943],{"type":663,"value":944},"    revokeSessionsOnPasswordReset:",{"type":658,"tag":699,"props":946,"children":947},{"style":832},[948],{"type":663,"value":913},{"type":658,"tag":699,"props":950,"children":951},{"style":712},[952],{"type":663,"value":918},{"type":663,"value":738},{"type":658,"tag":699,"props":955,"children":956},{"class":701,"style":702},[957],{"type":658,"tag":699,"props":958,"children":959},{"style":712},[960],{"type":663,"value":961},"  },",{"type":663,"value":738},{"type":658,"tag":699,"props":964,"children":965},{"class":701,"style":702},[966,971,975,980,984],{"type":658,"tag":699,"props":967,"children":968},{"style":718},[969],{"type":663,"value":970},"  emailVerification:",{"type":658,"tag":699,"props":972,"children":973},{"style":712},[974],{"type":663,"value":715},{"type":658,"tag":699,"props":976,"children":977},{"style":718},[978],{"type":663,"value":979},"sendOnSignUp:",{"type":658,"tag":699,"props":981,"children":982},{"style":832},[983],{"type":663,"value":913},{"type":658,"tag":699,"props":985,"children":986},{"style":712},[987],{"type":663,"value":988}," },",{"type":663,"value":738},{"type":658,"tag":699,"props":991,"children":992},{"class":701,"style":702},[993,998,1003,1008,1013,1018,1022,1027,1032,1037],{"type":658,"tag":699,"props":994,"children":995},{"style":849},[996],{"type":663,"value":997},"  email",{"type":658,"tag":699,"props":999,"children":1000},{"style":718},[1001],{"type":663,"value":1002},":",{"type":658,"tag":699,"props":1004,"children":1005},{"style":832},[1006],{"type":663,"value":1007}," async",{"type":658,"tag":699,"props":1009,"children":1010},{"style":712},[1011],{"type":663,"value":1012}," (",{"type":658,"tag":699,"props":1014,"children":1015},{"style":718},[1016],{"type":663,"value":1017},"ctx",{"type":658,"tag":699,"props":1019,"children":1020},{"style":712},[1021],{"type":663,"value":763},{"type":658,"tag":699,"props":1023,"children":1024},{"style":718},[1025],{"type":663,"value":1026},"message",{"type":658,"tag":699,"props":1028,"children":1029},{"style":712},[1030],{"type":663,"value":1031},") ",{"type":658,"tag":699,"props":1033,"children":1034},{"style":832},[1035],{"type":663,"value":1036},"=>",{"type":658,"tag":699,"props":1038,"children":1039},{"style":712},[1040],{"type":663,"value":899},{"type":663,"value":738},{"type":658,"tag":699,"props":1043,"children":1044},{"class":701,"style":702},[1045,1050,1054,1058,1062,1067],{"type":658,"tag":699,"props":1046,"children":1047},{"style":706},[1048],{"type":663,"value":1049},"    switch",{"type":658,"tag":699,"props":1051,"children":1052},{"style":712},[1053],{"type":663,"value":1012},{"type":658,"tag":699,"props":1055,"children":1056},{"style":718},[1057],{"type":663,"value":1026},{"type":658,"tag":699,"props":1059,"children":1060},{"style":712},[1061],{"type":663,"value":875},{"type":658,"tag":699,"props":1063,"children":1064},{"style":718},[1065],{"type":663,"value":1066},"type",{"type":658,"tag":699,"props":1068,"children":1069},{"style":712},[1070],{"type":663,"value":1071},") {",{"type":663,"value":738},{"type":658,"tag":699,"props":1074,"children":1075},{"class":701,"style":702},[1076,1081,1086],{"type":658,"tag":699,"props":1077,"children":1078},{"style":706},[1079],{"type":663,"value":1080},"      case",{"type":658,"tag":699,"props":1082,"children":1083},{"style":733},[1084],{"type":663,"value":1085}," 'verify-email'",{"type":658,"tag":699,"props":1087,"children":1088},{"style":712},[1089],{"type":663,"value":1002},{"type":663,"value":738},{"type":658,"tag":699,"props":1092,"children":1093},{"class":701,"style":702},[1094,1098,1103],{"type":658,"tag":699,"props":1095,"children":1096},{"style":706},[1097],{"type":663,"value":1080},{"type":658,"tag":699,"props":1099,"children":1100},{"style":733},[1101],{"type":663,"value":1102}," 'reset-password'",{"type":658,"tag":699,"props":1104,"children":1105},{"style":712},[1106],{"type":663,"value":1002},{"type":663,"value":738},{"type":658,"tag":699,"props":1109,"children":1110},{"class":701,"style":702},[1111,1116,1121,1125,1130,1135,1139,1143,1148,1152,1157],{"type":658,"tag":699,"props":1112,"children":1113},{"style":706},[1114],{"type":663,"value":1115},"        await",{"type":658,"tag":699,"props":1117,"children":1118},{"style":718},[1119],{"type":663,"value":1120}," ctx",{"type":658,"tag":699,"props":1122,"children":1123},{"style":712},[1124],{"type":663,"value":875},{"type":658,"tag":699,"props":1126,"children":1127},{"style":849},[1128],{"type":663,"value":1129},"runMutation",{"type":658,"tag":699,"props":1131,"children":1132},{"style":712},[1133],{"type":663,"value":1134},"(",{"type":658,"tag":699,"props":1136,"children":1137},{"style":718},[1138],{"type":663,"value":768},{"type":658,"tag":699,"props":1140,"children":1141},{"style":712},[1142],{"type":663,"value":875},{"type":658,"tag":699,"props":1144,"children":1145},{"style":718},[1146],{"type":663,"value":1147},"authMail",{"type":658,"tag":699,"props":1149,"children":1150},{"style":712},[1151],{"type":663,"value":875},{"type":658,"tag":699,"props":1153,"children":1154},{"style":718},[1155],{"type":663,"value":1156},"submitLink",{"type":658,"tag":699,"props":1158,"children":1159},{"style":712},[1160],{"type":663,"value":885},{"type":663,"value":738},{"type":658,"tag":699,"props":1163,"children":1164},{"class":701,"style":702},[1165,1170,1175,1179,1183],{"type":658,"tag":699,"props":1166,"children":1167},{"style":718},[1168],{"type":663,"value":1169},"          kind:",{"type":658,"tag":699,"props":1171,"children":1172},{"style":718},[1173],{"type":663,"value":1174}," message",{"type":658,"tag":699,"props":1176,"children":1177},{"style":712},[1178],{"type":663,"value":875},{"type":658,"tag":699,"props":1180,"children":1181},{"style":718},[1182],{"type":663,"value":1066},{"type":658,"tag":699,"props":1184,"children":1185},{"style":712},[1186],{"type":663,"value":918},{"type":663,"value":738},{"type":658,"tag":699,"props":1189,"children":1190},{"class":701,"style":702},[1191,1196,1200,1204,1209],{"type":658,"tag":699,"props":1192,"children":1193},{"style":718},[1194],{"type":663,"value":1195},"          recipient:",{"type":658,"tag":699,"props":1197,"children":1198},{"style":718},[1199],{"type":663,"value":1174},{"type":658,"tag":699,"props":1201,"children":1202},{"style":712},[1203],{"type":663,"value":875},{"type":658,"tag":699,"props":1205,"children":1206},{"style":718},[1207],{"type":663,"value":1208},"to",{"type":658,"tag":699,"props":1210,"children":1211},{"style":712},[1212],{"type":663,"value":918},{"type":663,"value":738},{"type":658,"tag":699,"props":1215,"children":1216},{"class":701,"style":702},[1217,1222,1226,1230,1235],{"type":658,"tag":699,"props":1218,"children":1219},{"style":718},[1220],{"type":663,"value":1221},"          url:",{"type":658,"tag":699,"props":1223,"children":1224},{"style":718},[1225],{"type":663,"value":1174},{"type":658,"tag":699,"props":1227,"children":1228},{"style":712},[1229],{"type":663,"value":875},{"type":658,"tag":699,"props":1231,"children":1232},{"style":718},[1233],{"type":663,"value":1234},"url",{"type":658,"tag":699,"props":1236,"children":1237},{"style":712},[1238],{"type":663,"value":918},{"type":663,"value":738},{"type":658,"tag":699,"props":1241,"children":1242},{"class":701,"style":702},[1243],{"type":658,"tag":699,"props":1244,"children":1245},{"style":712},[1246],{"type":663,"value":1247},"        })",{"type":663,"value":738},{"type":658,"tag":699,"props":1250,"children":1251},{"class":701,"style":702},[1252],{"type":658,"tag":699,"props":1253,"children":1254},{"style":706},[1255],{"type":663,"value":1256},"        return",{"type":663,"value":738},{"type":658,"tag":699,"props":1259,"children":1260},{"class":701,"style":702},[1261,1266],{"type":658,"tag":699,"props":1262,"children":1263},{"style":706},[1264],{"type":663,"value":1265},"      default",{"type":658,"tag":699,"props":1267,"children":1268},{"style":712},[1269],{"type":663,"value":1002},{"type":663,"value":738},{"type":658,"tag":699,"props":1272,"children":1273},{"class":701,"style":702},[1274,1279,1284,1289,1293,1298,1303,1307,1312,1316,1321,1326],{"type":658,"tag":699,"props":1275,"children":1276},{"style":706},[1277],{"type":663,"value":1278},"        throw",{"type":658,"tag":699,"props":1280,"children":1281},{"style":832},[1282],{"type":663,"value":1283}," new",{"type":658,"tag":699,"props":1285,"children":1286},{"style":849},[1287],{"type":663,"value":1288}," Error",{"type":658,"tag":699,"props":1290,"children":1291},{"style":712},[1292],{"type":663,"value":1134},{"type":658,"tag":699,"props":1294,"children":1295},{"style":733},[1296],{"type":663,"value":1297},"`Unsupported auth email: ",{"type":658,"tag":699,"props":1299,"children":1300},{"style":832},[1301],{"type":663,"value":1302},"${",{"type":658,"tag":699,"props":1304,"children":1305},{"style":718},[1306],{"type":663,"value":1026},{"type":658,"tag":699,"props":1308,"children":1310},{"style":1309},"color:#000000FF;--shiki-dark:#D4D4D4",[1311],{"type":663,"value":875},{"type":658,"tag":699,"props":1313,"children":1314},{"style":718},[1315],{"type":663,"value":1066},{"type":658,"tag":699,"props":1317,"children":1318},{"style":832},[1319],{"type":663,"value":1320},"}",{"type":658,"tag":699,"props":1322,"children":1323},{"style":733},[1324],{"type":663,"value":1325},"`",{"type":658,"tag":699,"props":1327,"children":1328},{"style":712},[1329],{"type":663,"value":1330},")",{"type":663,"value":738},{"type":658,"tag":699,"props":1333,"children":1334},{"class":701,"style":702},[1335],{"type":658,"tag":699,"props":1336,"children":1337},{"style":712},[1338],{"type":663,"value":1339},"    }",{"type":663,"value":738},{"type":658,"tag":699,"props":1342,"children":1343},{"class":701,"style":702},[1344],{"type":658,"tag":699,"props":1345,"children":1346},{"style":712},[1347],{"type":663,"value":961},{"type":663,"value":738},{"type":658,"tag":699,"props":1350,"children":1351},{"class":701,"style":702},[1352],{"type":658,"tag":699,"props":1353,"children":1354},{"style":712},[1355],{"type":663,"value":1356},"})",{"type":658,"tag":659,"props":1358,"children":1359},{},[1360,1365],{"type":658,"tag":666,"props":1361,"children":1362},{},[1363],{"type":663,"value":1364},"internal.authMail.submitLink",{"type":663,"value":1366}," is an application-owned internal mutation in\nthis example, not a library export. It must durably enqueue or schedule the\napproved message, with bounded retry and secret-retention rules. Do not expose\na public endpoint that accepts arbitrary recipients or links.",{"type":658,"tag":681,"props":1368,"children":1370},{"id":1369},"message-types",[1371],{"type":663,"value":1372},"Message types",{"type":658,"tag":659,"props":1374,"children":1375},{},[1376,1381,1383,1388],{"type":658,"tag":666,"props":1377,"children":1378},{},[1379],{"type":663,"value":1380},"message.to",{"type":663,"value":1382}," is always the recipient address. The other fields depend on\n",{"type":658,"tag":666,"props":1384,"children":1385},{},[1386],{"type":663,"value":1387},"message.type",{"type":663,"value":1002},{"type":658,"tag":1390,"props":1391,"children":1392},"table",{},[1393,1419],{"type":658,"tag":1394,"props":1395,"children":1396},"thead",{},[1397],{"type":658,"tag":1398,"props":1399,"children":1400},"tr",{},[1401,1409,1414],{"type":658,"tag":1402,"props":1403,"children":1404},"th",{},[1405],{"type":658,"tag":666,"props":1406,"children":1407},{},[1408],{"type":663,"value":1066},{"type":658,"tag":1402,"props":1410,"children":1411},{},[1412],{"type":663,"value":1413},"Sent when",{"type":658,"tag":1402,"props":1415,"children":1416},{},[1417],{"type":663,"value":1418},"Fields",{"type":658,"tag":1420,"props":1421,"children":1422},"tbody",{},[1423,1459,1492,1529,1563],{"type":658,"tag":1398,"props":1424,"children":1425},{},[1426,1435,1440],{"type":658,"tag":1427,"props":1428,"children":1429},"td",{},[1430],{"type":658,"tag":666,"props":1431,"children":1432},{},[1433],{"type":663,"value":1434},"verify-email",{"type":658,"tag":1427,"props":1436,"children":1437},{},[1438],{"type":663,"value":1439},"Email verification is requested",{"type":658,"tag":1427,"props":1441,"children":1442},{},[1443,1447,1448,1453,1454],{"type":658,"tag":666,"props":1444,"children":1445},{},[1446],{"type":663,"value":1234},{"type":663,"value":763},{"type":658,"tag":666,"props":1449,"children":1450},{},[1451],{"type":663,"value":1452},"token",{"type":663,"value":763},{"type":658,"tag":666,"props":1455,"children":1456},{},[1457],{"type":663,"value":1458},"user",{"type":658,"tag":1398,"props":1460,"children":1461},{},[1462,1470,1475],{"type":658,"tag":1427,"props":1463,"children":1464},{},[1465],{"type":658,"tag":666,"props":1466,"children":1467},{},[1468],{"type":663,"value":1469},"reset-password",{"type":658,"tag":1427,"props":1471,"children":1472},{},[1473],{"type":663,"value":1474},"A password reset is requested",{"type":658,"tag":1427,"props":1476,"children":1477},{},[1478,1482,1483,1487,1488],{"type":658,"tag":666,"props":1479,"children":1480},{},[1481],{"type":663,"value":1234},{"type":663,"value":763},{"type":658,"tag":666,"props":1484,"children":1485},{},[1486],{"type":663,"value":1452},{"type":663,"value":763},{"type":658,"tag":666,"props":1489,"children":1490},{},[1491],{"type":663,"value":1458},{"type":658,"tag":1398,"props":1493,"children":1494},{},[1495,1503,1515],{"type":658,"tag":1427,"props":1496,"children":1497},{},[1498],{"type":658,"tag":666,"props":1499,"children":1500},{},[1501],{"type":663,"value":1502},"email-otp",{"type":658,"tag":1427,"props":1504,"children":1505},{},[1506,1508,1513],{"type":663,"value":1507},"The ",{"type":658,"tag":666,"props":1509,"children":1510},{},[1511],{"type":663,"value":1512},"emailOTP",{"type":663,"value":1514}," capability sends a code",{"type":658,"tag":1427,"props":1516,"children":1517},{},[1518,1523,1524],{"type":658,"tag":666,"props":1519,"children":1520},{},[1521],{"type":663,"value":1522},"otp",{"type":663,"value":763},{"type":658,"tag":666,"props":1525,"children":1526},{},[1527],{"type":663,"value":1528},"purpose",{"type":658,"tag":1398,"props":1530,"children":1531},{},[1532,1540,1551],{"type":658,"tag":1427,"props":1533,"children":1534},{},[1535],{"type":658,"tag":666,"props":1536,"children":1537},{},[1538],{"type":663,"value":1539},"two-factor-otp",{"type":658,"tag":1427,"props":1541,"children":1542},{},[1543,1544,1549],{"type":663,"value":1507},{"type":658,"tag":666,"props":1545,"children":1546},{},[1547],{"type":663,"value":1548},"twoFactor",{"type":663,"value":1550}," capability sends a one-time code",{"type":658,"tag":1427,"props":1552,"children":1553},{},[1554,1558,1559],{"type":658,"tag":666,"props":1555,"children":1556},{},[1557],{"type":663,"value":1522},{"type":663,"value":763},{"type":658,"tag":666,"props":1560,"children":1561},{},[1562],{"type":663,"value":1458},{"type":658,"tag":1398,"props":1564,"children":1565},{},[1566,1574,1585],{"type":658,"tag":1427,"props":1567,"children":1568},{},[1569],{"type":658,"tag":666,"props":1570,"children":1571},{},[1572],{"type":663,"value":1573},"organization-invitation",{"type":658,"tag":1427,"props":1575,"children":1576},{},[1577,1578,1583],{"type":663,"value":1507},{"type":658,"tag":666,"props":1579,"children":1580},{},[1581],{"type":663,"value":1582},"organization",{"type":663,"value":1584}," capability invites a member",{"type":658,"tag":1427,"props":1586,"children":1587},{},[1588,1593,1594,1599,1600,1604,1605],{"type":658,"tag":666,"props":1589,"children":1590},{},[1591],{"type":663,"value":1592},"invitationId",{"type":663,"value":763},{"type":658,"tag":666,"props":1595,"children":1596},{},[1597],{"type":663,"value":1598},"role",{"type":663,"value":763},{"type":658,"tag":666,"props":1601,"children":1602},{},[1603],{"type":663,"value":1582},{"type":663,"value":763},{"type":658,"tag":666,"props":1606,"children":1607},{},[1608],{"type":663,"value":1609},"inviter",{"type":658,"tag":659,"props":1611,"children":1612},{},[1613,1617,1619,1624,1625,1630,1631,1636,1638,1643,1645,1649,1651,1655,1657,1662,1663,1667,1669,1674,1676,1680,1682,1687],{"type":658,"tag":666,"props":1614,"children":1615},{},[1616],{"type":663,"value":1528},{"type":663,"value":1618}," is ",{"type":658,"tag":666,"props":1620,"children":1621},{},[1622],{"type":663,"value":1623},"sign-in",{"type":663,"value":763},{"type":658,"tag":666,"props":1626,"children":1627},{},[1628],{"type":663,"value":1629},"email-verification",{"type":663,"value":763},{"type":658,"tag":666,"props":1632,"children":1633},{},[1634],{"type":663,"value":1635},"forget-password",{"type":663,"value":1637},", or\n",{"type":658,"tag":666,"props":1639,"children":1640},{},[1641],{"type":663,"value":1642},"change-email",{"type":663,"value":1644},". ",{"type":658,"tag":666,"props":1646,"children":1647},{},[1648],{"type":663,"value":1458},{"type":663,"value":1650}," and ",{"type":658,"tag":666,"props":1652,"children":1653},{},[1654],{"type":663,"value":1609},{"type":663,"value":1656}," contain ",{"type":658,"tag":666,"props":1658,"children":1659},{},[1660],{"type":663,"value":1661},"id",{"type":663,"value":763},{"type":658,"tag":666,"props":1664,"children":1665},{},[1666],{"type":663,"value":670},{"type":663,"value":1668},", and ",{"type":658,"tag":666,"props":1670,"children":1671},{},[1672],{"type":663,"value":1673},"name",{"type":663,"value":1675},". An\ninvitation has no link. Build it from your application origin and\n",{"type":658,"tag":666,"props":1677,"children":1678},{},[1679],{"type":663,"value":1592},{"type":663,"value":1681},", for example with ",{"type":658,"tag":666,"props":1683,"children":1684},{},[1685],{"type":663,"value":1686},"requireAuthOrigin('SITE_URL')",{"type":663,"value":875},{"type":658,"tag":659,"props":1689,"children":1690},{},[1691,1693,1697,1699,1704,1706,1711,1713,1718,1720,1724,1726,1730],{"type":663,"value":1692},"When you set ",{"type":658,"tag":666,"props":1694,"children":1695},{},[1696],{"type":663,"value":670},{"type":663,"value":1698},", email verification is enabled for ",{"type":658,"tag":666,"props":1700,"children":1701},{},[1702],{"type":663,"value":1703},"emailAndPassword",{"type":663,"value":1705},".\nPassword reset is opt-in: set ",{"type":658,"tag":666,"props":1707,"children":1708},{},[1709],{"type":663,"value":1710},"emailAndPassword.passwordReset: true",{"type":663,"value":1712}," to offer\n",{"type":658,"tag":666,"props":1714,"children":1715},{},[1716],{"type":663,"value":1717},"\u002Frequest-password-reset",{"type":663,"value":1719}," and receive ",{"type":658,"tag":666,"props":1721,"children":1722},{},[1723],{"type":663,"value":1469},{"type":663,"value":1725}," messages. Enabling it\nwithout ",{"type":658,"tag":666,"props":1727,"children":1728},{},[1729],{"type":663,"value":670},{"type":663,"value":1731}," is a configuration error. Handle every type that your enabled\ncapabilities can send.",{"type":658,"tag":681,"props":1733,"children":1735},{"id":1734},"submit-durable-work",[1736],{"type":663,"value":1737},"Submit durable work",{"type":658,"tag":659,"props":1739,"children":1740},{},[1741,1743,1748,1750,1755],{"type":663,"value":1742},"The hook receives a mutation or action context. The library fails with\n",{"type":658,"tag":666,"props":1744,"children":1745},{},[1746],{"type":663,"value":1747},"AUTH_EMAIL_REQUIRES_WRITABLE_CONTEXT",{"type":663,"value":1749}," before it calls the hook from a query.\nUse ",{"type":658,"tag":666,"props":1751,"children":1752},{},[1753],{"type":663,"value":1754},"ctx.runMutation",{"type":663,"value":1756}," to submit durable work.",{"type":658,"tag":659,"props":1758,"children":1759},{},[1760,1762,1768],{"type":663,"value":1761},"The library awaits the hook, but a rejected promise does ",{"type":658,"tag":1763,"props":1764,"children":1765},"strong",{},[1766],{"type":663,"value":1767},"not",{"type":663,"value":1769}," fail the\nBetter Auth request. Better Auth runs every auth email as a background task and\nonly logs a failure, so the user still sees success (this also keeps password\nreset from revealing which addresses have accounts). Treat the hook as a\ndurable submission that must not fail: enqueue the work, then retry delivery\nfrom your own queue.",{"type":658,"tag":659,"props":1771,"children":1772},{},[1773,1775,1780],{"type":663,"value":1774},"When the hook rejects, the library logs ",{"type":658,"tag":666,"props":1776,"children":1777},{},[1778],{"type":663,"value":1779},"AUTH_EMAIL_DELIVERY_FAILED",{"type":663,"value":1781}," with the\nmessage type and a sanitized cause, and hands Better Auth only that static\nerror. The raw error, which may echo a reset URL, token, or code, is never\nlogged. Do not await a mail provider's network response or start an untracked\npromise. Auth token creation and a later submission can be separate\ntransactions; test submission failure and safe user retries in the\napplication. Never include the credential-bearing message in an error.",{"type":658,"tag":681,"props":1783,"children":1785},{"id":1784},"configure-the-capabilities",[1786],{"type":663,"value":1787},"Configure the capabilities",{"type":658,"tag":659,"props":1789,"children":1790},{},[1791,1793,1798,1800,1805,1806,1811,1812,1817,1818,1823,1825,1829,1831,1835],{"type":663,"value":1792},"The library sets the email callbacks of Better Auth. These options are\nrejected: ",{"type":658,"tag":666,"props":1794,"children":1795},{},[1796],{"type":663,"value":1797},"emailAndPassword.sendResetPassword",{"type":663,"value":1799},",\n",{"type":658,"tag":666,"props":1801,"children":1802},{},[1803],{"type":663,"value":1804},"emailVerification.sendVerificationEmail",{"type":663,"value":763},{"type":658,"tag":666,"props":1807,"children":1808},{},[1809],{"type":663,"value":1810},"emailOTP.sendVerificationOTP",{"type":663,"value":1799},{"type":658,"tag":666,"props":1813,"children":1814},{},[1815],{"type":663,"value":1816},"twoFactor.otpOptions.sendOTP",{"type":663,"value":1668},{"type":658,"tag":666,"props":1819,"children":1820},{},[1821],{"type":663,"value":1822},"organization.sendInvitationEmail",{"type":663,"value":1824},".\nEnabling ",{"type":658,"tag":666,"props":1826,"children":1827},{},[1828],{"type":663,"value":1512},{"type":663,"value":1830}," without ",{"type":658,"tag":666,"props":1832,"children":1833},{},[1834],{"type":663,"value":670},{"type":663,"value":1836}," is a configuration error.",{"type":658,"tag":659,"props":1838,"children":1839},{},[1840,1844,1845,1850,1851,1855],{"type":658,"tag":666,"props":1841,"children":1842},{},[1843],{"type":663,"value":1703},{"type":663,"value":763},{"type":658,"tag":666,"props":1846,"children":1847},{},[1848],{"type":663,"value":1849},"emailVerification",{"type":663,"value":1668},{"type":658,"tag":666,"props":1852,"children":1853},{},[1854],{"type":663,"value":1512},{"type":663,"value":1856}," take plain options\nobjects. Password hashing, minimum length, automatic sign-in, and the other settings\nthat the library sets remain protected.",{"type":658,"tag":659,"props":1858,"children":1859},{},[1860],{"type":663,"value":1861},"Use environment-independent build options for schema generation. Every enabled\nplugin must match the generated local component schema.",{"type":658,"tag":659,"props":1863,"children":1864},{},[1865],{"type":663,"value":1866},"Email codes need their own expiry, abuse limits, and delivery-latency tests. A\ndurable queue does not automatically stop sending after a code expires. Never\nlog codes, reset URLs, or queued message bodies in application diagnostics.",{"title":1868,"searchDepth":1869,"depth":1869,"links":1870},"",4,[1871,1873,1874,1875],{"id":683,"depth":1872,"text":686},2,{"id":1369,"depth":1872,"text":1372},{"id":1734,"depth":1872,"text":1737},{"id":1784,"depth":1872,"text":1787},"markdown","docs",{"source":1879,"path":1880,"stem":1881,"dir":1882,"extension":1883},"content","docs\u002F3.build\u002F3.authentication\u002F11.transactional-email.md","docs\u002F3.build\u002F3.authentication\u002F11.transactional-email","authentication","md",{"requestedPath":277,"resolvedPath":277,"alternates":1885},[],{"requested":1887,"resolved":1888,"usedFallback":6},{},{"locale":8},{"previous":1890,"next":1892},{"title":265,"id":266,"canonicalKey":267,"locale":8,"draft":6,"navigation":1891,"icon":269,"path":270},{"icon":269},{"title":279,"id":280,"canonicalKey":281,"locale":8,"draft":6,"navigation":1893,"icon":283,"path":284},{"icon":283},{"left":1895,"top":1895,"width":1896,"height":1896,"rotate":1895,"vFlip":6,"hFlip":6,"body":1897},0,256,"\u003Cpath fill=\"#3178c6\" d=\"M20 0h216c11.046 0 20 8.954 20 20v216c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20V20C0 8.954 8.954 0 20 0\"\u002F>\u003Cpath fill=\"#fff\" d=\"M150.518 200.475v27.62q6.738 3.453 15.938 5.179T185.849 235q9.934 0 18.874-1.899t15.678-6.257q6.738-4.359 10.669-11.394q3.93-7.033 3.93-17.391q0-7.51-2.246-13.163a30.8 30.8 0 0 0-6.479-10.055q-4.232-4.402-10.149-7.898t-13.347-6.602q-5.442-2.245-9.761-4.359t-7.342-4.316q-3.024-2.2-4.665-4.661t-1.641-5.567q0-2.848 1.468-5.135q1.469-2.288 4.147-3.927t6.565-2.547q3.887-.906 8.638-.906q3.456 0 7.299.518q3.844.517 7.732 1.597a54 54 0 0 1 7.558 2.719a41.7 41.7 0 0 1 6.781 3.797v-25.807q-6.306-2.417-13.778-3.582T198.633 107q-9.847 0-18.658 2.115q-8.811 2.114-15.506 6.602q-6.694 4.49-10.582 11.437Q150 134.102 150 143.769q0 12.342 7.127 21.06t21.638 14.759a292 292 0 0 1 10.625 4.575q4.924 2.244 8.509 4.66t5.658 5.265t2.073 6.474a9.9 9.9 0 0 1-1.296 4.963q-1.295 2.287-3.93 3.97t-6.565 2.632t-9.2.95q-8.983 0-17.794-3.151t-16.327-9.451m-46.036-68.733H140V109H41v22.742h35.345V233h28.137z\"\u002F>",{"left":1895,"top":1895,"width":1899,"height":1899,"rotate":1895,"vFlip":6,"hFlip":6,"body":1900},24,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"\u002F>\u003Cpath d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\u002F>\u003C\u002Fg>",1790591494814]