Skip to content
Merged
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
bb1d160
feat: add resource fetcher adapters for Expo and bare React Native
rizalibnu Jan 23, 2026
248d1b6
feat: add bare React Native LLM chat example app
rizalibnu Jan 23, 2026
a973890
feat: enhance resource fetcher with error handling and new methods fo…
rizalibnu Jan 27, 2026
3b93bc7
chore: exclude llm_bare app from workspace
rizalibnu Jan 27, 2026
8f310c1
feat: integrate MMKV for persistent state storage in background downl…
rizalibnu Jan 27, 2026
93f90ec
chore: temporarily remove bare RN LLM example app for code review
rizalibnu Jan 27, 2026
ebe6836
chore: remove bare app directories from .gitignore
rizalibnu Jan 27, 2026
f447454
chore: update react-native-executorch dependency to allow any version
rizalibnu Jan 27, 2026
af54de0
chore: add react-native-executorch as a dependency to adapters
rizalibnu Jan 27, 2026
6cc94d1
chore: update Node version in .nvmrc and adjust typecheck scripts in …
rizalibnu Jan 27, 2026
f2fcd03
chore: replace generic error with RnExecutorchError in ResourceFetche…
rizalibnu Jan 27, 2026
c6f73ec
chore: move yarn prepare from adapter typecheck scripts to CI workflow
rizalibnu Jan 27, 2026
502b2fc
chore: init bare React Native example app with @react-native-communit…
rizalibnu Jan 27, 2026
bbc2980
feat: add bare React Native LLM chat example app
rizalibnu Jan 28, 2026
799049a
fix: resolve merge conflicts, fix package refs, and remove tracked ge…
msluszniak Mar 9, 2026
02ae756
docs: add bare_rn app to Demo Apps section in README
msluszniak Mar 9, 2026
c6a6a76
fix: correct corrupted jest@29.7.0 lockfile entry with wrong dependen…
msluszniak Mar 9, 2026
676498e
fix: regenerate lockfile entries for @react-native/metro-config@0.81.5
msluszniak Mar 9, 2026
7fcdde1
fix: reset yarn.lock to main and regenerate cleanly for bare_rn works…
msluszniak Mar 9, 2026
a8ca09a
fix: revert bare-resource-fetcher typecheck script to avoid CI race c…
msluszniak Mar 9, 2026
ccd7c8e
feat: add ios/ and android/ native project files for bare_rn app
msluszniak Mar 9, 2026
63e5ec3
fix: add kconv gem for Ruby 3.4 compatibility in bare_rn
msluszniak Mar 9, 2026
dd44505
fix: pin CFPropertyList >= 3.0.9 to fix Ruby 3.4 kconv removal
msluszniak Mar 9, 2026
80a2111
fix: upgrade to CocoaPods >= 1.16.2 for Ruby 3.4 compatibility
msluszniak Mar 9, 2026
c8988a5
fix: add Gemfile.lock and Podfile.lock for bare_rn iOS
msluszniak Mar 9, 2026
83730cc
fix: fix Android Gradle paths for yarn workspace monorepo
msluszniak Mar 10, 2026
fe18a04
fix: use RNFS.downloadFile on Android to avoid background downloader …
msluszniak Mar 10, 2026
0b0f83d
Delete packages/react-native-executorch/common/rnexecutorch/tests/int…
msluszniak Mar 11, 2026
f0b3a33
chore: remove Readme from bare rn app
NorbertKlockiewicz Mar 12, 2026
bb76d97
docs: remove emojis from README headings and table of contents
msluszniak Mar 12, 2026
36f45c3
docs: remove emojis from headings in all translated READMEs
msluszniak Mar 12, 2026
c2edbf2
chore: update READMEs
msluszniak Mar 13, 2026
2539961
chore: align readmes
msluszniak Mar 13, 2026
7d1479c
chore: add suggestions from code review
msluszniak Mar 13, 2026
7700b7d
chore: fix android build
msluszniak Mar 13, 2026
c7eb2c1
chore: make error code specifically for resource fetcher
msluszniak Mar 16, 2026
fab283c
chore: add missing error codes
msluszniak Mar 16, 2026
cdb4af8
chore: add yarn prepare command for all packages
msluszniak Mar 16, 2026
f2979fc
docs: document new error code in documentation
msluszniak Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,9 @@ lib/
ios/generated
android/generated
apps/*/ios/
!apps/bare_rn/ios/
apps/*/android/
!apps/bare_rn/android/
Comment thread
chmjkb marked this conversation as resolved.

# generated TypeDoc API reference (regenerated at build time)
docs/docs/06-api-reference/
Expand Down
59 changes: 29 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,24 @@ React Native ExecuTorch bridges the gap between React Native and native platform
[![CI](https://github.com/software-mansion/react-native-executorch/actions/workflows/ci.yml/badge.svg)](https://github.com/software-mansion/react-native-executorch/actions/workflows/ci.yml)

<details>
<summary><strong> :blue_book: Table of Contents </strong></summary>

- [:yin_yang: Supported Versions](#yin_yang-supported-versions)
- [:earth_africa: Real-world Example](#earth_africa-real-world-example)
- [:llama: Quickstart - Running Llama](#llama-quickstart---running-llama)
- [:calling: Demo Apps](#calling-demo-apps)
- [:robot: Ready-made Models](#robot-ready-made-models)
- [:books: Documentation](#books-documentation)
- [:balance_scale: License](#balance_scale-license)
- [:soon: What's Next?](#soon-whats-next)
<summary><strong>Table of Contents</strong></summary>

- [Supported Versions](#supported-versions)
- [Real-world Example](#real-world-example)
- [Quickstart - Running Llama](#quickstart---running-llama)
- [:one: Installation](#one-installation)
- [:two: Setup \& Initialization](#two-setup--initialization)
- [:three: Run the Model!](#three-run-the-model)
- [Demo Apps](#demo-apps)
- [Ready-made Models](#ready-made-models)
- [Documentation](#documentation)
- [License](#license)
- [What's Next?](#whats-next)
- [React Native ExecuTorch is created by Software Mansion](#react-native-executorch-is-created-by-software-mansion)

</details>

## :yin_yang: Supported Versions
## Supported Versions

The minimal supported version are:
* iOS 17.0
Expand All @@ -61,17 +65,17 @@ The minimal supported version are:
> [!IMPORTANT]
> React Native ExecuTorch supports only the [New React Native architecture](https://reactnative.dev/architecture/landing-page).

## :earth_africa: Real-world Example
## Real-world Example

React Native ExecuTorch is powering [Private Mind](https://privatemind.swmansion.com/), a privacy-first mobile AI app available on [App Store](https://apps.apple.com/gb/app/private-mind/id6746713439) and [Google Play](https://play.google.com/store/apps/details?id=com.swmansion.privatemind).

<img width="2720" height="1085" alt="Private Mind promo" src="https://github.com/user-attachments/assets/b12296fe-19ac-48fc-9726-da9242700346" />

## :llama: **Quickstart - Running Llama**
## Quickstart - Running Llama

**Get started with AI-powered text generation in 3 easy steps!**

### :one: **Installation**
### :one: Installation

```bash
# Install the package
Expand All @@ -86,10 +90,10 @@ yarn add @react-native-executorch/bare-resource-fetcher
yarn add @dr.pogodin/react-native-fs @kesha-antonov/react-native-background-downloader

# Depending on the platform, choose either iOS or Android
yarn expo run:< ios | android >
yarn < ios | android >
```

### :two: **Setup & Initialization**
### :two: Setup & Initialization

Add this to your component file:

Expand All @@ -113,7 +117,7 @@ function MyComponent() {
}
```

### :three: **Run the Model!**
### :three: Run the Model!

```tsx
const handleGenerate = async () => {
Expand All @@ -128,44 +132,39 @@ const handleGenerate = async () => {
};
```

## :calling: Demo Apps
## Demo Apps

We currently host a few example [apps](https://github.com/software-mansion/react-native-executorch/tree/main/apps) demonstrating use cases of our library:

- `llm` - Chat application showcasing use of LLMs
- `speech` - Speech to Text & Text to Speech task implementations
- `computer-vision` - Computer vision related tasks
- `text-embeddings` - Computing text representations for semantic search
- `bare_rn` - LLM chat example for bare React Native (without Expo)

If you would like to run demo app, navigate to its project directory and install dependencies with:

```bash
yarn
```

Then, depending on the platform, choose either iOS or Android:
If you would like to run a demo app, navigate to its project directory. Then install dependencies and run app with:

```bash
yarn expo run:< ios | android >
yarn && yarn < ios | android >
```

> [!WARNING]
> Running LLMs requires a significant amount of RAM. If you are encountering unexpected app crashes, try to increase the amount of RAM allocated to the emulator.

## :robot: Ready-made Models
## Ready-made Models

Our library has a number of ready-to-use AI models; a complete list is available in the documentation. If you're interested in running your own AI model, you need to first export it to the `.pte` format. Instructions on how to do this are available in the [Python API](https://docs.pytorch.org/executorch/stable/using-executorch-export.html) and [optimum-executorch README](https://github.com/huggingface/optimum-executorch?tab=readme-ov-file#option-2-export-and-load-separately).

## :books: Documentation
## Documentation

Check out how our library can help you build your React Native AI features by visiting our docs:
https://docs.swmansion.com/react-native-executorch

## :balance_scale: License
## License

This library is licensed under [The MIT License](./LICENSE).

## :soon: What's Next?
## What's Next?

To learn about our upcoming plans and developments, please visit our [milestones](https://github.com/software-mansion/react-native-executorch/milestones).

Expand Down
2 changes: 2 additions & 0 deletions apps/bare_rn/.bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1
7 changes: 7 additions & 0 deletions apps/bare_rn/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: '@react-native',
parserOptions: {
requireConfigFile: false,
},
};
80 changes: 80 additions & 0 deletions apps/bare_rn/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
**/.xcode.env.local

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml
*.hprof
.cxx/
*.keystore
!debug.keystore
.kotlin/

# node.js
#
node_modules/
npm-debug.log
yarn-error.log

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output

# Bundle artifact
*.jsbundle

# Ruby / CocoaPods
**/Pods/
/vendor/bundle/

# Temporary files created by Metro to check the health of the file watcher
.metro-health-check*

# testing
/coverage

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# Custom
!/ios/
!/android/
/assets/ai-models/
5 changes: 5 additions & 0 deletions apps/bare_rn/.prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
arrowParens: 'avoid',
singleQuote: true,
trailingComma: 'all',
};
1 change: 1 addition & 0 deletions apps/bare_rn/.watchmanconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Loading
Loading