Skip to main content
In development

Umami Mobile SDK

Rust-first, local-first Umami analytics SDK for Rust services, iOS, iPadOS, macOS, and Android, with a durable SQLite queue and thin native overlays.

Rust UniFFI SQLite Swift Kotlin Analytics
Cover image for Umami Mobile SDK

Overview

Umami Mobile is a Rust-first, local-first analytics SDK that accepts events quickly, stores them in a bounded app-private SQLite queue, and uploads them when the scheduler has a safe opportunity. The Rust core owns validation, redaction, serialization, persistence, retries, consent, identity, and delivery state. Swift and Kotlin are intentionally thin overlays that add platform ergonomics and relay lifecycle, connectivity, and background-work hints. Status: 0.1.0, pre-1.0.

Features

  • Durable SQLite queue as the source of truth for pending events
  • One Rust policy engine shared by Apple and Android via a typed UniFFI contract
  • SQLx-only SQL: no rusqlite, Room queue, or second storage backend
  • At-least-once delivery with stable local event IDs for deduplication
  • Bounded work: hard limits on event size, queue size (10k events / 10 MiB / 7 days), retries, and native upload leases
  • Privacy by default: sensitive property keys redacted before storage, paths normalized without query strings
  • track() fast enqueue, track_durable() waits for commit, flush() for bounded delivery
  • WorkManager integration (UmamiFlushWorker) that recreates the client after process death

Technology Stack

  • Rust core (validation, scheduler, exporter, protocol, transport)
  • UniFFI typed FFI façade
  • SQLx + SQLite storage actor
  • Swift package (UmamiMobile) for iOS 17+ / macOS 14+
  • Kotlin AAR (dev.umami.mobile) with WorkManager
  • URLSession upload leases / Rust exporter

Share this project