The GlitchReplay blog
Field notes on error tracking, session replay, source maps, security signals, and the on-call cost of per-event pricing. Written by people who have been paged at 2 AM.
Latest

How to estimate session replay storage cost before turning it on
Back-of-envelope math on rrweb payloads, retention, sample rate, and egress turned into a one-screen estimator.
replaypricing
How to calculate your error budget from your error tracker (no SRE team required)
Convert raw error counts into a 9s-of-availability number — the math, the assumptions, and a one-screen calculator.
slomanagementtutorial
How to test if your error tracker is leaking PII (run this on your last 1,000 events)
A self-audit recipe: pull recent events, run them through a PII detector, compare against your redaction config.
privacypiiauditInstrument it yourself, or just drop in the tag?
Two ways to feed your GlitchReplay funnel: explicit track() events or the drop-in autocapture tag. When each wins, why running both doesn't double-count, and the hybrid most teams should use.
funnelsanalyticsinstrumentationtutorial
How to fix React error #418 (hydration mismatch) in production
The cryptic prod-mode minified message decoded into the readable dev-mode message, plus the five most common root causes.
reactdebugginghydration
How to check any URL's Core Web Vitals from a free tool
CrUX vs PageSpeed Insights vs Lighthouse — what each measures and when to use which.
performanceweb-vitalsSentry vs GlitchReplay vs LogRocket: a real comparison
Feature, pricing, and SDK compatibility breakdown for the three tools teams most often weigh against each other.
comparisonsentrylogrocketWhy your Sentry SDK isn't capturing source-mapped stack traces
The five most common reasons frames render as `<anonymous>` even after you've uploaded source maps — and the diagnostic checklist that finds the cause in under five minutes.
source-mapsdebuggingHow to capture unhandled promise rejections in modern browsers
`unhandledrejection` is necessary but not sufficient. The async stacks, polyfill quirks, and framework integrations you also need.
javascripttutorialSession replay vs traditional logging: when each one wins
Replay is amazing for UI bugs and useless for backend race conditions. A decision matrix for picking the right tool per incident class.
replayobservabilityReplay storage costs: why most vendors price you out
A back-of-envelope on rrweb payload sizes at scale, the egress traps in cross-cloud setups, and how flat-rate replay is even possible.
replaypricingDebugging a phantom checkout bug with session replay
A real war story: an intermittent Stripe failure that only happened on iOS Safari with autofill. Replay closed the loop in 20 minutes.
replayincidentWhy your stack traces show minified function names (and how to fix it)
Source map upload is one of three preconditions. Here are all three, and how to verify each in production.
source-mapstutorialSource map upload at build time vs runtime: tradeoffs
Build-time upload is faster but couples deploys to your error tracker; runtime fetch is slower but more resilient. Picking one.
source-mapsVite + Sentry SDK + source maps: the missing config
The three Vite plugin options that everyone forgets, and what production stack traces look like before vs after each one.
vitesource-mapsHiding source maps from end users while keeping them debuggable
Server-side upload, signed URLs, and the deploy-script hooks that make this a one-time setup instead of a recurring leak risk.
source-mapssecurityThe source-map-loader gotcha that broke our prod debugging
A subtle webpack misconfiguration that silently shipped wrong source maps for two weeks — and the assertion we now run in CI.
webpacksource-mapsincidentSpotting credential stuffing attacks in your error stream
Auth-error rate, geo dispersion, and user-agent patterns that distinguish a real attack from a buggy mobile app release.
securityauthAuth spike anomalies: what a real attack looks like in error data
Annotated time-series from three real incidents we've seen, and the heuristics we use to alert without paging on Black Friday traffic.
securityauthWhy scanner probes show up in your error tracker (and what to do)
How to classify the `/.env`, `/wp-admin`, and `/.git/config` noise — and why you should keep them, not filter them.
securityscannersXSS attempts in the wild: 5 patterns we see weekly
The actual payloads landing on production today: query-string injections, CSP-bypass tricks, and the new wave of mutation-XSS.
securityxssDebugging Cloudflare Workers errors in production
Tail workers, `console.log` limits, and getting full stack traces out of edge runtime — what works in 2026.
cloudflareWhy Cloudflare Workers throw "Script will never generate a response"
The hanging-promise patterns that trigger it, and the structured-cloning gotcha most people miss.
cloudflaredebuggingTracking errors across Cloudflare Pages, Workers, and Durable Objects
Three runtimes, three transport stories, one trace ID — how to stitch them together so an incident report doesn't need three dashboards.
cloudflareThe OpenNext error you'll hit deploying Next.js to Cloudflare
A walkthrough of the bundle-too-large, dynamic-import, and `nodejs_compat` flag combinations that bite every Cloudflare Next.js team at least once.
cloudflarenextjsCloudflare D1 timeout errors: causes and fixes
Connection limits, query plan surprises, and the indexes that turn a 30-second query into a 30ms one.
cloudflared1Core Web Vitals regressions: catching them before users complain
RUM-based alerting that fires on real users, not synthetic monitors — including the percentile choice that actually correlates with revenue.
performanceweb-vitalsA 200ms TTFB regression that cost us $40k/month
Postmortem of a quietly-rolled-out CDN config change, how RUM caught it, and the alert rule we now run on every deploy.
performanceincidentHow to alert on Web Vitals without alert fatigue
Threshold tuning, baseline drift, and the routing rules that send the right alert to the right team — without paging at 3 AM for a country-specific blip.
performancealertsHow a 1-line CSS change took down our checkout (and replay caught it)
Annotated replay frames from a real incident. Five minutes from alert to root cause — without ever reproducing it locally.
incidentreplayPostmortem: the React hydration error that survived three deploys
Why hydration errors are uniquely hard to spot, and the diff between an error tracker that buries them and one that surfaces them.
reactincidentThe deploy that tripled our error rate at 2 AM
What we saw, what we did, and the three guardrails we added so it can't happen the same way again.
incidenton-callWe migrated 50M events/month off Sentry. Here's what broke.
The four edge cases the migration script missed, the alerting gap that lasted six hours, and the customer-facing communication that worked.
migrationincidentPII scrubbing at ingest: why client-side isn't enough
Three real ways client-side scrubbing leaks data — and the threat model that makes server-side a hard requirement.
privacypiiHIPAA-friendly error tracking: what the law actually requires
BAA, masking, audit logs, retention. A non-lawyer's guide to what you have to do, and what your error tracker has to do for you.
privacyhipaacomplianceGDPR and error tracking: the parts your DPO hasn't asked about yet
URL fragments, request bodies, IP addresses, breadcrumbs — the four places PII enters error data that even careful teams miss.
privacygdprcomplianceThe 7 PII fields your error tracker is leaking right now
A self-audit checklist with the regexes we use to find leaks in our own ingest pipeline. Run it against your last 1,000 events.
privacypiiReading your error budget: a guide for engineering managers
How to convert raw error counts into a number leadership cares about, without hiring an SRE or installing Datadog.
managementsloHow much should you actually spend on observability per developer?
Benchmarks from 200 teams, broken down by stage and stack. Where the spend goes, and where it's almost always wasted.
managementpricingSetting up SLOs from your error tracker (without an SRE team)
A pragmatic SLO definition that uses the data you already have, and the dashboard that makes it visible to the rest of the company.
managementsloError tracking for SvelteKit: the complete guide
`handleError` hooks on both client and server, plus the SSR-vs-client error stream split that matters for real triage.
sveltekittutorialAstro + error tracking: SSR vs island hydration errors
Why island hydration errors look like client errors but actually originate in the build, and how to source-map them.
astrotutorialRemix loaders, actions, and error boundaries: where errors actually surface
A map of every place a Remix request can fail, the boundary that catches it, and the breadcrumb that explains why.
remixtutorialSolidJS error boundaries: catching what useTransition hides
Suspense boundaries swallow errors by design. Here's how to surface them without sacrificing the UX they enable.
solidjstutorial
How to score an A+ on a security headers check (and what each header actually does)
A walkthrough of CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy.
securityheaders
How to set up CSP reporting in Next.js App Router
Framework-specific setup for CSP reporting using middleware, route handlers, and the modern Reporting API.
cspnextjstutorial
How to migrate from CSP Report-Only to Enforce without taking the site down
Use a corpus of existing violation reports to preview what would break before you flip the switch.
cspsecurityrollout
How to read a CSP violation report (every field, in plain English)
An evergreen reference covering violated-directive, blocked-uri, source-file, document-uri, sample, disposition.
cspsecuritytutorial
How to deminify a JavaScript stack trace (the manual way and the 5-second way)
A walkthrough of the VLQ-decode pain of reading minified stack traces by hand, then a free tool that does it instantly.
source-mapstutorialWire GlitchReplay into your app in ten minutes
The canonical recipe for instrumenting a Next.js app: install @sentry/react + @glitchreplay/a11y + @glitchreplay/network-probe, drop in instrumentation-client.ts, mount the error boundary, ship.
tutorialsdkonboardingRunning an AI-generated failing test locally
Drop the test from a GlitchReplay issue into vitest, jest, playwright, or pytest, watch it run red by design, then unmark it once your fix lands.
testingtutorialworkflow
The 5 Sentry alternatives in 2026 (and which one you actually need)
An honest tour of GlitchReplay, Highlight, Bugsnag, Rollbar, and Datadog Error Tracking — what each one is good at and where each one falls down.
comparisonsentryAlways-on session replay, priced like on-error: how 3-day pruning makes it work
Why we record every session and prune anything not tied to an error after 3 days. Storage math, the late-arriving-error buffer, and why this beats the 30-second pre-error window.
replaypricingWhy your Sentry bill exploded after a bad deploy
Per-event pricing turns every regression into a billing event. Here's what actually happens, and how flat-rate pricing changes the on-call calculus.
pricingsentryincident
INP, LCP, CLS: which one actually moves conversion
We pulled six months of e-commerce data. The metric most teams obsess over isn't the one with the strongest correlation.
performanceweb-vitals
CSP violation reports: what they're trying to tell you
A field guide to the most common violated-directive values, which ones are real attacks, and which ones are just your marketing team adding a pixel.
cspsecurity
Migrating from Sentry to GlitchReplay in one afternoon
Step-by-step DSN swap, source-map upload, alert rule mapping, and rollback plan. No code changes beyond a single env var.
migrationsentrytutorial
Setting up error tracking in Next.js 15 without losing your mind
App Router, Server Actions, edge runtime, middleware — every place errors hide in modern Next.js, and how to capture them all.
nextjstutorial
Sentry pricing in 2026: when flat-rate beats per-event
Side-by-side math on per-event vs flat-rate at three traffic tiers. Where each model wins, and the break-even point most teams cross within a year.
pricingsentrycomparison
Tracking errors in Cloudflare Workers (the right way)
`waitUntil`, tail workers, and SDK transport limits — the three things that make Workers error tracking different from Node.
cloudflaretutorial
How to mask PII in session replays without breaking debugging
Block-list vs allow-list strategies, the per-attribute exceptions you'll forget about, and the masking tests we run on every release.
replayprivacy
The right way to fingerprint errors so you don't drown in duplicates
Default fingerprints over-group library noise and under-group your real bugs. Here's a fingerprint strategy that mirrors how engineers actually triage.
fingerprintingtriage
The "noisy errors" problem and how to triage at scale
Inbox-zero for error trackers: the five rules that turn a 10,000-issue backlog into a manageable weekly review.
managementtriage