/uniffi-bindgen-react-native

Make React-Native Turbo Modules out of Rust

Primary LanguageRustOtherNOASSERTION

CI build-bob compatibility

uniffi-bindgen-react-native

UniFFI is a multi-language bindings generator for Rust.

This project, uniffi-bindgen-react-native, is a uniFFI bindings generator for using Rust from React Native.

It provides tooling to generate:

  • Typescript and JSI C++ to call Rust from Typescript and back again
  • a Turbo-Module that installs the bindings into a running React Native library.

If you're ready to start, then start with a step-by-step tutorial to make a Rust turbo-module.

If you're new to uniFFI, then the UniFFI user guide or the UniFFI examples are interesting places to start.

Why uniffi-bindgen-react-native?

  • Spend more time writing Typescript and Rust
  • Full compatibility with uniffi-rs
  • Your Rust SDK is portable across multiple languages.

Why not, say WASM, via wasm-bindgen?

WASM is an amazing virtual machine however:

  • your Rust crate must make alternative arrangements if it needs things that the virtual machine does not offer:
    • threads and
    • file access.
  • you need to maintain a separate FFI (this is a temporary issue, solvable by something like uniFFI).

Who is using uniffi-bindgen-react-native?

Prior art and related projects

Contributing

If this tool sounds interesting to you, please help us develop it! You can:

Code of Conduct

This project is governed by Mozilla's Community Participation Guidelines.

Funding

uniffi-bindgen-react-native is led by James Hugman, with deep collaboration from the Filament engineering team, funded by Filament and Mozilla.

License

MPL-2.0