Short answer
Add Performance Monitoring to see which screen or request is slow. Then check that each list query has a limit and pages through results with a cursor, that the Firestore location is near your users, and that slow buttons aren’t waiting on a Cloud Function cold start, which a minimum number of instances reduces. For slow writes to a busy collection, check for document IDs that increase in order.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why the app is slow, and the fix
01
A query loads every document
“By default, a query retrieves all documents that satisfy the query in ascending order by document ID.” Firebase, Order and limit data
A query with no limit returns every matching document, so a screen gets slower each time the collection grows. Add limit() to every list.
02
Long lists have no pagination
“Paginate queries by combining query cursors with the limit() method.” Firebase, Paginate data with query cursors
Load the first page, then the next one when the user scrolls, starting after the last document shown. Pass the last document snapshot, and leave out startAfter for the first page.
query(collection(db, 'orders'), orderBy('createdAt', 'desc'), startAfter(lastVisible), limit(20))03
The database is far from your users
“Far-reaching network hops are more error-prone and increase query latency.” Firebase, Best practices for Cloud Firestore
Every read and write travels to the database location chosen when it was created. Check it in the Firestore console against where your users are. The location can’t be changed once the database is created.
04
Cloud Functions start cold
“Setting a minimum number of instances reduces cold starts of your application.” Firebase, Tips and tricks
A function can start from scratch on a new instance, called a cold start, and heavy imports make that start slower. A minimum number of instances on the functions users wait for can reduce cold starts; check what idle instances cost before turning it on. Load only the modules each function needs.
05
Writes pile onto one hotspot
“Such sequential IDs can lead to hotspots that impact latency.” Firebase, Best practices for Cloud Firestore
Document IDs that increase in order, such as Customer1, Customer2, Customer3, can send writes to the same part of the database. Use automatic document IDs for busy collections.
06
Measure before you change things
“Firebase Performance Monitoring is a service that helps you to gain insight into the performance characteristics of your Apple, Android, and web apps.” Firebase, Firebase Performance Monitoring
Performance Monitoring records how long app startup, screens or page loads, and network requests take once you add its SDK, so you can fix the slowest one first.
Checked against the vendor’s docs on : Firebase docs: Best practices for Cloud Firestore; Firebase docs: Order and limit data; Firebase docs: Paginate data with query cursors; Firebase docs: Index types in Cloud Firestore; Firebase docs: Cloud Firestore locations; Firebase docs: Tips and tricks (Cloud Functions); Firebase docs: Performance Monitoring.
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. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: Firestore query requires an index · Firebase Functions timeout · Firebase bill spike · Supabase app slow