Run React Native across many named JS runtimes.

React Native Runtimes lets you mount components, schedule functions, and share state across multiple JavaScript runtimes — so your main UI thread is never blocked by lists, chat, sync, or crypto.

What you get

Two libraries that work together: @react-native-runtimes/core for runtime composition and @react-native-runtimes/state for native-backed shared state.

Threaded rendering

Mount React components or whole screens on a named secondary runtime so the main JS stays free for navigation and input.

Native-backed shared state

A small Zustand-like API on top of a C++ singleton — every runtime sees the same value and the same revision.

Prewarming and headless tasks

Spin up runtimes ahead of time, hydrate them in the background, and open them with zero perceived delay.

Background business logic

Pin functions to a "background" runtime with a one-line directive, then keep call sites ordinary.

Big lists, smooth UI

Run FlashList or LegendList on a worker runtime so scrolling never competes with the rest of your app.

Incremental adoption

Opt in one component or one screen at a time. The rest of your app keeps working exactly as it did.

A second runtime, in a few lines

Wrap any top-level component in OnRuntime. Metro auto-registers it; native mounts it on the named runtime.

  • 1Install the packages and wrap your Metro config.
  • 2Prewarm a runtime from the app delegate or MainApplication.
  • 3Drop OnRuntime around the slow part of your UI.
Installation guide
ConversationPreview.tsx
import { OnRuntime } from '@react-native-runtimes/core';

function MessageList({ conversationId }) {
  // runs on 'messages-runtime', not the main runtime
  return <ActualMessageList conversationId={conversationId} />;
}

export function ConversationPreview() {
  return (
    <OnRuntime name="messages-runtime">
      <MessageList conversationId="release-room" />
    </OnRuntime>
  );
}

Built for production React Native apps

Use it for chat screens, infinite lists, sync engines, headless hydration, or any work that should never compete with the main UI runtime.