[{"data":1,"prerenderedAt":1079},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:sRe3JY6HdmDF2kD1JBGhrrOu2XdjEJ_1q5t_Ti9zUaw":576,"content-page-surround:docs:sRe3JY6HdmDF2kD1JBGhrrOu2XdjEJ_1q5t_Ti9zUaw":1074},[4,52,119,179,425,482,533],{"title":5,"page":6,"canonicalKey":7,"locale":8,"children":9},"Overview",false,"docs\u002F1","en",[10,17,24,31,38,45],{"title":11,"id":12,"canonicalKey":13,"locale":8,"draft":6,"navigation":14,"icon":15,"path":16},"Better Convex Nuxt","content:docs:1.overview:1.introduction.md","docs\u002F1\u002F1",{"icon":15},"i-lucide-orbit","\u002Fdocs\u002Foverview\u002Fintroduction",{"title":18,"id":19,"canonicalKey":20,"locale":8,"draft":6,"navigation":21,"icon":22,"path":23},"Why Better Convex Nuxt","content:docs:1.overview:2.why-better-convex-nuxt.md","docs\u002F1\u002F2",{"icon":22},"i-lucide-badge-check","\u002Fdocs\u002Foverview\u002Fwhy-better-convex-nuxt",{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":6,"navigation":28,"icon":29,"path":30},"Who It Is For","content:docs:1.overview:3.who-it-is-for.md","docs\u002F1\u002F3",{"icon":29},"i-lucide-users","\u002Fdocs\u002Foverview\u002Fwho-it-is-for",{"title":32,"id":33,"canonicalKey":34,"locale":8,"draft":6,"navigation":35,"icon":36,"path":37},"Use Cases","content:docs:1.overview:4.use-cases.md","docs\u002F1\u002F4",{"icon":36},"i-lucide-layout-dashboard","\u002Fdocs\u002Foverview\u002Fuse-cases",{"title":39,"id":40,"canonicalKey":41,"locale":8,"draft":6,"navigation":42,"icon":43,"path":44},"Compare Nuxt Integrations","content:docs:1.overview:5.comparison.md","docs\u002F1\u002F5",{"icon":43},"i-lucide-scale","\u002Fdocs\u002Foverview\u002Fcomparison",{"title":46,"id":47,"canonicalKey":48,"locale":8,"draft":6,"navigation":49,"icon":50,"path":51},"Limitations and Trade-offs","content:docs:1.overview:6.limitations.md","docs\u002F1\u002F6",{"icon":50},"i-lucide-triangle-alert","\u002Fdocs\u002Foverview\u002Flimitations",{"title":53,"page":6,"canonicalKey":54,"locale":8,"children":55},"Understand","docs\u002F2",[56,63,70,77,84,91,98,105,112],{"title":57,"id":58,"canonicalKey":59,"locale":8,"draft":6,"navigation":60,"icon":61,"path":62},"Mental Model","content:docs:2.understand:1.mental-model.md","docs\u002F2\u002F1",{"icon":61},"i-lucide-brain","\u002Fdocs\u002Funderstand\u002Fmental-model",{"title":64,"id":65,"canonicalKey":66,"locale":8,"draft":6,"navigation":67,"icon":68,"path":69},"Request Lifecycle","content:docs:2.understand:2.request-lifecycle.md","docs\u002F2\u002F2",{"icon":68},"i-lucide-route","\u002Fdocs\u002Funderstand\u002Frequest-lifecycle",{"title":71,"id":72,"canonicalKey":73,"locale":8,"draft":6,"navigation":74,"icon":75,"path":76},"SSR, Hydration, and Real-Time","content:docs:2.understand:3.ssr-hydration-realtime.md","docs\u002F2\u002F3",{"icon":75},"i-lucide-refresh-cw","\u002Fdocs\u002Funderstand\u002Fssr-hydration-realtime",{"title":78,"id":79,"canonicalKey":80,"locale":8,"draft":6,"navigation":81,"icon":82,"path":83},"Query Ownership and Caching","content:docs:2.understand:4.query-ownership-and-caching.md","docs\u002F2\u002F4",{"icon":82},"i-lucide-database","\u002Fdocs\u002Funderstand\u002Fquery-ownership-and-caching",{"title":85,"id":86,"canonicalKey":87,"locale":8,"draft":6,"navigation":88,"icon":89,"path":90},"Authentication and Identity","content:docs:2.understand:5.authentication-and-identity.md","docs\u002F2\u002F5",{"icon":89},"i-lucide-fingerprint","\u002Fdocs\u002Funderstand\u002Fauthentication-and-identity",{"title":92,"id":93,"canonicalKey":94,"locale":8,"draft":6,"navigation":95,"icon":96,"path":97},"Server and Client Boundaries","content:docs:2.understand:6.server-and-client-boundaries.md","docs\u002F2\u002F6",{"icon":96},"i-lucide-panels-top-left","\u002Fdocs\u002Funderstand\u002Fserver-and-client-boundaries",{"title":99,"id":100,"canonicalKey":101,"locale":8,"draft":6,"navigation":102,"icon":103,"path":104},"Errors and Failures","content:docs:2.understand:7.errors-and-failures.md","docs\u002F2\u002F7",{"icon":103},"i-lucide-circle-x","\u002Fdocs\u002Funderstand\u002Ferrors-and-failures",{"title":106,"id":107,"canonicalKey":108,"locale":8,"draft":6,"navigation":109,"icon":110,"path":111},"Design Decisions","content:docs:2.understand:8.design-decisions.md","docs\u002F2\u002F8",{"icon":110},"i-lucide-git-branch","\u002Fdocs\u002Funderstand\u002Fdesign-decisions",{"title":113,"id":114,"canonicalKey":115,"locale":8,"draft":6,"navigation":116,"icon":117,"path":118},"Glossary","content:docs:2.understand:9.glossary.md","docs\u002F2\u002F9",{"icon":117},"i-lucide-book-a","\u002Fdocs\u002Funderstand\u002Fglossary",{"title":120,"page":6,"canonicalKey":121,"locale":8,"children":122},"Get Started","docs\u002F3",[123,130,137,144,151,158,165,172],{"title":124,"id":125,"canonicalKey":126,"locale":8,"draft":6,"navigation":127,"icon":128,"path":129},"Choose Your Path","content:docs:3.get-started:1.choose-your-path.md","docs\u002F3\u002F1",{"icon":128},"i-lucide-signpost","\u002Fdocs\u002Fget-started\u002Fchoose-your-path",{"title":131,"id":132,"canonicalKey":133,"locale":8,"draft":6,"navigation":134,"icon":135,"path":136},"Installation","content:docs:3.get-started:2.installation.md","docs\u002F3\u002F2",{"icon":135},"i-lucide-download","\u002Fdocs\u002Fget-started\u002Finstallation",{"title":138,"id":139,"canonicalKey":140,"locale":8,"draft":6,"navigation":141,"icon":142,"path":143},"First Real-Time Page","content:docs:3.get-started:3.first-realtime-page.md","docs\u002F3\u002F3",{"icon":142},"i-lucide-radio","\u002Fdocs\u002Fget-started\u002Ffirst-realtime-page",{"title":145,"id":146,"canonicalKey":147,"locale":8,"draft":6,"navigation":148,"icon":149,"path":150},"Add a Mutation","content:docs:3.get-started:4.add-a-mutation.md","docs\u002F3\u002F4",{"icon":149},"i-lucide-square-pen","\u002Fdocs\u002Fget-started\u002Fadd-a-mutation",{"title":152,"id":153,"canonicalKey":154,"locale":8,"draft":6,"navigation":155,"icon":156,"path":157},"Add Authentication","content:docs:3.get-started:5.add-authentication.md","docs\u002F3\u002F5",{"icon":156},"i-lucide-log-in","\u002Fdocs\u002Fget-started\u002Fadd-authentication",{"title":159,"id":160,"canonicalKey":161,"locale":8,"draft":6,"navigation":162,"icon":163,"path":164},"Protect Data","content:docs:3.get-started:6.protect-data.md","docs\u002F3\u002F6",{"icon":163},"i-lucide-shield-check","\u002Fdocs\u002Fget-started\u002Fprotect-data",{"title":166,"id":167,"canonicalKey":168,"locale":8,"draft":6,"navigation":169,"icon":170,"path":171},"Project Structure","content:docs:3.get-started:7.project-structure.md","docs\u002F3\u002F7",{"icon":170},"i-lucide-folder-tree","\u002Fdocs\u002Fget-started\u002Fproject-structure",{"title":173,"id":174,"canonicalKey":175,"locale":8,"draft":6,"navigation":176,"icon":177,"path":178},"Next Steps","content:docs:3.get-started:8.next-steps.md","docs\u002F3\u002F8",{"icon":177},"i-lucide-arrow-right","\u002Fdocs\u002Fget-started\u002Fnext-steps",{"title":180,"page":6,"canonicalKey":181,"locale":8,"children":182},"Build","docs\u002F4",[183,227,258,322,354,386],{"title":184,"page":6,"canonicalKey":185,"locale":8,"children":186},"Queries","docs\u002F4\u002F1",[187,192,199,206,213,220],{"title":184,"id":188,"canonicalKey":189,"locale":8,"draft":6,"navigation":190,"icon":82,"path":191},"content:docs:4.build:1.queries:1.queries.md","docs\u002F4\u002F1\u002F1",{"icon":82},"\u002Fdocs\u002Fbuild\u002Fqueries\u002Fqueries",{"title":193,"id":194,"canonicalKey":195,"locale":8,"draft":6,"navigation":196,"icon":197,"path":198},"Reactive Arguments","content:docs:4.build:1.queries:2.reactive-arguments.md","docs\u002F4\u002F1\u002F2",{"icon":197},"i-lucide-sliders-horizontal","\u002Fdocs\u002Fbuild\u002Fqueries\u002Freactive-arguments",{"title":200,"id":201,"canonicalKey":202,"locale":8,"draft":6,"navigation":203,"icon":204,"path":205},"Loading and Stale Data","content:docs:4.build:1.queries:3.loading-and-stale-data.md","docs\u002F4\u002F1\u002F3",{"icon":204},"i-lucide-loader-circle","\u002Fdocs\u002Fbuild\u002Fqueries\u002Floading-and-stale-data",{"title":207,"id":208,"canonicalKey":209,"locale":8,"draft":6,"navigation":210,"icon":211,"path":212},"Query Execution Options","content:docs:4.build:1.queries:4.ssr-options.md","docs\u002F4\u002F1\u002F4",{"icon":211},"i-lucide-server-cog","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fssr-options",{"title":214,"id":215,"canonicalKey":216,"locale":8,"draft":6,"navigation":217,"icon":218,"path":219},"Share Query State","content:docs:4.build:1.queries:5.sharing-query-state.md","docs\u002F4\u002F1\u002F5",{"icon":218},"i-lucide-share-2","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fsharing-query-state",{"title":221,"id":222,"canonicalKey":223,"locale":8,"draft":6,"navigation":224,"icon":225,"path":226},"Pagination","content:docs:4.build:1.queries:6.pagination.md","docs\u002F4\u002F1\u002F6",{"icon":225},"i-lucide-list-plus","\u002Fdocs\u002Fbuild\u002Fqueries\u002Fpagination",{"title":228,"page":6,"canonicalKey":229,"locale":8,"children":230},"Write Data","docs\u002F4\u002F2",[231,237,244,251],{"title":232,"id":233,"canonicalKey":234,"locale":8,"draft":6,"navigation":235,"icon":149,"path":236},"Mutations","content:docs:4.build:2.write-data:1.mutations.md","docs\u002F4\u002F2\u002F1",{"icon":149},"\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fmutations",{"title":238,"id":239,"canonicalKey":240,"locale":8,"draft":6,"navigation":241,"icon":242,"path":243},"Actions","content:docs:4.build:2.write-data:2.actions.md","docs\u002F4\u002F2\u002F2",{"icon":242},"i-lucide-zap","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Factions",{"title":245,"id":246,"canonicalKey":247,"locale":8,"draft":6,"navigation":248,"icon":249,"path":250},"Optimistic Updates","content:docs:4.build:2.write-data:3.optimistic-updates.md","docs\u002F4\u002F2\u002F3",{"icon":249},"i-lucide-gauge","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Foptimistic-updates",{"title":252,"id":253,"canonicalKey":254,"locale":8,"draft":6,"navigation":255,"icon":256,"path":257},"Concurrent Operations","content:docs:4.build:2.write-data:4.concurrent-operations.md","docs\u002F4\u002F2\u002F4",{"icon":256},"i-lucide-git-fork","\u002Fdocs\u002Fbuild\u002Fwrite-data\u002Fconcurrent-operations",{"title":259,"page":6,"canonicalKey":260,"locale":8,"children":261},"Authentication","docs\u002F4\u002F3",[262,268,275,282,288,294,301,308,315],{"title":259,"id":263,"canonicalKey":264,"locale":8,"draft":6,"navigation":265,"icon":266,"path":267},"content:docs:4.build:3.authentication:1.overview.md","docs\u002F4\u002F3\u002F1",{"icon":266},"i-lucide-shield","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Foverview",{"title":269,"id":270,"canonicalKey":271,"locale":8,"draft":6,"navigation":272,"icon":273,"path":274},"Better Auth Setup","content:docs:4.build:3.authentication:2.better-auth-setup.md","docs\u002F4\u002F3\u002F2",{"icon":273},"i-lucide-settings-2","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-setup",{"title":276,"id":277,"canonicalKey":278,"locale":8,"draft":6,"navigation":279,"icon":280,"path":281},"Auth State and User Data","content:docs:4.build:3.authentication:3.auth-state-and-user.md","docs\u002F4\u002F3\u002F3",{"icon":280},"i-lucide-user-round","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fauth-state-and-user",{"title":283,"id":284,"canonicalKey":285,"locale":8,"draft":6,"navigation":286,"icon":156,"path":287},"Sign In and Sign Out","content:docs:4.build:3.authentication:4.sign-in-and-sign-out.md","docs\u002F4\u002F3\u002F4",{"icon":156},"\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fsign-in-and-sign-out",{"title":289,"id":290,"canonicalKey":291,"locale":8,"draft":6,"navigation":292,"icon":68,"path":293},"Route Protection","content:docs:4.build:3.authentication:5.route-protection.md","docs\u002F4\u002F3\u002F5",{"icon":68},"\u002Fdocs\u002Fbuild\u002Fauthentication\u002Froute-protection",{"title":295,"id":296,"canonicalKey":297,"locale":8,"draft":6,"navigation":298,"icon":299,"path":300},"Backend Authorization","content:docs:4.build:3.authentication:6.backend-authorization.md","docs\u002F4\u002F3\u002F6",{"icon":299},"i-lucide-lock-keyhole","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbackend-authorization",{"title":302,"id":303,"canonicalKey":304,"locale":8,"draft":6,"navigation":305,"icon":306,"path":307},"Better Auth Plugins","content:docs:4.build:3.authentication:7.better-auth-plugins.md","docs\u002F4\u002F3\u002F7",{"icon":306},"i-lucide-plug","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fbetter-auth-plugins",{"title":309,"id":310,"canonicalKey":311,"locale":8,"draft":6,"navigation":312,"icon":313,"path":314},"Custom User Fields","content:docs:4.build:3.authentication:8.custom-user-fields.md","docs\u002F4\u002F3\u002F8",{"icon":313},"i-lucide-user-cog","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fcustom-user-fields",{"title":316,"id":317,"canonicalKey":318,"locale":8,"draft":6,"navigation":319,"icon":320,"path":321},"User Synchronization","content:docs:4.build:3.authentication:9.user-synchronization.md","docs\u002F4\u002F3\u002F9",{"icon":320},"i-lucide-refresh-ccw","\u002Fdocs\u002Fbuild\u002Fauthentication\u002Fuser-synchronization",{"title":323,"page":6,"canonicalKey":324,"locale":8,"children":325},"Server","docs\u002F4\u002F4",[326,333,340,347],{"title":327,"id":328,"canonicalKey":329,"locale":8,"draft":6,"navigation":330,"icon":331,"path":332},"serverConvex","content:docs:4.build:4.server:1.server-convex.md","docs\u002F4\u002F4\u002F1",{"icon":331},"i-lucide-server","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-convex",{"title":334,"id":335,"canonicalKey":336,"locale":8,"draft":6,"navigation":337,"icon":338,"path":339},"Server Routes","content:docs:4.build:4.server:2.server-routes.md","docs\u002F4\u002F4\u002F2",{"icon":338},"i-lucide-waypoints","\u002Fdocs\u002Fbuild\u002Fserver\u002Fserver-routes",{"title":341,"id":342,"canonicalKey":343,"locale":8,"draft":6,"navigation":344,"icon":345,"path":346},"Webhooks and Jobs","content:docs:4.build:4.server:3.webhooks-and-jobs.md","docs\u002F4\u002F4\u002F3",{"icon":345},"i-lucide-webhook","\u002Fdocs\u002Fbuild\u002Fserver\u002Fwebhooks-and-jobs",{"title":348,"id":349,"canonicalKey":350,"locale":8,"draft":6,"navigation":351,"icon":352,"path":353},"Credentials and Server Security","content:docs:4.build:4.server:4.credentials-and-security.md","docs\u002F4\u002F4\u002F4",{"icon":352},"i-lucide-key-round","\u002Fdocs\u002Fbuild\u002Fserver\u002Fcredentials-and-security",{"title":355,"page":6,"canonicalKey":356,"locale":8,"children":357},"Files","docs\u002F4\u002F5",[358,365,372,379],{"title":359,"id":360,"canonicalKey":361,"locale":8,"draft":6,"navigation":362,"icon":363,"path":364},"Upload Files","content:docs:4.build:5.files:1.upload-files.md","docs\u002F4\u002F5\u002F1",{"icon":363},"i-lucide-upload","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fupload-files",{"title":366,"id":367,"canonicalKey":368,"locale":8,"draft":6,"navigation":369,"icon":370,"path":371},"Upload Queues","content:docs:4.build:5.files:2.upload-queues.md","docs\u002F4\u002F5\u002F2",{"icon":370},"i-lucide-list-checks","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fupload-queues",{"title":373,"id":374,"canonicalKey":375,"locale":8,"draft":6,"navigation":376,"icon":377,"path":378},"Storage URLs","content:docs:4.build:5.files:3.storage-urls.md","docs\u002F4\u002F5\u002F3",{"icon":377},"i-lucide-link","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fstorage-urls",{"title":380,"id":381,"canonicalKey":382,"locale":8,"draft":6,"navigation":383,"icon":384,"path":385},"File Validation and Deletion","content:docs:4.build:5.files:4.validation-and-deletion.md","docs\u002F4\u002F5\u002F4",{"icon":384},"i-lucide-file-x","\u002Fdocs\u002Fbuild\u002Ffiles\u002Fvalidation-and-deletion",{"title":387,"page":6,"canonicalKey":388,"locale":8,"children":389},"Application Behavior","docs\u002F4\u002F6",[390,397,404,411,418],{"title":391,"id":392,"canonicalKey":393,"locale":8,"draft":6,"navigation":394,"icon":395,"path":396},"Connection State","content:docs:4.build:6.application-behavior:1.connection-state.md","docs\u002F4\u002F6\u002F1",{"icon":395},"i-lucide-wifi","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fconnection-state",{"title":398,"id":399,"canonicalKey":400,"locale":8,"draft":6,"navigation":401,"icon":402,"path":403},"Error Handling","content:docs:4.build:6.application-behavior:2.error-handling.md","docs\u002F4\u002F6\u002F2",{"icon":402},"i-lucide-circle-alert","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Ferror-handling",{"title":405,"id":406,"canonicalKey":407,"locale":8,"draft":6,"navigation":408,"icon":409,"path":410},"Logging","content:docs:4.build:6.application-behavior:3.logging.md","docs\u002F4\u002F6\u002F3",{"icon":409},"i-lucide-scroll-text","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Flogging",{"title":412,"id":413,"canonicalKey":414,"locale":8,"draft":6,"navigation":415,"icon":416,"path":417},"DevTools","content:docs:4.build:6.application-behavior:4.devtools.md","docs\u002F4\u002F6\u002F4",{"icon":416},"i-lucide-wrench","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fdevtools",{"title":419,"id":420,"canonicalKey":421,"locale":8,"draft":6,"navigation":422,"icon":423,"path":424},"Performance","content:docs:4.build:6.application-behavior:5.performance.md","docs\u002F4\u002F6\u002F5",{"icon":423},"i-lucide-chart-no-axes-combined","\u002Fdocs\u002Fbuild\u002Fapplication-behavior\u002Fperformance",{"title":426,"page":6,"canonicalKey":427,"locale":8,"children":428},"Recipes","docs\u002F5",[429,435,442,449,456,463,470,476],{"title":430,"id":431,"canonicalKey":432,"locale":8,"draft":6,"navigation":433,"icon":36,"path":434},"Protected Dashboard","content:docs:5.recipes:1.protected-dashboard.md","docs\u002F5\u002F1",{"icon":36},"\u002Fdocs\u002Frecipes\u002Fprotected-dashboard",{"title":436,"id":437,"canonicalKey":438,"locale":8,"draft":6,"navigation":439,"icon":440,"path":441},"Real-Time Feed","content:docs:5.recipes:2.realtime-feed.md","docs\u002F5\u002F2",{"icon":440},"i-lucide-messages-square","\u002Fdocs\u002Frecipes\u002Frealtime-feed",{"title":443,"id":444,"canonicalKey":445,"locale":8,"draft":6,"navigation":446,"icon":447,"path":448},"Optimistic Todo List","content:docs:5.recipes:3.optimistic-todo-list.md","docs\u002F5\u002F3",{"icon":447},"i-lucide-list-todo","\u002Fdocs\u002Frecipes\u002Foptimistic-todo-list",{"title":450,"id":451,"canonicalKey":452,"locale":8,"draft":6,"navigation":453,"icon":454,"path":455},"Infinite Scroll","content:docs:5.recipes:4.infinite-scroll.md","docs\u002F5\u002F4",{"icon":454},"i-lucide-mouse","\u002Fdocs\u002Frecipes\u002Finfinite-scroll",{"title":457,"id":458,"canonicalKey":459,"locale":8,"draft":6,"navigation":460,"icon":461,"path":462},"File Upload Form","content:docs:5.recipes:5.file-upload-form.md","docs\u002F5\u002F5",{"icon":461},"i-lucide-file-up","\u002Fdocs\u002Frecipes\u002Ffile-upload-form",{"title":464,"id":465,"canonicalKey":466,"locale":8,"draft":6,"navigation":467,"icon":468,"path":469},"Organization Permissions","content:docs:5.recipes:6.organization-permissions.md","docs\u002F5\u002F6",{"icon":468},"i-lucide-building-2","\u002Fdocs\u002Frecipes\u002Forganization-permissions",{"title":471,"id":472,"canonicalKey":473,"locale":8,"draft":6,"navigation":474,"icon":331,"path":475},"Authenticated Server Route","content:docs:5.recipes:7.authenticated-server-route.md","docs\u002F5\u002F7",{"icon":331},"\u002Fdocs\u002Frecipes\u002Fauthenticated-server-route",{"title":477,"id":478,"canonicalKey":479,"locale":8,"draft":6,"navigation":480,"icon":96,"path":481},"Public and Private Data","content:docs:5.recipes:8.public-and-private-data.md","docs\u002F5\u002F8",{"icon":96},"\u002Fdocs\u002Frecipes\u002Fpublic-and-private-data",{"title":483,"page":6,"canonicalKey":484,"locale":8,"children":485},"Reference","docs\u002F6",[486,493,500,506,512,519,526],{"title":487,"id":488,"canonicalKey":489,"locale":8,"draft":6,"navigation":490,"icon":491,"path":492},"Composables","content:docs:6.reference:1.composables.md","docs\u002F6\u002F1",{"icon":491},"i-lucide-braces","\u002Fdocs\u002Freference\u002Fcomposables",{"title":494,"id":495,"canonicalKey":496,"locale":8,"draft":6,"navigation":497,"icon":498,"path":499},"Auth Components","content:docs:6.reference:2.auth-components.md","docs\u002F6\u002F2",{"icon":498},"i-lucide-component","\u002Fdocs\u002Freference\u002Fauth-components",{"title":501,"id":502,"canonicalKey":503,"locale":8,"draft":6,"navigation":504,"icon":331,"path":505},"Server API","content:docs:6.reference:3.server-api.md","docs\u002F6\u002F3",{"icon":331},"\u002Fdocs\u002Freference\u002Fserver-api",{"title":507,"id":508,"canonicalKey":509,"locale":8,"draft":6,"navigation":510,"icon":103,"path":511},"Error Types","content:docs:6.reference:4.error-types.md","docs\u002F6\u002F4",{"icon":103},"\u002Fdocs\u002Freference\u002Ferror-types",{"title":513,"id":514,"canonicalKey":515,"locale":8,"draft":6,"navigation":516,"icon":517,"path":518},"Module Configuration","content:docs:6.reference:5.module-configuration.md","docs\u002F6\u002F5",{"icon":517},"i-lucide-settings","\u002Fdocs\u002Freference\u002Fmodule-configuration",{"title":520,"id":521,"canonicalKey":522,"locale":8,"draft":6,"navigation":523,"icon":524,"path":525},"Package Exports","content:docs:6.reference:6.package-exports.md","docs\u002F6\u002F6",{"icon":524},"i-lucide-package-open","\u002Fdocs\u002Freference\u002Fpackage-exports",{"title":527,"id":528,"canonicalKey":529,"locale":8,"draft":6,"navigation":530,"icon":531,"path":532},"API Surface","content:docs:6.reference:7.api-surface.md","docs\u002F6\u002F7",{"icon":531},"i-lucide-list","\u002Fdocs\u002Freference\u002Fapi-surface",{"title":534,"page":6,"canonicalKey":535,"locale":8,"children":536},"Operations","docs\u002F7",[537,544,551,557,563,570],{"title":538,"id":539,"canonicalKey":540,"locale":8,"draft":6,"navigation":541,"icon":542,"path":543},"Environment Variables","content:docs:7.operations:1.environment-variables.md","docs\u002F7\u002F1",{"icon":542},"i-lucide-variable","\u002Fdocs\u002Foperations\u002Fenvironment-variables",{"title":545,"id":546,"canonicalKey":547,"locale":8,"draft":6,"navigation":548,"icon":549,"path":550},"Deployment","content:docs:7.operations:2.deployment.md","docs\u002F7\u002F2",{"icon":549},"i-lucide-rocket","\u002Fdocs\u002Foperations\u002Fdeployment",{"title":552,"id":553,"canonicalKey":554,"locale":8,"draft":6,"navigation":555,"icon":163,"path":556},"Security Model","content:docs:7.operations:3.security-model.md","docs\u002F7\u002F3",{"icon":163},"\u002Fdocs\u002Foperations\u002Fsecurity-model",{"title":558,"id":559,"canonicalKey":560,"locale":8,"draft":6,"navigation":561,"icon":416,"path":562},"Troubleshooting","content:docs:7.operations:4.troubleshooting.md","docs\u002F7\u002F4",{"icon":416},"\u002Fdocs\u002Foperations\u002Ftroubleshooting",{"title":564,"id":565,"canonicalKey":566,"locale":8,"draft":6,"navigation":567,"icon":568,"path":569},"Migration Guide","content:docs:7.operations:5.migration-guide.md","docs\u002F7\u002F5",{"icon":568},"i-lucide-git-compare-arrows","\u002Fdocs\u002Foperations\u002Fmigration-guide",{"title":571,"id":572,"canonicalKey":573,"locale":8,"draft":6,"navigation":574,"icon":22,"path":575},"Release Compatibility","content:docs:7.operations:6.release-compatibility.md","docs\u002F7\u002F6",{"icon":22},"\u002Fdocs\u002Foperations\u002Frelease-compatibility",{"title":106,"description":577,"navigation":578,"body":579,"type":1061,"id":107,"draft":6,"partial":6,"locale":8,"canonicalKey":108,"collection":1062,"navigationFile":6,"file":1063,"route":1069,"resolution":1071},"Understand the deliberate constraints behind the public runtime.",{"icon":110},{"type":580,"children":581,"toc":1048},"root",[582,590,597,608,618,628,638,663,669,678,687,696,705,721,727,736,745,754,770,779,790,826,835,844,873,889,895,904,913,922,931,940,946,961,970,979,988,997,1003,1012,1021,1030,1039],{"type":583,"tag":584,"props":585,"children":586},"element","p",{},[587],{"type":588,"value":589},"text","These decisions describe current public behavior. They are not a roadmap.",{"type":583,"tag":591,"props":592,"children":594},"h2",{"id":593},"ssr-first-live-after-hydration",[595],{"type":588,"value":596},"SSR first, live after hydration",{"type":583,"tag":584,"props":598,"children":599},{},[600,606],{"type":583,"tag":601,"props":602,"children":603},"strong",{},[604],{"type":588,"value":605},"Decision:",{"type":588,"value":607}," Queries enable SSR and subscriptions by default.",{"type":583,"tag":584,"props":609,"children":610},{},[611,616],{"type":583,"tag":601,"props":612,"children":613},{},[614],{"type":588,"value":615},"Problem:",{"type":588,"value":617}," A browser-only subscription produces no server data. A server-only fetch becomes stale after hydration.",{"type":583,"tag":584,"props":619,"children":620},{},[621,626],{"type":583,"tag":601,"props":622,"children":623},{},[624],{"type":588,"value":625},"Benefit:",{"type":588,"value":627}," One composable provides initial HTML and later live updates.",{"type":583,"tag":584,"props":629,"children":630},{},[631,636],{"type":583,"tag":601,"props":632,"children":633},{},[634],{"type":588,"value":635},"Cost:",{"type":588,"value":637}," The lifecycle performs an SSR HTTP query and a browser subscription.",{"type":583,"tag":584,"props":639,"children":640},{},[641,646,648,654,656,661],{"type":583,"tag":601,"props":642,"children":643},{},[644],{"type":588,"value":645},"Alternative:",{"type":588,"value":647}," Set ",{"type":583,"tag":649,"props":650,"children":651},"code",{},[652],{"type":588,"value":653},"server: false",{"type":588,"value":655}," or ",{"type":583,"tag":649,"props":657,"children":658},{},[659],{"type":588,"value":660},"subscribe: false",{"type":588,"value":662}," per query or through module defaults.",{"type":583,"tag":591,"props":664,"children":666},{"id":665},"convex-owns-subscription-deduplication",[667],{"type":588,"value":668},"Convex owns subscription deduplication",{"type":583,"tag":584,"props":670,"children":671},{},[672,676],{"type":583,"tag":601,"props":673,"children":674},{},[675],{"type":588,"value":605},{"type":588,"value":677}," The module does not maintain a parallel subscription registry.",{"type":583,"tag":584,"props":679,"children":680},{},[681,685],{"type":583,"tag":601,"props":682,"children":683},{},[684],{"type":588,"value":615},{"type":588,"value":686}," A second registry duplicates client state, reference counting, and cleanup behavior already owned by Convex.",{"type":583,"tag":584,"props":688,"children":689},{},[690,694],{"type":583,"tag":601,"props":691,"children":692},{},[693],{"type":588,"value":625},{"type":588,"value":695}," Fewer state owners and less private coupling.",{"type":583,"tag":584,"props":697,"children":698},{},[699,703],{"type":583,"tag":601,"props":700,"children":701},{},[702],{"type":588,"value":635},{"type":588,"value":704}," Composable instances still own separate Vue-visible state even when Convex deduplicates wire work.",{"type":583,"tag":584,"props":706,"children":707},{},[708,712,714,719],{"type":583,"tag":601,"props":709,"children":710},{},[711],{"type":588,"value":645},{"type":588,"value":713}," Use ",{"type":583,"tag":649,"props":715,"children":716},{},[717],{"type":588,"value":718},"defineSharedConvexQuery",{"type":588,"value":720}," when consumers must share the same Vue state.",{"type":583,"tag":591,"props":722,"children":724},{"id":723},"identity-changes-replace-the-primary-client",[725],{"type":588,"value":726},"Identity changes replace the primary client",{"type":583,"tag":584,"props":728,"children":729},{},[730,734],{"type":583,"tag":601,"props":731,"children":732},{},[733],{"type":588,"value":605},{"type":588,"value":735}," A stable identity-key change retires the old primary client and clears identity-owned query state.",{"type":583,"tag":584,"props":737,"children":738},{},[739,743],{"type":583,"tag":601,"props":740,"children":741},{},[742],{"type":588,"value":615},{"type":588,"value":744}," Convex client state can contain cached query results and pending optimistic updates created under the previous user.",{"type":583,"tag":584,"props":746,"children":747},{},[748,752],{"type":583,"tag":601,"props":749,"children":750},{},[751],{"type":588,"value":625},{"type":588,"value":753}," User A's client state cannot become user B's local starting state.",{"type":583,"tag":584,"props":755,"children":756},{},[757,761,763,768],{"type":583,"tag":601,"props":758,"children":759},{},[760],{"type":588,"value":635},{"type":588,"value":762}," In-flight imperative calls may reject with ",{"type":583,"tag":649,"props":764,"children":765},{},[766],{"type":588,"value":767},"IDENTITY_CHANGED",{"type":588,"value":769}," during the transition.",{"type":583,"tag":584,"props":771,"children":772},{},[773,777],{"type":583,"tag":601,"props":774,"children":775},{},[776],{"type":588,"value":645},{"type":588,"value":778}," Same-user token refresh keeps the client because the stable identity did not change.",{"type":583,"tag":591,"props":780,"children":782},{"id":781},"code-useconvex-exposes-a-stable-narrow-handle",[783,788],{"type":583,"tag":649,"props":784,"children":785},{},[786],{"type":588,"value":787},"useConvex()",{"type":588,"value":789}," exposes a stable narrow handle",{"type":583,"tag":584,"props":791,"children":792},{},[793,797,799,804,806,811,812,817,819,824],{"type":583,"tag":601,"props":794,"children":795},{},[796],{"type":588,"value":605},{"type":588,"value":798}," The handle contains ",{"type":583,"tag":649,"props":800,"children":801},{},[802],{"type":588,"value":803},"query",{"type":588,"value":805},", ",{"type":583,"tag":649,"props":807,"children":808},{},[809],{"type":588,"value":810},"mutation",{"type":588,"value":805},{"type":583,"tag":649,"props":813,"children":814},{},[815],{"type":588,"value":816},"action",{"type":588,"value":818},", and ",{"type":583,"tag":649,"props":820,"children":821},{},[822],{"type":588,"value":823},"onUpdate",{"type":588,"value":825},", not the raw client.",{"type":583,"tag":584,"props":827,"children":828},{},[829,833],{"type":583,"tag":601,"props":830,"children":831},{},[832],{"type":588,"value":615},{"type":588,"value":834}," A captured raw client becomes closed after identity replacement and exposes lifecycle methods owned by the runtime.",{"type":583,"tag":584,"props":836,"children":837},{},[838,842],{"type":583,"tag":601,"props":839,"children":840},{},[841],{"type":588,"value":625},{"type":588,"value":843}," Calls always target the current client; subscriptions can rebind.",{"type":583,"tag":584,"props":845,"children":846},{},[847,851,853,858,859,864,866,871],{"type":583,"tag":601,"props":848,"children":849},{},[850],{"type":588,"value":635},{"type":588,"value":852}," Application code cannot call ",{"type":583,"tag":649,"props":854,"children":855},{},[856],{"type":588,"value":857},"setAuth",{"type":588,"value":805},{"type":583,"tag":649,"props":860,"children":861},{},[862],{"type":588,"value":863},"clearAuth",{"type":588,"value":865},", or ",{"type":583,"tag":649,"props":867,"children":868},{},[869],{"type":588,"value":870},"close",{"type":588,"value":872},".",{"type":583,"tag":584,"props":874,"children":875},{},[876,880,882,887],{"type":583,"tag":601,"props":877,"children":878},{},[879],{"type":588,"value":645},{"type":588,"value":881}," Use the high-level composables and ",{"type":583,"tag":649,"props":883,"children":884},{},[885],{"type":588,"value":886},"useConvexConnectionState()",{"type":588,"value":888}," for supported needs.",{"type":583,"tag":591,"props":890,"children":892},{"id":891},"authorization-stays-in-the-application",[893],{"type":588,"value":894},"Authorization stays in the application",{"type":583,"tag":584,"props":896,"children":897},{},[898,902],{"type":583,"tag":601,"props":899,"children":900},{},[901],{"type":588,"value":605},{"type":588,"value":903}," The library exposes identity and route UX primitives but no product permission framework.",{"type":583,"tag":584,"props":905,"children":906},{},[907,911],{"type":583,"tag":601,"props":908,"children":909},{},[910],{"type":588,"value":615},{"type":588,"value":912}," Only the product knows its resources, roles, membership rules, and domain invariants.",{"type":583,"tag":584,"props":914,"children":915},{},[916,920],{"type":583,"tag":601,"props":917,"children":918},{},[919],{"type":588,"value":625},{"type":588,"value":921}," Backend policy stays near Convex data and remains testable without frontend orchestration.",{"type":583,"tag":584,"props":923,"children":924},{},[925,929],{"type":583,"tag":601,"props":926,"children":927},{},[928],{"type":588,"value":635},{"type":588,"value":930}," Applications implement reusable authorization helpers themselves.",{"type":583,"tag":584,"props":932,"children":933},{},[934,938],{"type":583,"tag":601,"props":935,"children":936},{},[937],{"type":588,"value":645},{"type":588,"value":939}," Use verified recipes as patterns, not as a second policy engine.",{"type":583,"tag":591,"props":941,"children":943},{"id":942},"server-calls-use-request-scoped-official-primitives",[944],{"type":588,"value":945},"Server calls use request-scoped official primitives",{"type":583,"tag":584,"props":947,"children":948},{},[949,953,955,959],{"type":583,"tag":601,"props":950,"children":951},{},[952],{"type":588,"value":605},{"type":588,"value":954}," ",{"type":583,"tag":649,"props":956,"children":957},{},[958],{"type":588,"value":327},{"type":588,"value":960}," creates one request-scoped caller using the official HTTP client.",{"type":583,"tag":584,"props":962,"children":963},{},[964,968],{"type":583,"tag":601,"props":965,"children":966},{},[967],{"type":588,"value":615},{"type":588,"value":969}," Reusing a caller can mix credentials across requests. Manual protocol code adds an unnecessary transport owner.",{"type":583,"tag":584,"props":971,"children":972},{},[973,977],{"type":583,"tag":601,"props":974,"children":975},{},[976],{"type":588,"value":625},{"type":588,"value":978}," Credential resolution and call lifetime match the Nuxt request.",{"type":583,"tag":584,"props":980,"children":981},{},[982,986],{"type":583,"tag":601,"props":983,"children":984},{},[985],{"type":588,"value":635},{"type":588,"value":987}," Server calls do not share browser subscription state or hydrate client composables automatically.",{"type":583,"tag":584,"props":989,"children":990},{},[991,995],{"type":583,"tag":601,"props":992,"children":993},{},[994],{"type":588,"value":645},{"type":588,"value":996}," Call Convex directly from the browser for normal interactive data.",{"type":583,"tag":591,"props":998,"children":1000},{"id":999},"no-second-entity-store",[1001],{"type":588,"value":1002},"No second entity store",{"type":583,"tag":584,"props":1004,"children":1005},{},[1006,1010],{"type":583,"tag":601,"props":1007,"children":1008},{},[1009],{"type":588,"value":605},{"type":588,"value":1011}," The module relies on Convex query state and Nuxt payload reuse instead of adding a general entity cache.",{"type":583,"tag":584,"props":1013,"children":1014},{},[1015,1019],{"type":583,"tag":601,"props":1016,"children":1017},{},[1018],{"type":588,"value":615},{"type":588,"value":1020}," Another cache needs invalidation, identity partitioning, optimistic reconciliation, and a rebuild story.",{"type":583,"tag":584,"props":1022,"children":1023},{},[1024,1028],{"type":583,"tag":601,"props":1025,"children":1026},{},[1027],{"type":588,"value":625},{"type":588,"value":1029}," Server-backed data has one canonical owner.",{"type":583,"tag":584,"props":1031,"children":1032},{},[1033,1037],{"type":583,"tag":601,"props":1034,"children":1035},{},[1036],{"type":588,"value":635},{"type":588,"value":1038}," UI state and server data use different tools.",{"type":583,"tag":584,"props":1040,"children":1041},{},[1042,1046],{"type":583,"tag":601,"props":1043,"children":1044},{},[1045],{"type":588,"value":645},{"type":588,"value":1047}," Keep UI-only state in local refs or an application store.",{"title":1049,"searchDepth":1050,"depth":1050,"links":1051},"",4,[1052,1054,1055,1056,1058,1059,1060],{"id":593,"depth":1053,"text":596},2,{"id":665,"depth":1053,"text":668},{"id":723,"depth":1053,"text":726},{"id":781,"depth":1053,"text":1057},"useConvex() exposes a stable narrow handle",{"id":891,"depth":1053,"text":894},{"id":942,"depth":1053,"text":945},{"id":999,"depth":1053,"text":1002},"markdown","docs",{"source":1064,"path":1065,"stem":1066,"dir":1067,"extension":1068},"content","docs\u002F2.understand\u002F8.design-decisions.md","docs\u002F2.understand\u002F8.design-decisions","understand","md",{"requestedPath":111,"resolvedPath":111,"alternates":1070},[],{"requested":1072,"resolved":1073,"usedFallback":6},{"locale":8},{"locale":8},{"previous":1075,"next":1077},{"title":99,"id":100,"canonicalKey":101,"locale":8,"draft":6,"navigation":1076,"icon":103,"path":104},{"icon":103},{"title":113,"id":114,"canonicalKey":115,"locale":8,"draft":6,"navigation":1078,"icon":117,"path":118},{"icon":117},1784196940744]