Here is the quiet problem with the standard analytics setup: the compliant cookie banner you were told to add is deleting most of your data. Every visitor who clicks reject, or ignores the banner entirely, vanishes from your numbers. When we switched one React app off cookie-based analytics, the visitor count roughly doubled overnight. You are optimizing against a sample you cannot trust.
How Much a Cookie Banner Hides
A cookie-based tool only counts the visitors who click accept, and in Germany and France fewer than a quarter of them do. Add outright rejection, partial consent, and the third of visitors who ignore the banner entirely, and only around 40% of visits stay measurable. Your dashboard turns into a flattering view of the minority who said yes, and goes blind to the majority who did not.
How Does Cookieless Analytics Change the Math?
Analytics that use no cookies and store no personal identifiers do not need the consent wall in the first place. Under the ePrivacy Directive, the trigger for consent is storing or reading information on a device, so measurement that sets no identifier and reads no cookie falls outside it for basic use. Check the EDPB guidance before you rely on this, then count everyone and collect less.
- No third-party trackers loading on your visitors' browsers
- No persistent identifier, so no consent prompt required for basic measurement
- A lighter page, since you drop the tag-manager and cookie-sync payload
- Numbers that reflect all traffic, not the fraction that clicked accept
| Cookie-based | Cookieless | |
|---|---|---|
| Consent banner | Required | Not required for basic measurement |
| Who gets counted | Only consenters (~40%) | Every visitor |
| Page weight | Tag manager plus cookie sync | One small script |
| Identifier stored | Persistent ID | None |
How Do You Add Cookieless Analytics to React?
The frontend component is a one-liner in your root layout. When you do need explicit consent for richer data, the banner is a drop-in too:
import { StatvisorAnalytics } from "@statvisor/sdk/react";
import { StatvisorConsentBanner } from "@statvisor/sdk/consent";
// cookieless real-user analytics
<StatvisorAnalytics frontendKey="vl_fe_..." />
// optional drop-in consent banner when you need it
<StatvisorConsentBanner frontendKey="vl_fe_..." />Statvisor analytics are cookieless and store no raw IP, so you see real visitor numbers and Web Vitals without dropping a consent wall on every first-time reader.
When You Still Need Consent
Some data genuinely requires opt-in. For where that line sits and how to handle visitor identity cleanly, read GDPR analytics: consent and the visitor ID problem, then fit it into the wider indie hacker monitoring stack. Building on Next.js? Wire it in via Next.js observability.
Ready to monitor your API in production?
Statvisor gives you latency percentiles, error rates, and request volume for every route, in minutes, not days.
Get started free →