POROROCA OTA
LaunchDarkly vs Pororoca: flags vs shipped screens
Gating code vs shipping the screen
LaunchDarkly is a feature-management platform: it targets users, gradually exposes code paths, and gives you kill switches for logic that's already compiled into your app. Pororoca answers a different question — what if the screen itself, not just which branch runs, needs to change without a store release?
What LaunchDarkly is good at
LaunchDarkly is mature, works across many languages and platforms, and is excellent at exactly what it's built for: targeting rules, percentage rollouts of a flag, and instant kill switches for behavior you've already shipped and want to turn on or off safely.
Where it stops
A flag can only choose between outcomes that are already compiled into the app. It can't hand the client a screen structure it has never seen before — if the layout, copy, or components themselves need to change, that still requires a new build and a store release.
Where Pororoca fits
Pororoca delivers the screen itself as a signed, data-only document to a native runtime: an iOS 17+ SwiftUI runtime with a managed crash-safe store and embedded fallback, or an Android API 26+ Compose runtime that verifies the document's signature and hashes before rendering it.
Manifests are Ed25519-signed, with the private key kept on a developer machine or in CI. Rollouts are deterministic by install ID, organized into channels, with one-command rollback and `applied` telemetry in the dashboard. A publisher CLI and remote publish step handle delivery to the control plane, with the same operations available to a coding agent through an MCP server.
The two tools aren't mutually exclusive: use LaunchDarkly to gate logic you've already shipped, and Pororoca to change what the screen itself renders.
The signing model matters here too: every screen document is Ed25519-signed, with the private key staying on a developer machine or in CI, so a compromised delivery channel can't push an unsigned or tampered screen the way a misconfigured targeting rule could expose the wrong flag variant to the wrong users.
And because rollout is deterministic by install ID rather than re-evaluated on every session, the cohort that receives a new screen at 10% is the same cohort reflected in `applied` telemetry as you widen to 25%, 50%, and 100% — the same staged-rollout discipline a LaunchDarkly user already applies to flags, applied here to the screen itself rather than to a boolean.
Android and team limits, honestly
Android storage is host-managed today; the host keeps the last accepted document for offline use, but the previous-update crash recovery available on iOS is not yet in the Android SDK, the renderer surface is smaller, and full modifier parity with SwiftUI isn't there yet.
Not yet available: team members and RBAC, usage-based limits, automated alerts, cross-platform expression parity, and a hosted MCP transport. There's one Pro plan, card-required 21-day trial, in BRL or USD.