JavaScript
Browsers and edge runtimes
Official, open-source libraries for web, mobile and servers. Every SDK shares the same emit, setUser and flush calls.
Browsers and edge runtimes
Servers, workers and serverless
Swift Package Manager, iOS 15+
Kotlin, Android 8+
One package for iOS and Android
Sync and async, Python 3.9+
Context-aware, zero dependencies
Rails integration included
Java 11+, Spring starter
.NET 6+ with DI extensions
PHP 8.1+, Laravel package
Dart package for every platform
No SDKs match.
Same API everywhere
Switch between platforms without relearning anything. Names, options and behaviour match across every SDK.
Under 9 kB in the browser. Events are batched and sent off the main thread.
Offline queues, retries with back-off and a flush on shutdown.
Generate types with rivora types and get autocomplete for every event.
MIT licensed, with release notes in the changelog.
import { Rivora } from "@rivora/sdk";
const rivora = new Rivora({
ingestKey: "ik_live_…",
});
rivora.setUser("usr_2481", {
plan: "growth",
});
rivora.emit("report.exported", {
format: "csv",
});from rivora import Rivora
rivora = Rivora(
ingest_key="ik_live_…",
)
rivora.set_user(
"usr_2481",
plan="growth",
)
rivora.emit(
"report.exported",
user_id="usr_2481",
format="csv",
)import Rivora
let rivora = Rivora(
ingestKey: "ik_live_…"
)
rivora.setUser(
"usr_2481",
traits: ["plan": "growth"]
)
rivora.emit(
"report.exported",
properties: ["format": "csv"]
)client := rivora.New("ik_live_…")
defer client.Close()
client.Emit(ctx, rivora.Event{
Name: "report.exported",
UserID: "usr_2481",
Props: rivora.Props{
"format": "csv",
},
})Free up to a million events a month. Upgrade when you outgrow it, or talk to us about volume, compliance and running Rivora in your own cloud.
Need volume pricing or a security review?
.