PageSourceSearch

https://stoker-website.web.app/assets/js/9564b8a5.385e93a2.js

js stoker-website.web.app collected 2026-10-03 12:37:20 UTC 4,210 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([["72"],{4839(e,t,i){i.r(t),i.d(t,{metadata:()=>o,default:()=>u,frontMatter:()=>s,contentTitle:()=>a,toc:()=>d,assets:()=>l});var o=JSON.parse('{"id":"advanced-google-cloud/Limitations","title":"Limitations","description":"These are current limitations of the Stoker Platform.","source":"@site/docs/advanced-google-cloud/Limitations.md","sourceDirName":"advanced-google-cloud","slug":"/advanced-google-cloud/Limitations","permalink":"/docs/advanced-google-cloud/Limitations","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"sidebar_position":5},"sidebar":"tutorialSidebar","previous":{"title":"Reporting","permalink":"/docs/advanced-google-cloud/Reporting"},"next":{"title":"Env Files- Back End Setup","permalink":"/docs/api-reference/Env Files- Back End Setup"}}'),n=i(1085),r=i(1184);let s={sidebar_position:5},a,l={},d=[{value:"Google Cloud / Firebase limitations",id:"google-cloud--firebase-limitations",level:2},{value:"Data migrations require downtime",id:"data-migrations-require-downtime",level:2},{value:"Write rate limitations",id:"write-rate-limitations",level:2}];function c(e){let t={a:"a",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"These are current limitations of the Stoker Platform."}),"\n",(0,n.jsx)(t.h2,{id:"google-cloud--firebase-limitations",children:"Google Cloud / Firebase limitations"}),"\n",(0,n.jsxs)(t.p,{children:["Stoker is subject to the ",(0,n.jsx)(t.a,{href:"https://firebase.google.com/docs/firestore/quotas",children:"limitations of Cloud Firestore"}),". However, we have built Stoker in a way that avoids many of these limitations. Additionally, we often warn you when limits are being approached or have been exceeded. It's our goal to provide you with the insights you need so that you don't hit unexpected limits."]}),"\n",(0,n.jsx)(t.h2,{id:"data-migrations-require-downtime",children:"Data migrations require downtime"}),"\n",(0,n.jsx)(t.p,{children:"Currently, if you need to migrate a projects's data, you'll need to put that project into maintenance mode. In future we may add support for zero-downtime migrations."}),"\n",(0,n.jsx)(t.p,{children:"You'll have to write code for data migrations yourself at this stage."}),"\n",(0,n.jsx)(t.h2,{id:"write-rate-limitations",children:"Write rate limitations"}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Limitation"}),(0,n.jsx)(t.th,{children:"Details"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"No support for high document write rates"}),(0,n.jsxs)(t.td,{children:["In Cloud Firestore, you can't update a single document at an unlimited rate. Firestore offers a solution using ",(0,n.jsx)(t.a,{href:"https://firebase.google.com/docs/firestore/solutions/counters",children:'"Distributed Counters"'}),", but we haven't implemented that solution into Stoker at this stage."]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"No support for high collection write rates for collections with sequential indexed values"}),(0,n.jsxs)(t.td,{children:["If a Firestore collection contains documents with sequential indexed values, Cloud Firestore limits the write rate to 500 writes per second. Firestore offers a solution using ",(0,n.jsx)(t.a,{href:"https://firebase.google.com/docs/firestore/solutions/shard-timestamp",children:'"Sharded Timestamps"'}),", but we haven't implemented that solution into Stoker at this stage."]})]})]})]})]})}function u(e={}){let{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},1184(e,t,i){i.d(t,{R:()=>s,x:()=>a});var o=i(4041);let n={},r=o.createContext(n);function s(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.