symfony/ux-native
Symfony UX Native lets you build native iOS and Android apps using Symfony, Twig, and Turbo, wrapping your server-rendered web UI in native shells. Reuse existing Symfony skills and components to deliver mobile experiences without a separate frontend stack.
Important framing caveat for a Laravel/PHP shop: this package is Symfony-only (it is a Symfony UX bundle and assumes Symfony's DI, routing, Twig, and Stimulus conventions). It is not a Laravel package and will not drop into a Laravel app. If the team is on Laravel, the equivalent decision is "adopt Hotwire Native with turbo-laravel plus a small amount of custom path-configuration and bridge code" — the architecture is the same, but you are taking on the glue yourself rather than buying it pre-built.
Consider adoption when most of the following hold:
composer.json.Look elsewhere when any of the following hold:
@experimental covenant with breaking changes between minors. Assume no support SLA, thin documentation, few StackOverflow answers, and no guarantee of a maintainer in 18 months. If the app is revenue-critical and you cannot vendor/fork it, that is a stop sign.Recommended posture: time-boxed spike, not a commitment. One engineer, two to three weeks, one representative end-to-end flow (login → list → detail → push notification). Gate the go/no-go on: does it build and submit cleanly to both stores, does the bridge cover our top three device capabilities, and can we pin and own a fork if the upstream stalls.
For executives — one paragraph:
We can put a real app in the App Store and Play Store using the web team and the web codebase we already have, rather than hiring a separate mobile squad. symfony/ux-native is the open-source adapter that lets our Symfony app render natively inside a lightweight iOS/Android shell, including push notifications and device features, with per-screen control over what feels native. The trade-off is honest: it is a young, low-adoption MIT project (12 stars, one release), so we should treat it as a calculated bet with a fallback — a short spike first, version pinning, and a documented exit to a fully native build if it doesn't hold up. The upside is months of schedule and a meaningful headcount line avoided; the downside is bounded to the cost of the spike.
For engineering:
This is the Symfony-side glue for Hotwire Native — native request detection, native layouts, path configuration, and bridge components wired into Twig/Stimulus. It saves us writing and maintaining the Turbo Native integration ourselves and keeps our release process unified across web and mobile. Risks we should name up front: pre-1.0 API churn, minimal community and docs, effectively a bus-factor of one, and no procurement-grade support. Mitigations: vendor the dependency or maintain a fork from day one, pin to an exact version, keep a thin internal abstraction over the bridge calls so swapping to a hand-rolled or fully native implementation stays a contained change, and instrument the native shell separately from web analytics so we can measure whether the hybrid approach is actually paying for itself. If the team is not on Symfony, this package is the wrong tool — we would implement the same architecture with turbo-laravel and our own bridge layer, and should budget accordingly.
How can I help you explore Laravel packages today?