@pyric/cli 0.1.0-alpha.21 → 0.1.0-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assurance/.generated/conformance-verdicts.d.ts +170 -0
- package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
- package/dist/assurance/.generated/conformance-verdicts.js +170 -0
- package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.d.ts +1 -1
- package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js +1 -1
- package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts +1 -1
- package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
- package/dist/conformance/.generated/can-i-use.js +1 -1
- package/dist/conformance/.generated/can-i-use.js.map +1 -1
- package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
- package/dist/conformance/.generated/conformance-docs.js +1 -1
- package/dist/conformance/.generated/conformance-docs.js.map +1 -1
- package/dist/serve/site-ui/_astro/{app.DhAcImFD.js → app.CMmTxyhL.js} +1 -1
- package/dist/serve/site-ui/_astro/{app.BOr2kwae.js → app.DhALsVii.js} +12 -12
- package/dist/serve/site-ui/_astro/{seed.03a08f9t.js → seed.lywYbXZ0.js} +1 -1
- package/dist/serve/site-ui/auth/index.html +1 -1
- package/dist/serve/site-ui/docs/_rhythm/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +1 -1
- package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +1 -1
- package/dist/serve/site-ui/docs/ai-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/api-reference/index.html +1 -1
- package/dist/serve/site-ui/docs/app-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/auth-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/build/ai-logic/index.html +1 -1
- package/dist/serve/site-ui/docs/build/authentication/index.html +2 -2
- package/dist/serve/site-ui/docs/build/authentication.md +1 -1
- package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +4 -2
- package/dist/serve/site-ui/docs/build/cloud-firestore.md +4 -0
- package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +1 -1
- package/dist/serve/site-ui/docs/build/cloud-storage/index.html +1 -1
- package/dist/serve/site-ui/docs/build/realtime-database/index.html +1 -1
- package/dist/serve/site-ui/docs/conformance-scores/index.html +9 -1
- package/dist/serve/site-ui/docs/conformance-scores.md +8 -0
- package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/database-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/examples/chess/index.html +1 -1
- package/dist/serve/site-ui/docs/examples/index.html +1 -1
- package/dist/serve/site-ui/docs/firestore-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/firestore-flutter-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/firestore-kotlin-compat/index.html +319 -0
- package/dist/serve/site-ui/docs/firestore-kotlin-compat.md +344 -0
- package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +490 -0
- package/dist/serve/site-ui/docs/firestore-swift-compat.md +517 -0
- package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/backend-bundlers/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/flutter/index.html +98 -0
- package/dist/serve/site-ui/docs/get-started/flutter.md +105 -0
- package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/nextjs/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/start-building/index.html +1 -1
- package/dist/serve/site-ui/docs/get-started/vite/index.html +1 -1
- package/dist/serve/site-ui/docs/index.json +255 -0
- package/dist/serve/site-ui/docs/messaging-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +4 -3
- package/dist/serve/site-ui/docs/observe/resolve-runtime-status.md +3 -1
- package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +1 -1
- package/dist/serve/site-ui/docs/observe/switch-and-impersonate-identities/index.html +110 -0
- package/dist/serve/site-ui/docs/observe/switch-and-impersonate-identities.md +134 -0
- package/dist/serve/site-ui/docs/overview/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-auth-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-database-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-messaging-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ai-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-analytics-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-auth-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-assurance-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-bundler-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +3 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api.md +2 -0
- package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +3 -1
- package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api.md +2 -0
- package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-discover-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-register-app-bridge-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-remote-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-verify-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-firestore-lite-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-functions-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-performance-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-remote-config-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-sandbox-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +2 -2
- package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-auth-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-events-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-firestore-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-primitives-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-rtdb-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-rules-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-storage-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/pyric-ui-traffic-reference-api/index.html +1 -1
- package/dist/serve/site-ui/docs/reference/cli/index.html +1 -1
- package/dist/serve/site-ui/docs/rules-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +1 -1
- package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +1 -1
- package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +1 -1
- package/dist/serve/site-ui/docs/ship/test-in-node/index.html +1 -1
- package/dist/serve/site-ui/docs/storage-compat/index.html +1 -1
- package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +1 -1
- package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +1 -1
- package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +1 -1
- package/dist/serve/site-ui/docs/tutorial/index.html +1 -1
- package/dist/serve/site-ui/firestore/index.html +1 -1
- package/dist/serve/site-ui/llms.txt +4 -0
- package/dist/serve/site-ui/rtdb/index.html +1 -1
- package/dist/serve/site-ui/settings/index.html +1 -1
- package/dist/serve/site-ui/storage/index.html +1 -1
- package/dist/serve/site-ui/studio/index.html +1 -1
- package/dist/serve/site-ui/traffic/index.html +1 -1
- package/package.json +4 -4
- package/src/assurance/.generated/conformance-verdicts.ts +170 -0
- package/src/conformance/.generated/can-i-use-browser.ts +2 -2
- package/src/conformance/.generated/can-i-use.ts +2 -2
- package/src/conformance/.generated/conformance-docs.ts +1 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><title>Kotlin Cloud Firestore integration compatibility · Pyric Studio</title><link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg"><link rel="preconnect" href="https://use.typekit.net" crossorigin><link rel="stylesheet" href="https://use.typekit.net/jwb3ycu.css"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/index.UkCBr-_0.css">
|
|
2
|
+
<link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.Da5VLhW1.css">
|
|
3
|
+
<style>:root{--rhythm-para: .875rem;--rhythm-group: 1.5rem;--rhythm-subsection: 2.25rem;--rhythm-section: 3.25rem;--rhythm-list: calc(var(--rhythm-para) * .75)}.prose>*,.prose blockquote>*,.prose li>*,.prose .compat-stat>*{margin-block:0}.prose>*+*{margin-block-start:var(--rhythm-group)}.prose>*+h2{margin-block-start:var(--rhythm-section)}.prose>*+h3,.prose>*+h4{margin-block-start:var(--rhythm-subsection)}.prose>h1+*,.prose>h2+*,.prose>h3+*,.prose>h4+*{margin-block-start:var(--rhythm-para)}.prose>p+p{margin-block-start:var(--rhythm-para)}.prose>p+ul,.prose>p+ol,.prose>p+blockquote{margin-block-start:var(--rhythm-para)}.prose li+li{margin-block-start:var(--rhythm-list)}.prose li>ul,.prose li>ol{margin-block-start:var(--rhythm-list)}.prose li>*+*,.prose blockquote>*+*{margin-block-start:var(--rhythm-para)}
|
|
4
|
+
html{scrollbar-gutter:stable}
|
|
5
|
+
</style></head> <body> <header class="studio__chrome"> <div class="studio__bar"> <div class="studio__chrome-inner"> <nav class="studio__nav" aria-label="Site"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric">pyric</a> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a><a class="studio__nav-tab" href="/__pyric/ui/studio"> Studio </a> </nav> </div> </div> </header> <div class="docs-shell" data-astro-cid-mw7aashj> <details class="docs-nav-drawer" data-astro-cid-mw7aashj> <summary data-astro-cid-mw7aashj>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/backend-bundlers/"> Backend bundlers </a> </li><li> <a href="/__pyric/ui/docs/get-started/flutter/"> Flutter </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe & shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/switch-and-impersonate-identities/"> Impersonate & tenants </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" open> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/firestore-flutter-compat/"> Firestore · Flutter </a> </li><li> <a href="/__pyric/ui/docs/firestore-kotlin-compat/" aria-current="page"> Firestore · Kotlin </a> </li><li> <a href="/__pyric/ui/docs/firestore-swift-compat/"> Firestore · Swift </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group"> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-lite-reference-api/"> pyric/firestore/lite </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-check-reference-api/"> pyric/app-check </a> </li><li> <a href="/__pyric/ui/docs/pyric-functions-reference-api/"> pyric/functions </a> </li><li> <a href="/__pyric/ui/docs/pyric-analytics-reference-api/"> pyric/analytics </a> </li><li> <a href="/__pyric/ui/docs/pyric-performance-reference-api/"> pyric/performance </a> </li><li> <a href="/__pyric/ui/docs/pyric-remote-config-reference-api/"> pyric/remote-config </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-reference-api/"> pyric-admin </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bundler-reference-api/"> @pyric/cli/bundler </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/reference/cli/"> CLI </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/vite/"> Vite </a> </li><li> <a href="/__pyric/ui/docs/get-started/nextjs/"> Next.js </a> </li><li> <a href="/__pyric/ui/docs/get-started/backend-bundlers/"> Backend bundlers </a> </li><li> <a href="/__pyric/ui/docs/get-started/flutter/"> Flutter </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure & debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe & shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic & rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/resolve-runtime-status/"> Runtime status </a> </li><li> <a href="/__pyric/ui/docs/observe/switch-and-impersonate-identities/"> Impersonate & tenants </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship & test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance" open> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/firestore-flutter-compat/"> Firestore · Flutter </a> </li><li> <a href="/__pyric/ui/docs/firestore-kotlin-compat/" aria-current="page"> Firestore · Kotlin </a> </li><li> <a href="/__pyric/ui/docs/firestore-swift-compat/"> Firestore · Swift </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference"> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-lite-reference-api/"> pyric/firestore/lite </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-check-reference-api/"> pyric/app-check </a> </li><li> <a href="/__pyric/ui/docs/pyric-functions-reference-api/"> pyric/functions </a> </li><li> <a href="/__pyric/ui/docs/pyric-analytics-reference-api/"> pyric/analytics </a> </li><li> <a href="/__pyric/ui/docs/pyric-performance-reference-api/"> pyric/performance </a> </li><li> <a href="/__pyric/ui/docs/pyric-remote-config-reference-api/"> pyric/remote-config </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-reference-api/"> pyric-admin </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-next-reference-api/"> @pyric/cli/next </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bundler-reference-api/"> @pyric/cli/bundler </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-app-bridge-reference-api/"> @pyric/cli/register/app-bridge </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/reference/cli/"> CLI </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main" data-astro-cid-mw7aashj> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/conformance-scores/">Conformance</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">Firestore · Kotlin</span> </li> </ol> </nav> <article class="prose" data-astro-cid-mw7aashj> <!-- Generated from the conformance model (registry rows + surface contracts). Do not edit by hand; run bun run compat:generate. -->
|
|
6
|
+
<h1 id="kotlin-cloud-firestore-integration-compatibility">Kotlin Cloud Firestore integration compatibility</h1>
|
|
7
|
+
<div class="compat-stat">
|
|
8
|
+
<p class="compat-stat-surface">This page tracks an integration contract: unchanged Firebase code run through a Pyric runtime seam, so there is no separate Firebase public API to measure. The rows below are its signed behavior inventory.</p>
|
|
9
|
+
</div>
|
|
10
|
+
<h2 id="status-legend">Status legend</h2>
|
|
11
|
+
<div class="compat-key">
|
|
12
|
+
<span class="compat-key-item"><span class="compat-dot" data-status="ok"></span><strong>Conforming</strong> — Kotlin conformance test matches com.google.firebase.firestore specification</span>
|
|
13
|
+
<span class="compat-key-item"><span class="compat-dot" data-status="unverified"></span><strong>Unverified</strong> — com.google.firebase.firestore behavior not yet verified by conformance test</span>
|
|
14
|
+
</div>
|
|
15
|
+
<h2 id="firebasefirestore--instance--lifecycle"><code>FirebaseFirestore</code> — instance & lifecycle</h2>
|
|
16
|
+
<div class="compat-list">
|
|
17
|
+
<details class="compat-row" data-status="ok">
|
|
18
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.getInstance() / Firebase.firestore</code><span class="compat-sub"><span class="compat-behavior">Returns the default FirebaseFirestore instance for the default FirebaseApp.</span></span></span></summary>
|
|
19
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L59" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#1</code>.</div></div>
|
|
20
|
+
</details>
|
|
21
|
+
<details class="compat-row" data-status="ok">
|
|
22
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.getInstance(app, database) / Firebase.firestore(app, database)</code><span class="compat-sub"><span class="compat-behavior">Provides isolated FirebaseFirestore instances distinguished by FirebaseApp and database ID.</span></span></span></summary>
|
|
23
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L67" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#2</code>.</div></div>
|
|
24
|
+
</details>
|
|
25
|
+
<details class="compat-row" data-status="ok">
|
|
26
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.firestoreSettings</code><span class="compat-sub"><span class="compat-behavior">Configures host, sslEnabled, persistenceEnabled, and cacheSizeBytes via FirebaseFirestoreSettings.</span></span></span></summary>
|
|
27
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L79" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#3</code>.</div></div>
|
|
28
|
+
</details>
|
|
29
|
+
<details class="compat-row" data-status="ok">
|
|
30
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.document(path)</code><span class="compat-sub"><span class="compat-behavior">Instantiates a DocumentReference pointing to the slash-delimited path.</span></span></span></summary>
|
|
31
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L92" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#4</code>.</div></div>
|
|
32
|
+
</details>
|
|
33
|
+
<details class="compat-row" data-status="ok">
|
|
34
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.collection(path)</code><span class="compat-sub"><span class="compat-behavior">Instantiates a CollectionReference pointing to the slash-delimited path.</span></span></span></summary>
|
|
35
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L101" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#5</code>.</div></div>
|
|
36
|
+
</details>
|
|
37
|
+
<details class="compat-row" data-status="ok">
|
|
38
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.collectionGroup(collectionId)</code><span class="compat-sub"><span class="compat-behavior">Instantiates a Query spanning all collections with the specified collectionId.</span></span></span></summary>
|
|
39
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L110" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#6</code>.</div></div>
|
|
40
|
+
</details>
|
|
41
|
+
<details class="compat-row" data-status="ok">
|
|
42
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.batch()</code><span class="compat-sub"><span class="compat-behavior">Instantiates a WriteBatch for atomic batched mutations.</span></span></span></summary>
|
|
43
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L119" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#7</code>.</div></div>
|
|
44
|
+
</details>
|
|
45
|
+
<details class="compat-row" data-status="ok">
|
|
46
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.runTransaction(handler)</code><span class="compat-sub"><span class="compat-behavior">Runs interactive transaction handler with automatic conflict retries up to TransactionOptions.maxAttempts.</span></span></span></summary>
|
|
47
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L125" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#8</code>.</div></div>
|
|
48
|
+
</details>
|
|
49
|
+
<details class="compat-row" data-status="unverified">
|
|
50
|
+
<summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.clearPersistence()</code><span class="compat-sub"><span class="compat-behavior">Clears offline client persistence cache when no active listeners exist.</span></span></span></summary>
|
|
51
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification; unverified locally.</div></div>
|
|
52
|
+
</details>
|
|
53
|
+
<details class="compat-row" data-status="unverified">
|
|
54
|
+
<summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.enableNetwork() / disableNetwork()</code><span class="compat-sub"><span class="compat-behavior">Toggles client network connectivity to simulate offline operation.</span></span></span></summary>
|
|
55
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification; unverified locally.</div></div>
|
|
56
|
+
</details>
|
|
57
|
+
<details class="compat-row" data-status="ok">
|
|
58
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.terminate()</code><span class="compat-sub"><span class="compat-behavior">Terminates the Firestore client, closing network connections and unsubscribing active snapshot flows.</span></span></span></summary>
|
|
59
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L146" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#11</code>.</div></div>
|
|
60
|
+
</details>
|
|
61
|
+
<details class="compat-row" data-status="unverified">
|
|
62
|
+
<summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.waitForPendingWrites()</code><span class="compat-sub"><span class="compat-behavior">Resolves when all locally initiated writes have been committed by the server.</span></span></span></summary>
|
|
63
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification; unverified locally.</div></div>
|
|
64
|
+
</details>
|
|
65
|
+
<details class="compat-row" data-status="unverified">
|
|
66
|
+
<summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.addSnapshotsInSyncListener(runnable)</code><span class="compat-sub"><span class="compat-behavior">Notifies when all active snapshot listeners are in sync with server state.</span></span></span></summary>
|
|
67
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification; unverified locally.</div></div>
|
|
68
|
+
</details>
|
|
69
|
+
</div>
|
|
70
|
+
<h2 id="documentreference--document-operations"><code>DocumentReference</code> — document operations</h2>
|
|
71
|
+
<div class="compat-list">
|
|
72
|
+
<details class="compat-row" data-status="ok">
|
|
73
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.get(source)</code><span class="compat-sub"><span class="compat-behavior">Reads a single document snapshot from server or cache based on Source.</span></span></span></summary>
|
|
74
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L167" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#14</code>.</div></div>
|
|
75
|
+
</details>
|
|
76
|
+
<details class="compat-row" data-status="ok">
|
|
77
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.set(data)</code><span class="compat-sub"><span class="compat-behavior">Overwrites target document completely with provided map or POJO payload.</span></span></span></summary>
|
|
78
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L176" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#15</code>.</div></div>
|
|
79
|
+
</details>
|
|
80
|
+
<details class="compat-row" data-status="ok">
|
|
81
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.set(data, SetOptions.merge())</code><span class="compat-sub"><span class="compat-behavior">Merges payload fields into existing document without overwriting unspecified fields.</span></span></span></summary>
|
|
82
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L183" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#16</code>.</div></div>
|
|
83
|
+
</details>
|
|
84
|
+
<details class="compat-row" data-status="ok">
|
|
85
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.update(data)</code><span class="compat-sub"><span class="compat-behavior">Updates specified fields in an existing document; fails if document does not exist.</span></span></span></summary>
|
|
86
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L191" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#17</code>.</div></div>
|
|
87
|
+
</details>
|
|
88
|
+
<details class="compat-row" data-status="ok">
|
|
89
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.delete()</code><span class="compat-sub"><span class="compat-behavior">Deletes document at reference path from Firestore database.</span></span></span></summary>
|
|
90
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L198" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#18</code>.</div></div>
|
|
91
|
+
</details>
|
|
92
|
+
<details class="compat-row" data-status="ok">
|
|
93
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.collection(path)</code><span class="compat-sub"><span class="compat-behavior">Returns a child CollectionReference nested under this document.</span></span></span></summary>
|
|
94
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L205" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#19</code>.</div></div>
|
|
95
|
+
</details>
|
|
96
|
+
<details class="compat-row" data-status="ok">
|
|
97
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference.snapshots(metadataChanges)</code><span class="compat-sub"><span class="compat-behavior">Returns a Coroutine Flow emitting DocumentSnapshot on document changes.</span></span></span></summary>
|
|
98
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L213" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#20</code>.</div></div>
|
|
99
|
+
</details>
|
|
100
|
+
</div>
|
|
101
|
+
<h2 id="query--filters--constraints"><code>Query</code> — filters & constraints</h2>
|
|
102
|
+
<div class="compat-list">
|
|
103
|
+
<details class="compat-row" data-status="ok">
|
|
104
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereEqualTo(field, value)</code><span class="compat-sub"><span class="compat-behavior">Filters documents matching exact field equality.</span></span></span></summary>
|
|
105
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L223" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#21</code>.</div></div>
|
|
106
|
+
</details>
|
|
107
|
+
<details class="compat-row" data-status="ok">
|
|
108
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereNotEqualTo(field, value)</code><span class="compat-sub"><span class="compat-behavior">Filters documents where field does not equal specified value.</span></span></span></summary>
|
|
109
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L230" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#22</code>.</div></div>
|
|
110
|
+
</details>
|
|
111
|
+
<details class="compat-row" data-status="ok">
|
|
112
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereLessThan / whereLessThanOrEqualTo / whereGreaterThan / whereGreaterThanOrEqualTo</code><span class="compat-sub"><span class="compat-behavior">Applies relational range comparison filters on field value.</span></span></span></summary>
|
|
113
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L237" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#23</code>.</div></div>
|
|
114
|
+
</details>
|
|
115
|
+
<details class="compat-row" data-status="ok">
|
|
116
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereArrayContains(field, value)</code><span class="compat-sub"><span class="compat-behavior">Filters documents where array field contains the specified element.</span></span></span></summary>
|
|
117
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L244" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#24</code>.</div></div>
|
|
118
|
+
</details>
|
|
119
|
+
<details class="compat-row" data-status="ok">
|
|
120
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereArrayContainsAny(field, values)</code><span class="compat-sub"><span class="compat-behavior">Filters documents where array field contains any element from the values list.</span></span></span></summary>
|
|
121
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L251" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#25</code>.</div></div>
|
|
122
|
+
</details>
|
|
123
|
+
<details class="compat-row" data-status="ok">
|
|
124
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereIn(field, values)</code><span class="compat-sub"><span class="compat-behavior">Filters documents where field value matches any element in values list (IN query).</span></span></span></summary>
|
|
125
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L258" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#26</code>.</div></div>
|
|
126
|
+
</details>
|
|
127
|
+
<details class="compat-row" data-status="ok">
|
|
128
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.whereNotIn(field, values)</code><span class="compat-sub"><span class="compat-behavior">Filters documents where field value matches no element in values list (NOT IN query).</span></span></span></summary>
|
|
129
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L265" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#27</code>.</div></div>
|
|
130
|
+
</details>
|
|
131
|
+
<details class="compat-row" data-status="ok">
|
|
132
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.where(filter)</code><span class="compat-sub"><span class="compat-behavior">Evaluates composite boolean expressions constructed via Filter.and(...) or Filter.or(...).</span></span></span></summary>
|
|
133
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L272" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#28</code>.</div></div>
|
|
134
|
+
</details>
|
|
135
|
+
<details class="compat-row" data-status="ok">
|
|
136
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.orderBy(field, direction)</code><span class="compat-sub"><span class="compat-behavior">Orders query results by field ascending or descending.</span></span></span></summary>
|
|
137
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L279" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#29</code>.</div></div>
|
|
138
|
+
</details>
|
|
139
|
+
<details class="compat-row" data-status="ok">
|
|
140
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.limit(limit)</code><span class="compat-sub"><span class="compat-behavior">Limits maximum number of matched documents returned.</span></span></span></summary>
|
|
141
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L286" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#30</code>.</div></div>
|
|
142
|
+
</details>
|
|
143
|
+
<details class="compat-row" data-status="ok">
|
|
144
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.limitToLast(limit)</code><span class="compat-sub"><span class="compat-behavior">Limits query results to the last N documents relative to query ordering.</span></span></span></summary>
|
|
145
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L293" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#31</code>.</div></div>
|
|
146
|
+
</details>
|
|
147
|
+
<details class="compat-row" data-status="ok">
|
|
148
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.startAt(values) / startAfter(values)</code><span class="compat-sub"><span class="compat-behavior">Positions starting cursor boundary using field values.</span></span></span></summary>
|
|
149
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L301" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#32</code>.</div></div>
|
|
150
|
+
</details>
|
|
151
|
+
<details class="compat-row" data-status="ok">
|
|
152
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.endAt(values) / endBefore(values)</code><span class="compat-sub"><span class="compat-behavior">Positions ending cursor boundary using field values.</span></span></span></summary>
|
|
153
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L308" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#33</code>.</div></div>
|
|
154
|
+
</details>
|
|
155
|
+
<details class="compat-row" data-status="ok">
|
|
156
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.startAt(documentSnapshot) / endAt(documentSnapshot)</code><span class="compat-sub"><span class="compat-behavior">Positions query pagination cursors using DocumentSnapshot instances.</span></span></span></summary>
|
|
157
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L315" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#34</code>.</div></div>
|
|
158
|
+
</details>
|
|
159
|
+
<details class="compat-row" data-status="ok">
|
|
160
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.get(source)</code><span class="compat-sub"><span class="compat-behavior">Executes query and returns QuerySnapshot containing matched documents.</span></span></span></summary>
|
|
161
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L322" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#35</code>.</div></div>
|
|
162
|
+
</details>
|
|
163
|
+
<details class="compat-row" data-status="ok">
|
|
164
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Query.snapshots(metadataChanges)</code><span class="compat-sub"><span class="compat-behavior">Returns a Coroutine Flow emitting QuerySnapshot upon matching changes.</span></span></span></summary>
|
|
165
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L329" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#36</code>.</div></div>
|
|
166
|
+
</details>
|
|
167
|
+
</div>
|
|
168
|
+
<h2 id="collectionreference--collection-operations"><code>CollectionReference</code> — collection operations</h2>
|
|
169
|
+
<div class="compat-list">
|
|
170
|
+
<details class="compat-row" data-status="ok">
|
|
171
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">CollectionReference.document([path])</code><span class="compat-sub"><span class="compat-behavior">Returns DocumentReference under collection; auto-generates 20-char ID if path omitted.</span></span></span></summary>
|
|
172
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L339" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#37</code>.</div></div>
|
|
173
|
+
</details>
|
|
174
|
+
<details class="compat-row" data-status="ok">
|
|
175
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">CollectionReference.add(data)</code><span class="compat-sub"><span class="compat-behavior">Generates auto-ID, writes document data, and returns DocumentReference.</span></span></span></summary>
|
|
176
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L350" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#38</code>.</div></div>
|
|
177
|
+
</details>
|
|
178
|
+
</div>
|
|
179
|
+
<h2 id="snapshots--metadata">Snapshots & metadata</h2>
|
|
180
|
+
<div class="compat-list">
|
|
181
|
+
<details class="compat-row" data-status="ok">
|
|
182
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentSnapshot.exists()</code><span class="compat-sub"><span class="compat-behavior">Reports true if document is present in Firestore; false if absent.</span></span></span></summary>
|
|
183
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L360" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#39</code>.</div></div>
|
|
184
|
+
</details>
|
|
185
|
+
<details class="compat-row" data-status="ok">
|
|
186
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentSnapshot.getData()</code><span class="compat-sub"><span class="compat-behavior">Returns revived Map<String, Object> containing document field data.</span></span></span></summary>
|
|
187
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L367" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#40</code>.</div></div>
|
|
188
|
+
</details>
|
|
189
|
+
<details class="compat-row" data-status="ok">
|
|
190
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentSnapshot.get(field)</code><span class="compat-sub"><span class="compat-behavior">Extracts single field value supporting dot notation or FieldPath instances.</span></span></span></summary>
|
|
191
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L377" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#41</code>.</div></div>
|
|
192
|
+
</details>
|
|
193
|
+
<details class="compat-row" data-status="ok">
|
|
194
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentSnapshot.toObject<T>()</code><span class="compat-sub"><span class="compat-behavior">Deserializes snapshot into typed data object via reified extension function.</span></span></span></summary>
|
|
195
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L385" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#42</code>.</div></div>
|
|
196
|
+
</details>
|
|
197
|
+
<details class="compat-row" data-status="ok">
|
|
198
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">SnapshotMetadata (hasPendingWrites, isFromCache)</code><span class="compat-sub"><span class="compat-behavior">Exposes local cache and uncommitted pending write status on snapshots.</span></span></span></summary>
|
|
199
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L395" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#43</code>.</div></div>
|
|
200
|
+
</details>
|
|
201
|
+
<details class="compat-row" data-status="ok">
|
|
202
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">QuerySnapshot.documents / documentChanges</code><span class="compat-sub"><span class="compat-behavior">Provides ordered List<DocumentSnapshot> and List<DocumentChange> detailing change types.</span></span></span></summary>
|
|
203
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L405" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#44</code>.</div></div>
|
|
204
|
+
</details>
|
|
205
|
+
</div>
|
|
206
|
+
<h2 id="writebatch--atomic-batches"><code>WriteBatch</code> — atomic batches</h2>
|
|
207
|
+
<div class="compat-list">
|
|
208
|
+
<details class="compat-row" data-status="ok">
|
|
209
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">WriteBatch.set(documentReference, data, options)</code><span class="compat-sub"><span class="compat-behavior">Enqueues set or merge operation into atomic mutation batch.</span></span></span></summary>
|
|
210
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L416" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#45</code>.</div></div>
|
|
211
|
+
</details>
|
|
212
|
+
<details class="compat-row" data-status="ok">
|
|
213
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">WriteBatch.update(documentReference, data)</code><span class="compat-sub"><span class="compat-behavior">Enqueues update operation into atomic mutation batch.</span></span></span></summary>
|
|
214
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L425" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#46</code>.</div></div>
|
|
215
|
+
</details>
|
|
216
|
+
<details class="compat-row" data-status="ok">
|
|
217
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">WriteBatch.delete(documentReference)</code><span class="compat-sub"><span class="compat-behavior">Enqueues delete operation into atomic mutation batch.</span></span></span></summary>
|
|
218
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L434" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#47</code>.</div></div>
|
|
219
|
+
</details>
|
|
220
|
+
<details class="compat-row" data-status="ok">
|
|
221
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">WriteBatch.commit()</code><span class="compat-sub"><span class="compat-behavior">Atomically commits all enqueued mutations across multiple documents.</span></span></span></summary>
|
|
222
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L443" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#48</code>.</div></div>
|
|
223
|
+
</details>
|
|
224
|
+
</div>
|
|
225
|
+
<h2 id="transaction--interactive-transactions"><code>Transaction</code> — interactive transactions</h2>
|
|
226
|
+
<div class="compat-list">
|
|
227
|
+
<details class="compat-row" data-status="ok">
|
|
228
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Transaction.get(documentReference)</code><span class="compat-sub"><span class="compat-behavior">Reads document snapshot within transaction context and acquires read lock.</span></span></span></summary>
|
|
229
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L454" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#49</code>.</div></div>
|
|
230
|
+
</details>
|
|
231
|
+
<details class="compat-row" data-status="ok">
|
|
232
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Transaction.set(documentReference, data, options)</code><span class="compat-sub"><span class="compat-behavior">Enqueues transactional set mutation to be committed on handler completion.</span></span></span></summary>
|
|
233
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L462" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#50</code>.</div></div>
|
|
234
|
+
</details>
|
|
235
|
+
<details class="compat-row" data-status="ok">
|
|
236
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Transaction.update(documentReference, data)</code><span class="compat-sub"><span class="compat-behavior">Enqueues transactional update mutation to be committed on handler completion.</span></span></span></summary>
|
|
237
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L471" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#51</code>.</div></div>
|
|
238
|
+
</details>
|
|
239
|
+
<details class="compat-row" data-status="ok">
|
|
240
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Transaction.delete(documentReference)</code><span class="compat-sub"><span class="compat-behavior">Enqueues transactional delete mutation to be committed on handler completion.</span></span></span></summary>
|
|
241
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L480" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#52</code>.</div></div>
|
|
242
|
+
</details>
|
|
243
|
+
<details class="compat-row" data-status="unverified">
|
|
244
|
+
<summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">Transaction retry mechanism</code><span class="compat-sub"><span class="compat-behavior">Catches optimistic locking conflicts and re-executes handler up to maxAttempts.</span></span></span></summary>
|
|
245
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification; unverified locally.</div></div>
|
|
246
|
+
</details>
|
|
247
|
+
</div>
|
|
248
|
+
<h2 id="fieldvalue--sentinels--transformations"><code>FieldValue</code> — sentinels & transformations</h2>
|
|
249
|
+
<div class="compat-list">
|
|
250
|
+
<details class="compat-row" data-status="ok">
|
|
251
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FieldValue.serverTimestamp()</code><span class="compat-sub"><span class="compat-behavior">Encodes sentinel replaced by server commit timestamp during write.</span></span></span></summary>
|
|
252
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L497" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#54</code>.</div></div>
|
|
253
|
+
</details>
|
|
254
|
+
<details class="compat-row" data-status="ok">
|
|
255
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FieldValue.delete()</code><span class="compat-sub"><span class="compat-behavior">Encodes sentinel that deletes the target field during document update.</span></span></span></summary>
|
|
256
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L503" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#55</code>.</div></div>
|
|
257
|
+
</details>
|
|
258
|
+
<details class="compat-row" data-status="ok">
|
|
259
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FieldValue.increment(value)</code><span class="compat-sub"><span class="compat-behavior">Encodes numeric transformation operand that atomically increments field value.</span></span></span></summary>
|
|
260
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L509" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#56</code>.</div></div>
|
|
261
|
+
</details>
|
|
262
|
+
<details class="compat-row" data-status="ok">
|
|
263
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FieldValue.arrayUnion(elements)</code><span class="compat-sub"><span class="compat-behavior">Encodes transformation adding elements to array field if absent.</span></span></span></summary>
|
|
264
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L516" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#57</code>.</div></div>
|
|
265
|
+
</details>
|
|
266
|
+
<details class="compat-row" data-status="ok">
|
|
267
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">FieldValue.arrayRemove(elements)</code><span class="compat-sub"><span class="compat-behavior">Encodes transformation removing matching elements from array field.</span></span></span></summary>
|
|
268
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L522" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#58</code>.</div></div>
|
|
269
|
+
</details>
|
|
270
|
+
</div>
|
|
271
|
+
<h2 id="data-types--value-codecs">Data types & value codecs</h2>
|
|
272
|
+
<div class="compat-list">
|
|
273
|
+
<details class="compat-row" data-status="ok">
|
|
274
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Timestamp codec</code><span class="compat-sub"><span class="compat-behavior">Serializes and revives Timestamp preserving seconds and nanoseconds across bridge wire format.</span></span></span></summary>
|
|
275
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L530" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#59</code>.</div></div>
|
|
276
|
+
</details>
|
|
277
|
+
<details class="compat-row" data-status="ok">
|
|
278
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">GeoPoint codec</code><span class="compat-sub"><span class="compat-behavior">Serializes and revives GeoPoint coordinates (latitude, longitude) over WebSocket bridge.</span></span></span></summary>
|
|
279
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L540" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#60</code>.</div></div>
|
|
280
|
+
</details>
|
|
281
|
+
<details class="compat-row" data-status="ok">
|
|
282
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Blob codec</code><span class="compat-sub"><span class="compat-behavior">Serializes byte arrays to base64 bridge wire format and revives them as Blob.</span></span></span></summary>
|
|
283
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L550" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#61</code>.</div></div>
|
|
284
|
+
</details>
|
|
285
|
+
<details class="compat-row" data-status="ok">
|
|
286
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">DocumentReference codec</code><span class="compat-sub"><span class="compat-behavior">Encodes and decodes DocumentReference values stored within document fields.</span></span></span></summary>
|
|
287
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L558" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#62</code>.</div></div>
|
|
288
|
+
</details>
|
|
289
|
+
<details class="compat-row" data-status="ok">
|
|
290
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">Nested Map and List collections</code><span class="compat-sub"><span class="compat-behavior">Deeply encodes and revives recursive nested Maps and Lists containing mixed primitives and sentinels.</span></span></span></summary>
|
|
291
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L566" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#63</code>.</div></div>
|
|
292
|
+
</details>
|
|
293
|
+
</div>
|
|
294
|
+
<h2 id="aggregations--advanced-queries">Aggregations & advanced queries</h2>
|
|
295
|
+
<div class="compat-list">
|
|
296
|
+
<details class="compat-row" data-status="ok">
|
|
297
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">AggregateQuery.count()</code><span class="compat-sub"><span class="compat-behavior">Returns count of matched documents without pulling full document payloads.</span></span></span></summary>
|
|
298
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L578" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#64</code>.</div></div>
|
|
299
|
+
</details>
|
|
300
|
+
<details class="compat-row" data-status="ok">
|
|
301
|
+
<summary class="compat-line"><span class="compat-dot" data-status="ok" role="img" aria-label="Conforming" title="Conforming"></span><span class="compat-main"><code class="compat-api">AggregateQuery.aggregate(sum, average)</code><span class="compat-sub"><span class="compat-behavior">Computes server-side numeric sum and average across matched query documents.</span></span></span></summary>
|
|
302
|
+
<div class="compat-evidence"><div class="compat-probe">com.google.firebase.firestore specification. Test: <a href="https://github.com/davideast/pyric/blob/main/packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt#L586" target="_blank" rel="noopener noreferrer"><code>packages/kt-client/src/test/kotlin/dev/pyric/firestore/ConformanceTest.kt</code></a> assertion set <code>firestore-kotlin#65</code>.</div></div>
|
|
303
|
+
</details>
|
|
304
|
+
</div>
|
|
305
|
+
<h2 id="current-gaps">Current gaps</h2>
|
|
306
|
+
<h3 id="unverified">Unverified</h3>
|
|
307
|
+
<p>Tracked behavior whose available evidence does not yet establish the production result.</p>
|
|
308
|
+
<div class="compat-list">
|
|
309
|
+
<details class="compat-row" data-status="unverified"><summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.clearPersistence()</code><span class="compat-sub"><span class="compat-behavior">Clears offline client persistence cache when no active listeners exist.</span></span></span></summary>
|
|
310
|
+
<div class="compat-evidence"><div class="compat-note">com.google.firebase.firestore specification; unverified locally.</div></div></details>
|
|
311
|
+
<details class="compat-row" data-status="unverified"><summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.enableNetwork() / disableNetwork()</code><span class="compat-sub"><span class="compat-behavior">Toggles client network connectivity to simulate offline operation.</span></span></span></summary>
|
|
312
|
+
<div class="compat-evidence"><div class="compat-note">com.google.firebase.firestore specification; unverified locally.</div></div></details>
|
|
313
|
+
<details class="compat-row" data-status="unverified"><summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.waitForPendingWrites()</code><span class="compat-sub"><span class="compat-behavior">Resolves when all locally initiated writes have been committed by the server.</span></span></span></summary>
|
|
314
|
+
<div class="compat-evidence"><div class="compat-note">com.google.firebase.firestore specification; unverified locally.</div></div></details>
|
|
315
|
+
<details class="compat-row" data-status="unverified"><summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">FirebaseFirestore.addSnapshotsInSyncListener(runnable)</code><span class="compat-sub"><span class="compat-behavior">Notifies when all active snapshot listeners are in sync with server state.</span></span></span></summary>
|
|
316
|
+
<div class="compat-evidence"><div class="compat-note">com.google.firebase.firestore specification; unverified locally.</div></div></details>
|
|
317
|
+
<details class="compat-row" data-status="unverified"><summary class="compat-line"><span class="compat-dot" data-status="unverified" role="img" aria-label="Unverified" title="Unverified"></span><span class="compat-main"><code class="compat-api">Transaction retry mechanism</code><span class="compat-sub"><span class="compat-behavior">Catches optimistic locking conflicts and re-executes handler up to maxAttempts.</span></span></span></summary>
|
|
318
|
+
<div class="compat-evidence"><div class="compat-note">com.google.firebase.firestore specification; unverified locally.</div></div></details>
|
|
319
|
+
</div> </article> </main> <aside class="doc-toc" aria-label="On this page" data-astro-cid-mw7aashj> <h2 class="doc-toc-heading" data-astro-cid-mw7aashj>On this page</h2> <ul data-astro-cid-mw7aashj> <li data-depth="2" data-astro-cid-mw7aashj> <a href="#status-legend" data-astro-cid-mw7aashj>Status legend</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#firebasefirestore--instance--lifecycle" data-astro-cid-mw7aashj>FirebaseFirestore — instance & lifecycle</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#documentreference--document-operations" data-astro-cid-mw7aashj>DocumentReference — document operations</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#query--filters--constraints" data-astro-cid-mw7aashj>Query — filters & constraints</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#collectionreference--collection-operations" data-astro-cid-mw7aashj>CollectionReference — collection operations</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#snapshots--metadata" data-astro-cid-mw7aashj>Snapshots & metadata</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#writebatch--atomic-batches" data-astro-cid-mw7aashj>WriteBatch — atomic batches</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#transaction--interactive-transactions" data-astro-cid-mw7aashj>Transaction — interactive transactions</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#fieldvalue--sentinels--transformations" data-astro-cid-mw7aashj>FieldValue — sentinels & transformations</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#data-types--value-codecs" data-astro-cid-mw7aashj>Data types & value codecs</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#aggregations--advanced-queries" data-astro-cid-mw7aashj>Aggregations & advanced queries</a> </li><li data-depth="2" data-astro-cid-mw7aashj> <a href="#current-gaps" data-astro-cid-mw7aashj>Current gaps</a> </li><li data-depth="3" data-astro-cid-mw7aashj> <a href="#unverified" data-astro-cid-mw7aashj>Unverified</a> </li> </ul> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body></html>
|