Short answer
Firestore’s get() tried the server, failed or timed out, and found nothing in the offline cache. Check that the firebaseConfig projectId matches a project with a Firestore database, and that nothing (an ad blocker, proxy or firewall) blocks firestore.googleapis.com. For first-load screens, a realtime listener (onSnapshot) delivers data once the connection arrives, where a one-off get() fails.
Why Firestore thinks it’s offline
01
The server didn’t answer and there was no cache
“On platforms with offline support, the client library will use the offline cache if the network is unavailable or if the request times out.” Firebase, Get data with Cloud Firestore
A get() falls back to the cache when the network fails or times out. On a first visit, or on the web where the cache is off by default, there is nothing there, so the call fails.
02
The config points at the wrong project or no database
A projectId from another project, a missing environment variable, or a project where the Firestore database was never created, all leave the client with no backend to reach. Check the config the live build actually uses.
03
A proxy, VPN or network blocks the connection
“Configures the SDK's underlying transport (WebChannel) to automatically detect if long-polling should be used.” Firebase, FirestoreSettings
Firestore’s web SDK keeps a long-lived connection open, which some proxies and corporate networks break. Recent versions detect this and switch to long-polling on their own; an older SDK, or the setting turned off, can leave the app stuck.
04
Web apps have no persistent offline cache by default
“For the web, offline persistence is disabled by default.” Firebase, Access data offline
On Android and iOS the cache persists by default, so a repeat visit can still show data. On the web, the cache lives only in memory for the session. To keep the last data between visits, initialize Firestore with initializeFirestore(app, { localCache: persistentLocalCache() }).
Checked against the vendor’s docs on : Firebase docs: Get data with Cloud Firestore (source options); Firebase docs: Access data offline; Firebase reference: FirestoreSettings.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
Related: Firebase Missing or insufficient permissions · Firestore quota exceeded · Firebase No Firebase App [DEFAULT] has been created · Firestore query requires an index