Skip to content

Releases: software-mansion/react-native-executorch

v0.9.0

25 May 13:16
0e95b89

Choose a tag to compare

React Native ExecuTorch v0.9.0 🔒 🚀

This release, as always, brings a lot of fresh goodies to the React Native world ⚛️. It introduces new things across the stack, whether that's speech, vision, or NLP, check it out 👇🏻

What's new?

Speech

  • Up to 10x performance improvements for transcription - We introduced a way to integrate VAD into Whisper transcription pipeline, along with underlying algorithm optimizations & NPU model exports, resulting in significantly improved performance docs
  • Multilingual Text-to-Speech - We introduced a lot of new languages to the TTS API, including 🇵🇱 🇪🇸 🇮🇹 🇫🇷 🇮🇳 docs
  • Text-to-Speech improvements - We improved the phonemization mechanisms to significantly enhance the pronunciation quality for existing languages
  • VAD streaming API - You can now run voice activity detection in continuous, stream fashion docs

NLP

  • OpenAI's Privacy Filter - A new usePrivacyFilter API, making it easy to detect private user information from text, fully locally docs
  • Multilingual text embeddings - It is now possible to generate embeddings across different languages docs
  • Qwen 3.5 support - Another LLM in our collection docs
  • LFM2.5-VL-450M (quantized) & LFM2.5 350M - New multimodal and text-only LLMs from Liquid AI added to the registry
    docs
  • Smarter LLM sampling - min_p and repetition_penalty sampling, per-model defaults, and letterboxed multimodal image preprocessing docs

Computer vision

  • Pose estimation - A new Pose Estimation API with YOLO 26 docs
  • FastSAM with prompts - Segment Anything style masks driven by point, box, or text prompts, fully on-device docs

General

  • ExecuTorch runtime bumped to v1.2.0 - Updated native binaries and headers across iOS and Android, including the new AlreadyLoaded error mapping docs
  • Typed models registry - A new declarative models accessor in constants/modelRegistry.ts, grouped one-to-one with hooks, so you can pick a backend / precision without juggling URL constants docs
  • Extended tokenizer support - Rebuilt tokenizer binaries with unigram & word-level support, plus previously unsupported pre-tokenizers, decoders, and post-processors
  • Graceful native-lib degradation on Android - Apps no longer crash at startup on 32-bit / unsupported ABIs; isAvailable === false lets you render a fallback UI instead docs
  • iOS deployment target raised to 17.0 - Matches the prebuilt ExecuTorch libraries; apps targeting older iOS versions will need to bump

Breaking changes ⚠️

  • TextToImage returns a file:// URI instead of base64useTextToImage().generate() (and TextToImageModule.forward) now resolves to a path on disk pointing to a PNG, instead of a base64-encoded payload. The pngjs dependency is no longer needed.
  • Multilingual TTS API reshape — The Kokoro pipeline now takes per-language voice / voice-quality configuration to support voice cloning and fine-tuned variants. Existing TTS call sites need to migrate.
  • Speech-to-text quantized model constants removed — Predefined constants for quantized Whisper variants were dropped; the quality delta vs. the originals didn't justify the extra API surface. iOS now defaults to the new CoreML-backed Whisper builds.
  • OCRDetection.bbox is now Bbox, not Point[] — The native vision stack moved to a unified Point struct everywhere; consumers reading raw bbox geometry off OCR results need to update.
  • ResourceFetcherAdapter.fetch return shape changed — Custom adapters must now return { path: string; wasDownloaded: boolean }[] instead of string[], so callers can tell which resources were freshly downloaded vs. served from cache. Update any custom adapter implementations accordingly. docs

v0.8.4

29 Apr 08:25
bc0fec4

Choose a tag to compare

What's Changed

Full Changelog: v0.8.3...v0.8.4

v0.8.3

10 Apr 10:20
c168535

Choose a tag to compare

What's Changed

Full Changelog: v0.8.2...v0.8.3

v0.8.2

09 Apr 16:08
487958a

Choose a tag to compare

What's Changed

Full Changelog: v0.8.1...v0.8.2

v0.8.1

02 Apr 08:56
e33dc74

Choose a tag to compare

What's Changed

Added support for LFM2.5 350M: quantized 8da4w and base fp16 for XNNPACK.

Full Changelog: v0.8.0...v0.8.1

v0.9.0-libs-test (artifact download test)

31 Mar 20:05
cbffa44

Choose a tag to compare

Test release for validating on-demand native lib download flow. Not a real release.

v0.8.0

25 Mar 15:30
81af692

Choose a tag to compare

React Native ExecuTorch v0.8.0 👁️ ⚛️

This is the biggest and the most exciting release for us so far! If you're looking for processing camera input with AI models, running VLMs, or Bare RN support, look no more 👇

What's new?

Computer Vision

  • VisionCamera integration: All computer vision hooks now expose a runOnFrame worklet for real-time camera frame processing via VisionCamera v5 docs
  • Instance Segmentation: New useInstanceSegmentation hook for per-pixel object masks, supporting YOLO (nano/small/medium/large/extra-large) and RF-DETR models docs
  • Object Detection: Added YOLO and RF-DETR model support docs
  • Semantic Segmentation: Added support for DeepLab V3, LRASPP, FCN, and Selfie Segmentation models docs
  • Quantized CV models: Added quantized variants for CLIP, Style Transfer, EfficientNetV2, and SSDLite
  • Custom model support for Object Detection & Instance / Semantic Segmentation: Both modules are now generic — you can plug in your own model via fromCustomModel() as long as it conforms to the expected input/output contract (see respective docs for further guidance)

VLMs

  • Vision Language Models (VLMs): useLLM now supports multimodal models — pass capabilities: ['vision'] and send images alongside messages docs
  • Added support for Liquid Foundation Models vision-language model (LFM2_VL_1_6B_QUANTIZED).

LLMs

  • LFM-2.5 support: Added support for Liquid Foundation Model 2.5 Instruct docs
  • LLM context management: Added ContextStrategy to ChatConfig — configure naive, message-count-based, or sliding window context truncation. SlidingWindowContextStrategy is now the default
    docs

Audio

  • Whisper is now up to 3x faster
  • TTS + LLM integration: Text-to-Speech streaming now accepts incrementally expanded text input, enabling real-time speech synthesis piped directly from a running LLM docs
  • Kokoro TTS pre-computed phonemes: New forwardFromPhonemes / streamFromPhonemes APIs let you bypass the built-in G2P pipeline and supply your own IPA phoneme strings docs
  • Speech-to-Text timestamps: transcribe and stream now return TranscriptionResult objects with word-level timestamps docs

General

  • Bare React Native support: The library now officially supports bare React Native projects via react-native-executorch-bare-resource-fetcher docs
  • Modular resource fetcher adapters: Platform-specific adapters (react-native-executorch-expo-resource-fetcher, react-native-executorch-bare-resource-fetcher) replace the previous monolithic fetcher, requiring explicit initialization via initExecutorch()
    docs
  • Uniform module factory API: All modules now expose fromModelName() and fromCustomModel() static factories, replacing the old new Module() + load() pattern

Breaking changes ⚠️

  • initExecutorch() with an explicit adapter is now required before using any hook. Install react-native-executorch-expo-resource-fetcher or react-native-executorch-bare-resource-fetcher depending on your project type
    docs
  • All modules now use static factory methods (Module.fromModelName() / Module.fromCustomModel()) — the old new Module() constructor + .load() pattern is removed
  • ImageSegmentation has been renamed to SemanticSegmentation — update imports and hook names accordingly (useSemanticSegmentation) docs
  • Semantic segmentation resize parameter renamed to resizeToInput
  • Semantic segmentation forward() return type changed — now returns Record<'ARGMAX', Int32Array> & Record<K, Float32Array> instead of number[]
  • ObjectDetection.forward() now accepts an ObjectDetectionOptions object for filtering classes of interest
  • Classification.forward() return type changed — now returns a type-safe record of label names to scores instead of Record<string, number>
  • StyleTransfer.forward signature changed — now accepts string | PixelData and returns Promise<PixelData | string> depending on the output parameter docs
  • Speech-to-Text: transcribe and stream now return TranscriptionResult (not raw strings). stream is now an async generator. The committed/nonCommitted hook properties have been removed
    docs
  • TTS streaming API changed — TextToSpeechStreamingCallbacks pattern replaced by streamInsert() / streamStop() methods, and stream() is now an async generator docs
  • LLM ChatConfig: contextWindowLength has been replaced by contextStrategy

v0.7.2

27 Feb 19:15
d3abefe

Choose a tag to compare

What's Changed

Full Changelog: v0.7.1...v0.7.2

v0.7.1

12 Feb 11:09
a305030

Choose a tag to compare

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0

05 Feb 13:38
5326863

Choose a tag to compare

Announcing React Native ExecuTorch v0.7.0 🌟

If you’re tired of robotic-sounding speech synthesizers, this one’s for you!

What’s new?

  • Text to speech: Support for generating speech using Kokoro docs
  • Reduced bundle size: We switched a library for tokenization, resulting in 64% reduction in package size
  • OCR file sizes improvement: Previously, for the OCR pipeline to work, you needed 4 different model files. We made changes to use just one file, reducing the total file sizes by 3x (313MB -> 101MB) docs
  • Improved error handling: The errors thrown from our library are now assigned a code property, allowing for fine-grained error handling docs
  • LLMs: new stats API (getPromptTokenCount, getTotalTokenCount)
  • LLMs: generate() API now returns a string, instead of void docs
  • Our documentation now includes an API reference section
  • General bug-fixes

Breaking changes ⚠️

  • Removed responseCallback() in LLM APIs
  • OCR now takes a single modelSource, instead of 3.
  • Removed constants for VERTICAL_OCR. From now, only OCR_* constants should be used for both OCR and vertical OCR.
  • Passing waveforms as number[] in Speech to Text is now not supported anymore. Please use Float32Array instead.
  • TokenizerModule will now throw RnExecutorchError when idToToken or tokenToIdFails (for example when you pass a token outside of the vocab)
  • The error property in all of the hooks now is of type RnExecutorchError instead of string.