mozilla/uniffi-rs

a multi-language bindings generator for rust

View on GitHub ↗Jump to charts ↓Open shareable report →

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 6 minutes ago
Added to GitGenius on September 13th, 2026
Created on June 10th, 2020
Open Issues & Pull Requests: 295 (+0)
GitHub issues: Enabled
Number of forks: 334
Total Stargazers: 5,018 (+0)
Total Subscribers: 47 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 13.6 hours
Mean response time: 55.8 days
90th percentile: 88.4 days
Tracked items: 457

Maintainer activity

1 person did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 11, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits.

How this project is maintained

About 14% of issues opened in the past year have never received 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. 62% of tracked open issues have had no activity in three months, so the open count overstates what is actively being worked. Only 58% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 257
New in 7 days: 0
Closed in 7 days: 1
Avg open age: 870 days
Stale 30+ days: 248
Stale 90+ days: 221

Recent activity

Opened in 7 days: 0
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)

Most active issues this week

Sign in to see which issues are moving.
Sign in

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.