Skip to main content

See your Firestore reads before your bill explodes.

ReadMeter makes invisible Firestore reads visible during development, so you can catch n+1 query patterns and hidden document fetches before traffic turns them into a bill explosion.

Loading interactive demo...

Saw how it works? Get ReadMeter.

Get ReadMeter — $9 (one-time)

Most Firestore cost problems aren't caused by you.

They are caused by invisible behavior.

In Development

Safe

Traffic profile

1 User

Small Data
Total Reads: 80
  • You are one user
  • Datasets are small

Everything looks fine.

In Production

Warning

Traffic profile

10,000 Users

Real-world Scaling
Total Reads: 800,000
  • Every page load multiplies
  • Queries run more than expected

The bill jumps

The Visibility Gap - ReadMeter bridges it.

The bill jump is not linear. It is abrupt.

Cost
Firestore free tier
1
5
20
80
250
800
The Bill Explodes Here
2.5k
Traffic / Scale (Users)

N+1 Queries

We catch this

Looping requests that multiply with your data.

Over-fetching

We catch this

Downloading entire objects for just one field.

Unnecessary Re-renders

We catch this

UI triggers that silent-fire duplicate reads.

Firebase shows totals — not causes.

ReadMeter shows the causes while you’re building.

Works with your stack

Works with your favorite frameworks

Next.js

Next.js

Verified

SSR Compatible

Nuxt

Nuxt

Full Support

REST/proxy

Works with Nuxt Hooks

React

React

Verified

Works with React Hooks

Vite

Vite

Verified

Works with Vite Plugins

Angular

Angular

Compatible

Installer adds the widget to your HTML entry (e.g. src/index.html).

Vue

Vue

Compatible

Most Vue apps: follow our Vite guide. The bundled recordRead composable ships with Nuxt only.

Firestore bills don't grow gradually. They jump.

Firestore charges per document read, not per query. A page that looks harmless in development can become expensive once real users start loading it.

Data is taken from a personal project that uses all firebase services.

ReadMeter exists to make those patterns visible early.

Get ReadMeter — $9

One-time license · One device (non-transferable) · Dev-only · Unlimited projects · Updates included

CASE STUDY: TRAINING APP

2,000 learners, ~375 online today—each screen is a cost pattern

Imagine a company training app: 2,000 people are registered, and on a normal weekday about 375 sign in. They open their dashboard, watch a module, take a quiz, then hit the leaderboard and refresh to see if their score moved. It all feels routine—but every step can mean many Firestore document reads, multiplied by everyone who takes that path.

Solution that works

In development, this screen would have shown 180 reads. Would you have caught it?

What it shows:

  • Know how many reads a page triggers before users arrive
  • Find the functions causing the most reads
  • See patterns that may scale badly with traffic
  • Copy a ready-made prompt from the widget to your AI editor when you want help fixing a hotspot
  • Track read history locally and export JSON for reporting or analysis

All visible on the page while you build — plus local history and JSON export.

Get ReadMeter — $9
🔒localhost:3000/dashboard
ReadMeter

Counts are Firestore document reads from the client SDK in this dev session (not billing-accurate).

This route
Read source
loadUsers()312 reads · Executed 6×
Collection: users
Triggered on every render.
Suggestion: This runs many times. Use memoization or a single fetch.
If users load this page:
312,000 document reads
≈ $0.19–$0.37 (estimate)
Reads scale with traffic.
Rough dev projection — production caching, offline persistence, and traffic patterns differ.
What this means

At 1K users this could add about $0.19–$0.37/month.

This can make the page feel slower on load.

Reads scale with traffic—cost and load will grow as more users hit this page.

ReadMeter identified something worth checking — paste in your AI agent to investigate.

Prompt (copy below)
Firestore read hotspot: loadUsers() causes 312 reads per page load (triggered on every render).

Page/route: /

Caller: loadUsers() (collection: users).

Impact: At 1K users this could add about $0.19–$0.37/month. Reads scale with traffic—cost and load will grow as more users hit this page.

Task:
1) Locate: Use the page/route (and title, if present) above to find the right entry file for this view (page, layout, route loader, or parent shell), then trace to the Firestore access for collection "users". Prioritize the call path hinted by: loadUsers().
2) Diagnose: 6 execution(s) this load — often re-renders, unstable hook deps, or a fetch invoked from render/hot paths. ReadMeter attributes ~312 document read(s) here.
3) Remediate: Consolidate so Firestore runs once per navigation or meaningful invalidation: move reads out of render, stabilize hook/effect dependencies, dedupe with context or a module singleton, or use React Query/SWR with a single stable query key and appropriate staleTime.
4) Deliver: Name exact files/functions to change, show the revised query or data flow (limits, where/orderBy + indexes, cursors, cache keys/TTL, or server aggregation), how to verify fewer reads (ReadMeter reload, emulator, or usage metrics), and any UX or staleness tradeoffs.
By collection
users/dashboard312
High risk
No dashboards.
No Firebase console.
No production setup.

Beyond a simple counter

Trace where reads come from, generate AI-ready fixes, and track local history while you build.

Deep Trace

See exactly which function caused each read

Pinpoint the hot path fast: route, caller, executions, and the collection that scales your bill.

Read Source
loadDashboardFeed()240 reads · Executed 6x
Collection: posts
Suggestion: Batch nested queries and cache hydrated feed chunks.

AI-Fix

Turn read spikes into actionable prompts

Copy a context-rich prompt to Cursor or Claude with offender details and optimization hints.

Prompt my AI agent:
Refactor loadDashboardFeed() in /dashboard:
- It executes 6x and triggers 240 reads
- Batch post+author lookups
- Add cache layer for repeated renders

Local History

Track read trends across your dev session

Compare routes over time without external dashboards or production instrumentation.

/dashboard312 reads
/feed188 reads
/profile80 reads

JSON Export

Export evidence for reviews and reports

Save route-level read data as JSON so you or your team can diff, audit, and discuss optimizations with context.

{
  "route": "/dashboard",
  "totalReads": 312,
  "worstOffender": "loadDashboardFeed()",
  "collection": "posts"
}

The root causes

Firestore bills per document read — not per query. That’s why cost can jump unexpectedly.

Most developers only see the total after a bill arrives — not the individual patterns that caused it.

What ReadMeter is (and isn't)

ReadMeter is

tool scope
  • a development-time visibility tool
  • early warning for scaling issues
  • simple and focused

ReadMeter is not

out of scope
  • a billing calculator
  • production monitoring
  • a guarantee of cost reduction

One Fixed Price

One project: monthly Firestore costs dropped from ~$190 to ~$75 after catching expensive read patterns early.

  • No subscription, ever
  • One device, non-transferable — your license binds to the first machine only
  • Unlimited projects and updates included with your license
Get ReadMeter
Secure checkout

Notice problems earlynot after traffic arrives.

Get ReadMeter — $9
  • One-time license
  • One device (non-transferable)
  • Dev-only
  • Unlimited projects
  • Updates included