NativePHP for Mobile v4 is here — build real native UIs from Blade with SuperNative

Changelog


For changes prior to v4, see the v3 documentation.

4.0.0-rc.1#

Released: July 15, 2026

What's Changed

  • SuperNative — fully native UI powered by SwiftUI on iOS and Jetpack Compose on Android, and the new default for v4 apps
  • Livewire-like native components — each screen is a PHP NativeComponent class holding its state and behavior, re-rendering the native UI as your properties change
  • Shared memory between PHP and the native layer — no serialization overhead or web view bridge between your code and the UI
  • Web view as a component — the classic web-view-first approach is now opt-out: render a single native route with a full-screen web view to keep building the v3 way
  • Layouts — declare shared chrome (nav bars, tab bars) once in a NativeLayout class and attach it to a route or group of routes
  • Native navigation stack — register screens with Route::native(), then push, pop, and replace them with native transitions
  • Component testing suite — mount a NativeComponent, drive interactions, and assert on state and output entirely in-process, with no device or simulator
  • Device, Dialog, File and System Plugins are now core built-ins — nativephp/mobile-device, nativephp/mobile-dialog, nativephp/mobile-file, and nativephp/mobile-system plugins have moved into nativephp/mobile. Remove the standalone plugins before upgrading (see the Upgrade Guide). The facades and events are unchanged, so no application code changes are needed.
  • The Vite dev server is now opt-in — native:run / native:watch no longer start Vite automatically. Pass --vite to enable JS/CSS HMR. The --no-vite flag still works but is now redundant. See Hot Reloading.
  • Fix: Remove stray tag by @martin-ro in #158

New Contributors

Full Changelog: https://github.com/NativePHP/mobile-air/compare/3.3.6...4.0.0-rc.1