Skip to content

4.0.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

@simonhamp simonhamp released this 15 Jul 15:52
· 166 commits to main since this release
Immutable release. Only release title and notes can be modified.
f34a6a6

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: 3.3.6...4.0.0-rc.1