Skip to content

Decisions ​

Callx records significant design decisions as Architecture Decision Records (ADRs). Each one states the context, the decision and its consequences. This page summarizes them.

ADRDecisionIn one sentence
0001Android minimum SDK 29A scope choice that keeps the device test matrix small enough to test properly
0002Commands and observationCommands return explicit results; state is observed from native snapshots, never inferred
0004Audio ownershipCallKit activates iOS audio, Telecom routes Android audio, the media SDK only encodes and plays
0005Validation gatesFeatures are released on measured evidence, with simulator and device results kept apart
0006One native core for two frameworksFlutter and React Native ship the same Swift and Kotlin sources, kept identical by a parity check
0007Library-owned incoming pathCallx receives pushes, decides whether to ring and reports to the OS, so no framework code is on the critical path
0008LiveKit as the first media adapterIt carries only media, so Callx keeps the incoming path and the host keeps signaling
0009Package ecosystemA provider-free core plus independent adapters that install with no host code
0011Optional call presentationRoot overlay and mini-call are app UI state, with native-owned calls and unchanged contract
0010VideoVideo fields and camera commands extend the existing call lifecycle; adapters render through shared native surfaces. Android PiP is activity state outside the call contract

Principles that run through them ​

  • One owner per concern: the OS call, the audio session, the call state.
  • Evidence over intent: a command is applied when the platform confirms it; a feature is verified when a device run proves it.
  • Honest limits: what the platform forbids is documented, not worked around with hacks that break on the next OS release.
  • Small dependency surface: the core depends only on the platform.

Proposing a significant change? Open a discussion first; if it is accepted, it gets an ADR.

Released under the MIT License. No telemetry, in the library or on this site.