dev.club — where best developers and top companies connect.

dev.club — where best developers and top companies connect.Invite only

Request invite
React Native ExecuTorch Logo


GitHub - Contributors GitHub - Stars Join our Discord community Documentation Hire Us

React Native ExecuTorch is an on-device AI inference library for React Native, powered by ExecuTorch — Meta's on-device inference runtime. It lets you run machine learning models directly on the user's phone with zero network calls, full offline capability, and guaranteed privacy. No data ever leaves the device.

The library ships with a curated set of pre-exported models covering computer vision, language models, text-to-speech, transcription, and more — all available in our Hugging Face collection and ready to use out of the box. You can also bring your own .pte models and plug them into existing pipelines or build entirely custom ones from scratch.

To explore all on-device capabilities in an interactive showcase app, check out the React Native ExecuTorch Gallery.

npm version npm nightly CI

Table of Contents

Key Features

Quickstart

1. Installation

Install react-native-executorch alongside its required peer dependencies:

npm install react-native-executorch react-native-worklets react-native-blob-util
# or
yarn add react-native-executorch react-native-worklets react-native-blob-util
# or
pnpm add react-native-executorch react-native-worklets react-native-blob-util

[!IMPORTANT] React Native ExecuTorch requires:

See the Getting Started Guide and Compatibility table for more details.

2. Run the Model

import { Button, View } from 'react-native';
import { models, useLLMChatSession } from 'react-native-executorch';

export function App() {
  const session = useLLMChatSession(models.llm.LFM2_5_1_2B.DEFAULT);

  const handleGenerate = async () => {
    if (!session.isReady || !session.sendMessage) return;

    const turn = await session.sendMessage(
      'Explain on-device AI in one sentence.',
      (token) => console.log(token)
    );

    console.log('Result messages:', turn.messages);
  };

  return (
    <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      <Button
        title={session.isReady ? 'Generate' : `Loading (${session.downloadProgress.toFixed(0)}%)`}
        onPress={handleGenerate}
        disabled={!session.isReady}
      />
    </View>
  );
}

Documentation

Full documentation, guides, architecture deep dives, and API references are available at: docs.swmansion.com/react-native-executorch

Powered by React Native ExecuTorch

React Native ExecuTorch powers Private Mind, a privacy-first mobile AI application available on App Store and Google Play.

Private Mind promo

Created by Software Mansion

Since 2012, Software Mansion has been building mobile and web apps, contributing to open-source software, and dealing with all kinds of React Native challenges. We are Core React Native Contributors. We can help you build your next AI product – Hire us.

swm

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.