Uniffi is a tool that automatically generates foreign-language bindings targeting Rust libraries.
It fits in the practice of consolidating business logic in a single Rust library while targeting multiple platforms, making it simpler to develop and maintain a cross-platform codebase.
Note that this tool will not help you ship a Rust library to these platforms, but simply not have to write bindings code by hand [0].


uniffi requires to write an Interface Definition Language (based on WebIDL) file describing the methods and data structures available to the targeted languages.
This .udl (Uniffi Definition Language) file, whose definitions must match with the exposed Rust code, is then used to generate Rust scaffolding code and foreign-languages bindings. This process can take place either during the build process or be manually initiated by the developer.

uniffi diagram

Supported languages

  • Kotlin
  • Swift
  • Python
  • Gecko C++