POROROCA OTA
A Shorebird alternative for teams outside Flutter
Shorebird solves Flutter's code-push problem
Shorebird lets Flutter teams patch compiled Dart code in a shipped app, without going through app store review for every fix. It works because Flutter apps run on a Dart runtime that Shorebird's patches can target directly.
If your app is written in SwiftUI or Jetpack Compose rather than Flutter, there's no Dart runtime for Shorebird to patch — the comparison only makes sense once you're looking for something that does for native code what Shorebird does for Dart, and no such patch target exists for compiled Swift or Kotlin.
What Shorebird is good at
For Flutter apps, Shorebird is a focused, capable tool: it patches code, not just data, which is a meaningfully different and harder problem than updating configuration or content, and it does that well within the Flutter/Dart ecosystem.
Where it stops
Shorebird's model is Flutter-specific and code-oriented. It doesn't extend to genuinely native SwiftUI or Jetpack Compose apps, and updating executable code is a different (and riskier) problem than updating a screen's presentation.
Where Pororoca fits
Pororoca takes the opposite approach: it never ships code. It delivers a signed, data-only screen 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 using it.
Manifests are signed with Ed25519, with the private key kept on a developer machine or in CI, never in the app. Rollouts are deterministic by install ID and channel, with one-command rollback and `applied` telemetry in the dashboard. A publisher CLI validates and signs bundles, a remote publish step sends them to the control plane, and an MCP server exposes the same operations to a coding agent.
Because the update is data rather than patched code, the same signed-manifest and staged-rollout model applies uniformly on both platforms: the iOS runtime's managed crash-safe store and the Android runtime's signature-and-hash verification are two implementations of one idea, so a team shipping both a native SwiftUI app and a native Compose app runs one publish-and-rollout workflow instead of a separate patch mechanism per platform the way Shorebird's Dart-specific patching would require if it could reach native code at all.
Android and team limits, honestly
Android storage is host-managed today, with the host retaining the last accepted document for offline use; 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 is one Pro plan, card-required 21-day trial, in BRL or USD.