PlatformWebMobile
A Real-Time Frontend Telemetry Platform
A typed frontend SDK and event pipeline that gave multi-step user flows real-time visibility, cutting incident detection from days to minutes.
- Stack
- TypeScript · BFF · Event streaming · Columnar storage · Dashboards
The problem
Some users quietly dropped out of a long, multi-step flow. When an integration with a third party broke, nobody saw it: diagnosis meant reading fragmented server logs by hand and took days. Every day of that is real users who could not finish.
The approach
- A small, typed SDK. One TypeScript tracker collected the same user-action data on every screen and platform, so an event meant the same thing everywhere.
- Throttling with a safety valve. The SDK batches events and flushes on a short timer or a size limit, whichever comes first. One request per click starves the browser's network threads; holding events longer risks losing them when the tab closes, so page unload uses
navigator.sendBeacon. - A BFF that validates. Batches hit a Backend for Frontend that checks the schema against the TypeScript definitions, sanity-checks timestamps, strips unexpected fields and personal data, and attaches session metadata. Comparing the backend's verdict with what the UI showed exposed state mismatches between the two.
- A streaming pipeline into columnar storage. Streaming absorbs traffic spikes, and columnar storage answers aggregations over very large, high-cardinality event sets in milliseconds, where row stores crawl.
- Quiet failure handling. If the pipeline is down, the SDK keeps a small buffer locally and a passive circuit breaker pauses sending. It does not ping the server to check health; it waits for the next successful response.
The result
Time to detect an incident fell from days to under 5 minutes. When a broken step means many failed attempts, that is the difference between a note in a postmortem and a fix the same morning.