This has been the biggest week of shipping since launch. Here’s everything that’s new, in one place.
Four new SDKs — Mitr now covers 6 platforms
Until now, Mitr shipped two SDKs: JavaScript for the web, and Flutter for iOS/Android/desktop/web. That covered a lot, but not everything. As of today there are six:
| SDK | Platform | Docs |
|---|---|---|
mitr.js | Any website, any JS framework | /docs/js-sdk |
mitr_flutter | iOS, Android, desktop, Flutter Web | /docs/flutter-sdk |
@mitr/react-native | React Native (bare + Expo dev-client) | /docs/react-native-sdk |
| Swift Package | Native iOS, macOS, tvOS, watchOS | /docs/swift-sdk |
mitr-kotlin | Native Android | /docs/kotlin-sdk |
@mitr/node | Backends, webhook handlers, cron jobs, CLIs | /docs/node-sdk |
Plus a no-JS tracking pixel for email and script-restricted pages.
Every SDK shares the same core API — track(), pageView(), identify(), reset() — and the same privacy model: identifiers are hashed (SHA-256) before they ever leave the device, or before they leave the process for the Node SDK. None of the mobile/desktop/server SDKs are on a public package registry yet — they ship from mitr-sdk-suite as local/git/path dependencies for now.
If you’re integrating with help from an AI assistant, point it at the AI Integration Guide — it now walks through all six platforms, not just web and Flutter.
Conversion funnels — and they can span a website and an app
Funnels let you define a sequence of steps — page paths or custom events — and see exactly where visitors drop off between them. The part we think is genuinely different: a funnel’s steps can span more than one connected app in your workspace. A step on your marketing site and a step inside your Flutter app can be part of the same funnel, for visitors who called identify().
Step 1: visited /pricing
Step 2: signup_completed
Step 3: onboarding_finished ← inside your app
Results are computed live over whatever date range you pick — no waiting on a scheduled report.
Automated traffic alerts
Alerts watch your total daily event volume and compare it against your trailing 7-day average. Cross a threshold — spike or drop — and you get notified by email, webhook, or Slack, throttled to at most one notification per 24 hours. No more finding out about an outage or a traffic spike by refreshing the dashboard.
Outbound webhooks
Send any tracked event to a URL you control the moment it happens — Slack, a CRM, a serverless function, Zapier, n8n. Delivery is decoupled from tracking, so a slow endpoint on your end never slows down your site or app. Every request is signed with HMAC-SHA256 so you can verify it actually came from Mitr, and failed deliveries retry automatically with increasing delays. Full details at /docs/webhooks.
City-level geolocation, not just country
Most privacy-first analytics tools stop at country, since a commercial city-level database is expensive to license. Mitr now resolves country, region, and city for every event — self-hosted, with no per-request call to a third-party API. The IP is resolved locally against a downloaded database and discarded.
The resolution falls back through three tiers so location data is never a hard failure: a MaxMind database first if one’s provisioned, then DB-IP’s free “IP to City Lite” database (updated monthly — city/region data by DB-IP.com, per its CC BY 4.0 license), then a country-only table as the last resort. Full breakdown at /trust#geolocation.
Honest comparisons against 7 alternatives
We also published (and keep updating) a comparison hub — Plausible, Umami, Aptabase, Fathom, Simple Analytics, PostHog, and Firebase Analytics, each with a fact table sourced from the vendor’s own docs, and an explicit “choose them instead if…” section. A few of them beat Mitr on specific things — Umami’s free self-hosting, PostHog’s webhook filtering pipeline, Firebase’s unlimited free events — and we say so.
What’s next
Electron and Tauri SDKs are on the roadmap. If there’s a platform you need that isn’t covered yet, tell us at support@mitranalytics.dev.