Bond a symbiote

Native apps
for React.

One native core. The framework you already know, bonded on top — no WebView, no rewrite, no React Native fork.

Core

Stock native stack

Fabric, JSI, Yoga, Hermes, and the iOS/Android host stay ordinary React Native dependencies. SymbioteNative swaps the JavaScript renderer, never the native stack.

Adapter

Thin per-framework skin

Each framework maps its lifecycle and renderer operations onto one small engine mutation API. Clone-on-write Fabric persistence lives in a single shared place.

Output

Real native views

The result is the same Fabric shadow tree React Native already paints. No DOM, no WebView escape hatch, no fake native component layer.

Not just multi-platform

Every adapter keeps the accent of its framework.

Cross-surface content sharing, real framework sugar instead of a flattened callback surface, and CSS you can actually write — each landing framework by framework, not diluted into a shared subset.

Composition

Reach across the tree — or across surfaces

createPortal renders into another node in the same tree — a real Fiber-level portal, possible because Fabric runs in mutation mode here. createTunnel goes further: content painted by one independently mounted surface, registered from a totally different one, joined by nothing but a shared store.

  • React
  • Vue
  • Angular
Idiom

Sugar where the framework expects it

v-model and v-show work on native views in Vue. Angular gets real @Output()EventEmitters and [(value)] two-way binding. Neither is a callback surface borrowed from React — each adapter speaks its own framework's grammar.

  • Vue
  • Angular
Styling

Write CSS. Ship zero CSS engine.

A Vue SFC <style> block compiles to native style objects at build time — add scoped and it's scoped to the component, :global(...) still escapes out, the same semantics real Vue gives you in the browser. CSS Modules and plain .css imports go further: import styles from './Card.module.css'resolves through the same shared class registry from React, Vue, or Angular.

  • React
  • Vue
  • Angular
Testing

One e2e spec, three adapters

Headless vitest covers component and integration logic with no simulator involved. Detox drives the real app end to end — and because it attaches below the renderer SymbioteNative replaces, the identical spec file runs unmodified against the React, Vue SFC, and Vue TSX canaries. Angular has its own real-device Detox suite too.

  • React
  • Vue
  • Angular
Same surface, different host

Three symbiotes, one native core.

React is the reference canary. Vue proves the native core is no longer tied to React's reconciler. Angular proves it again, through a completely different rendering model. All three flow through the same engine and the same stock Fabric host.

React driving a native SymbioteNative counter demo
React · live adapter
Vue 3 driving a native SymbioteNative counter demo
Vue · live adapter
Angular driving a native SymbioteNative counter demo
Angular · live adapter
The seam

Framework → adapter → engine → Fabric.

  1. Vue · React · future adapters
  2. thin reconciler
  3. @symbiote-native/engine
  4. nativeFabricUIManager
  5. stock React Native
Where things stand

Small surface, real pipe.

Read the roadmap →