v1.2.0
LatestA new widget: every read source, per page, with measured savings
The widget was rebuilt around one question: which code is reading what, how often, and what fixing it is worth. Counts now reset per page, and after a fix ReadMeter shows the measured before and after.
- NewRead sources list: every function that read Firestore on the page, with its collection, file:line, reads and how many times it ran.
- NewEstimated saving per source when it can be worked out, e.g. "~484 fewer reads per page load" for a query that ran 5×.
- NewMeasured result after a fix: reload the page and see "624 → 140 reads (−78%) vs your last load", with a "Share this win" button.
- NewWarning when a page reads noticeably more than on its last load.
- NewThis page / Session switch: counts reset on every navigation, with a running session total.
- New
readmeter checkships with the tool pack, andreadmeter add --cicopies the check script into your repo, so CI needs no license or download. - ImprovedThe fix prompt for Cursor/Claude now includes the expected effect of the fix.
- ImprovedOne cost line based on page loads per day, instead of a doubled range.
- ImprovedTheme, size, alert threshold and "remove from project" moved behind a settings button; the panel starts collapsed and remembers its state.
- ImprovedThe widget renders in a Shadow DOM, so your app's CSS can't break it and its CSS can't leak into your app.
- ImprovedOne license now works on up to 3 of your machines at once;
readmeter deactivatefrees a slot to move to a new one. - FixedThe panel's right edge (including read counts) was cut off, and it overflowed on narrow screens.
- FixedPressing Escape anywhere in your app collapsed the widget; it now only reacts inside the widget.
- FixedThe reads number, status dot and risk label could show different colours for the same count.
- FixedCompat SDK single-document reads were attributed to an "unknown" collection.
- FixedCreate React App: the installer put the Firestore wrapper outside src/, which CRA refuses to compile. It now goes in src/lib/.
- FixedVite: Firestore reads added in new files after install could fail to resolve the wrapper. The plugin now uses an absolute path.
- FixedVue, Nuxt and Svelte: reads inside .vue and .svelte components are now tracked.
- FixedAngular 17 and older: the widget is now copied to src/assets/, which those versions actually serve.
- FixedNext.js pages router apps without a custom _document now get one, instead of the widget not being added.
How to update: Re-run the installer: curl -fsSL https://readmeter.dev/install | bash, then readmeter add in each project.