mozilla/uniffi-rs

a multi-language bindings generator for rust

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 48 minutes ago
Added to GitGenius on September 13th, 2026
Created on June 10th, 2020
Open Issues & Pull Requests: 289 (+0)
GitHub issues: Enabled
Number of forks: 329
Total Stargazers: 4,963 (+0)
Total Subscribers: 47 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 13.4 hours
Mean response time: 56.5 days
90th percentile: 88.4 days
Tracked items: 450

Most active contributors

Sign in to see contributor activity.

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 87% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "binding-kotlin" is answered fastest, typically in under an hour, while "binding-swift" waits about 2 days. 65% of tracked open issues have had no activity in three months, so the open count overstates what is actively being worked. Only 5% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 253
New in 7 days: 2
Closed in 7 days: 1
Avg open age: 884 days
Stale 30+ days: 237
Stale 90+ days: 219

Recent activity

Opened in 7 days: 2
Closed in 7 days: 1
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • binding-swift (27)
  • uniffi (24)
  • binding-kotlin (11)
  • FFI-1.0 (9)
  • enhancement (7)
  • discuss (6)
  • get involved (6)
  • good first issue (5)

Detailed Description

UniFFI is a multi-language bindings generator for Rust that enables developers to write core business logic once in Rust and automatically generate bindings for multiple target languages.

The tool solves the problem of maintaining separate implementations of the same functionality across different platforms and languages. It works by having developers describe their Rust component's interface either through an interface definition file or using proc-macros, then automatically generating the necessary bindings and shared libraries for different target platforms. This approach lets a single Rust codebase be compiled into shared libraries and called from multiple languages without manual binding maintenance.

UniFFI is well-suited for cross-platform projects where you want to write performance-critical or complex logic in Rust while exposing it to applications written in other languages. It works particularly well for mobile development, where you might need the same functionality on both Android and iOS. The tool currently supports Kotlin, Swift, Python, and Ruby as first-class targets, with third-party bindings available for C# and Go. The README mentions Diplomat as an alternative tool focused more on C and C++ interop, and Interoptopus as another similar solution, but does not provide detailed comparisons between them.

The project maintains active development with ongoing internal improvements and refinements to its architecture. The tool is used extensively in production by Mozilla across Firefox mobile and desktop browsers, where auto-generated bindings allow Rust functionality to be called from both Kotlin and Swift. The developers acknowledge that while the tool is ready for production use, it remains some distance from a 1.0 release, meaning advanced features may experience breaking changes as the project evolves, though simple consumers are prioritized for stability.