NativePHP v4 adds a rendering mode called SuperNative that turns Blade components into genuine native views, SwiftUI on iOS and Jetpack Compose on Android, with no web view or HTML layer involved. Simon Hamp and Shane Rosenthal introduced it at The Vibes, a 100-person event they hosted in Boston on 30 July, the day after Laracon US ended. SuperNative is the default rendering path in v4 but remains in beta as of version 4.1.

The component system is called EDGE, short for Element Definition and Generation Engine. Instead of compiling Blade to HTML, NativePHP built its own Blade engine that converts components into a fixed-length binary representation; a native-side interpreter reads that data and builds SwiftUI and Compose views directly, sharing memory with PHP rather than crossing a bridge on every interaction. Components behave like Livewire ones, using public properties, a mount() method, action methods, and attributes such as #[Poll], #[Computed], #[Lazy], and #[Locked]. Because the screens are genuine SwiftUI and Compose views, accessibility features like VoiceOver, TalkBack, and dynamic type work automatically.

A screen is now a PHP class extending NativeComponent paired with a Blade view, registered in routes/mobile.php through a Route::native macro; layouts extend NativeLayout and can be shared across routes with Route::nativeGroup. Templates use native elements such as <column>, <text>, and <pressable> instead of HTML tags, styled with Tailwind classes mapped onto platform layout, and support @tap, @pressDown, and @pressUp handlers, the latter two new in v4 for press-and-hold interactions. Developers can preview a screen on a real device without Xcode or Android Studio using php artisan native:jump, which prints a QR code for the free companion app Jump on iOS and Android.

Existing v3 apps are not forced to convert everything at once: a web view is now just a <webview php url="/" fullscreen /> component that can sit inside a native screen, each with its own dedicated PHP runtime, and v4 no longer boots a web view until a web route is actually rendered. Testing runs through Pest with a FakeBridge that captures published element trees and native calls; Native::visit() and Native::test() mount components, and tap() simulates presses.

Four previously separate plugins, Device, Dialog, File, and System, are now bundled into the nativephp/mobile core package, which is the release's only breaking change; Composer refuses to resolve until they are removed with php artisan native:plugin:uninstall --core-v4. Version 4.1, released 7 August, adds the #[Locked] attribute to block writes to bound properties, TreeObservers plus a TreeSpy testing utility for inspecting published element trees, a NativeRouteFallback for browsers hitting native-only routes, and Tailwind-class validation warnings instead of silent ignoring. Facades and events stay unchanged, the Vite dev server is now opt-in via a --vite flag, and NativePHP ships a Boost skill meant to help agents automate the v3-to-v4 upgrade.