Skip to content

0.4.0 — globe, real-time, sessions, journeys, goals and opt-in replay

Choose a tag to compare

@Vitrus-Dev Vitrus-Dev released this 24 Sep 10:40
· 9 commits to main since this release

Analytics that shows its work. Every number, list and chart added in this release opens the SQL that produced it — and the AI digest still drops any sentence whose number is not in that evidence.

What's new

  • Globe, 3D and 2D. Sessions placed at their city on a timeline you can scrub and play, coordinate cells, and choropleths by country and by state or province. City, region and 0.1° coordinates come from your proxy's headers (Cloudflare's visitor-location transform, Vercel, CloudFront). The geometry is served from your own origin: no map provider, no token, no IP lookup.
  • Real-time. A live count on every page and a Realtime view with views per minute and the latest events labelled person, crawler or agent. Server-sent events with a polling fallback.
  • Sessions, users and events. A session timeline per visit, user profiles for people you identify() (the raw id is hashed before it is stored), event property breakdowns, and errors grouped by message, file and line.
  • Journeys and goals. Path queries for a Sankey, goals on page wildcards, custom events or event properties, and ordered funnels.
  • Explore queries. Filters take is / is not / contains / starts with / regex on 24 dimensions and any event property, compiled into the SQL on the server.
  • Performance. p50 through p99 for five Web Vitals.
  • Session replay, opt-in. Off by default, loaded only on pages that carry data-replay, and every text node and input value masked unless you unmask an element on purpose. Password, card and one-time-code fields are never captured, DNT and GPC stop recording, and the server masks again on ingest. The player runs in a script-less sandboxed iframe. It is a hand-written recorder at 3.6 KB gzipped in a separate r.js, with its own 5 KB CI budget, so pages without it keep the 2.7 KB tracker.

Caveats

  • Cities need your proxy to send them. Without those headers the globe names the missing header instead of drawing an empty map, and country-only sessions are never pinned to a country's centre.
  • Journeys, goals and user profiles join days together only for people you identify. An anonymous visitor's id rotates daily by design.
  • The tracker grew by about 200 bytes gzipped (file downloads, hash routing, user traits). The 3 KB gate still holds.
  • The self-hosted dashboard (vitrus start) renders every metric and plays replays; the sessions, users, journeys, goals and globe pages are in the hosted dashboard today. Their queries are in this core.

Full changelog: https://vitrus.dev/changelog