Email me

Dev · · 8 min read · Matt Busel

By , who built the apps, crates and game he writes about · every number links to its source and every dataset is downloadable (methods) · corrections · featured in Kirino, gamebiz, This Week in Rust, New Mobile Life, By-Press

Filed under Rust App development

Rust mobile apps: React Native is 50% C/C++. Signal's core is 0%

Rust mobile apps: React Native is 50% C/C++. Signal's core is 0%
On this page · 10 sections
  1. Key numbers
  2. The apps that get hacked for a living already picked Rust
  3. The "safe" cross-platform frameworks are built on C++
  4. Google's Android team already ran the experiment
  5. By the numbers: React Native still wins the downloads 23 to 1
  6. Rust mobile is growing faster than Rust itself
  7. Who wins, who loses
  8. The pattern, step by step
  9. What this means for you
  10. Sources

Short answer: Rust mobile apps are already in your pocket, you just never see them. Signal, Firefox, Bitwarden and the new Element X chat apps all run a Rust core under a thin Swift or Kotlin skin, and Google says Android's Rust has 1000x lower memory safety bug density than its C and C++. Meanwhile the frameworks most apps are actually built on are not the safe choice they look like: we pulled GitHub's language stats today and 50.1% of React Native's own repo is C, C++ and Objective-C. Our read: the "Rust for mobile" fight is already won at the core. The UI layer is the only thing left, and it is moving faster than Rust itself.

TL;DR: React Native pulled 53.9 million npm downloads in the last month, 23x what uniffi, Mozilla's Rust-to-Swift-and-Kotlin bridge, did on crates.io (2.3 million). But the Rust mobile plumbing is growing faster than Rust as a whole: uniffi, ndk and android-activity are each up about 57-58% over 90 days against 33% for serde, and the Rust UI kits Slint (+165%) and Crux (+191%) are running even hotter. If you are starting an app in 2026, put your logic, crypto and sync in Rust and keep your UI native; the apps that care most about getting hacked already did.

Key numbers

WhatNumberSource, checked Oct 25 2026
React Native repo written in C, C++, Objective-C50.1% of bytesGitHub languages API
Flutter repo written in C, C++, Objective-C20.1% of bytesGitHub languages API
Signal's libsignal written in Rust (C/C++: 0%)62.7%GitHub languages API
Android memory safety bug density, Rust vs C/C++1000x lowerGoogle Security Blog, Nov 13 2025
Android vulnerabilities that were memory safety bugs76% (2019) to 24% (2024), under 20% (2025)Google Security Blog
react-native npm downloads, last month53,920,393npm
uniffi crates.io downloads, last 30 days2,304,639 (+58% in 90 days)crates.io
flutter_rust_bridge pub.dev downloads, 30 days604,837pub.dev
serde (baseline for all of Rust), 90-day growth+32.7%crates.io
Animated bars of each repo's code share, Oct 25 2026: React Native 50.1% C/C++/ObjC, Flutter 20.1% C/C++/ObjC, Signal libsignal 62.7% Rust, Firefox app-services 89.1% Rust, Bitwarden sdk-internal 95.6% Rust, matrix-rust-sdk 99.8% Rust.
Who runs on C++ and who runs on Rust. GitHub languages API, our pull, Oct 25 2026.

The apps that get hacked for a living already picked Rust

The top post on r/rust today is a simple wish: "I want more mobile apps to be developed in Rust", sitting at 365 upvotes. Fair wish. But the funny part is how many of the apps on that person's phone already are.

We pulled the language breakdown GitHub reports for the shared code behind four apps that live or die on security. Signal's libsignal, Signal's shared crypto library, is 62.7% Rust, with Swift, Java and TypeScript wrappers making up most of the rest and 0% C or C++.

Mozilla's application-services, the sync, logins and storage layer Firefox shares across Android and iOS, is 89.1% Rust. Bitwarden's sdk-internal is 95.6% Rust. And the matrix-rust-sdk is 99.8% Rust.

That last one is the tell. Element X, the new Matrix chat client, ships an iOS app that is 99.9% Swift and an Android app that is 98.8% Kotlin. All the hard stuff (encryption, sync, the network) lives in the Rust SDK underneath. The native code is the paint.

The "safe" cross-platform frameworks are built on C++

Here is the part nobody in the Flutter vs React Native flame wars brings up. Both frameworks sell you a managed, memory-safe language on top (Dart, JavaScript). Underneath, they are C++ engines.

GitHub's language API counts 50.1% of the bytes in facebook/react-native as C, C++, Objective-C or Objective-C++ (C++ alone is 34.8%, Kotlin 22.5%, JavaScript just 19.3%). Meta's flagship "write it in JavaScript" framework has more C++ in it than JavaScript.

flutter/flutter, which now holds the engine too, is 74.7% Dart and 20.1% C, C++ and Objective-C. That is the code that parses your images, lays out your text and talks to the GPU, which is exactly where memory bugs like to live.

Horizontal bars of code share by language: React Native repo 50.1% C/C++/ObjC, Flutter repo 20.1% C/C++/ObjC, Signal libsignal 62.7% Rust, Firefox app-services 89.1% Rust, Bitwarden sdk-internal 95.6% Rust, Matrix rust-sdk 99.8% Rust.
The cross-platform frameworks sit on C++; the security-first apps sit on Rust. GitHub languages API, Oct 25 2026.

To be fair to both: a language share is not a bug count, and Meta and Google run huge fuzzing and review programs on that C++. But that is the point Google's own Android team keeps making. Fuzzing and mitigations treat the symptom. The language is the cause.

Google's Android team already ran the experiment

The best data on Rust in mobile does not come from a Rust fan. It comes from Google, which started pushing new Android platform code into memory-safe languages around 2019.

In September 2024, Jeff Vander Stoep and Alex Rebert wrote that memory safety issues fell from 76% of Android vulnerabilities in 2019 to 24% in 2024, against a 70% industry norm. In November 2025, Vander Stoep reported the share fell below 20% for the first time.

The same post puts numbers on the part that should matter to every app team, speed. Compared with C++ in Android, Rust shows a 1000x lower memory safety vulnerability density, a rollback rate about 4x lower for medium and large changes, about 20% fewer revisions per change, and about 25% less time in code review.

Stat card: 1000x lower memory safety vulnerability density in Android's Rust than in its C and C++.
Google's own Android numbers, Google Security Blog, Nov 13 2025, checked Oct 25 2026.

Google is also taking Rust into its own apps, not just the OS. Its post names Nearby Presence, already running inside Google Play Services, and the MLS protocol for encrypted RCS, slated for Google Messages.

So here is the irony we cannot get over. Google's Android team published hard data that Rust is safer and faster to ship. Google's Flutter team ships an engine that is one-fifth C and C++. Same company, two answers, and the one with the data is not the one with 180,370 GitHub stars.

By the numbers: React Native still wins the downloads 23 to 1

None of that means Rust is winning the app UI. It is not, and pretending otherwise is copium.

In the last month, react-native pulled 53.9 million npm downloads, Expo 39.5 million and Ionic's Capacitor 19.6 million. The biggest Rust mobile bridge, uniffi, did 2.3 million on crates.io in its last 30 days. flutter_rust_bridge did 604,837 on pub.dev.

Horizontal bars of downloads in the last 30 days, millions: react-native npm 53.92, expo npm 39.51, @capacitor/core npm 19.56, uniffi crates.io 2.30, flutter_rust_bridge pub.dev 0.60, flutter_rust_bridge crates.io 0.64.
React Native still outdownloads the biggest Rust mobile bridge 23 to 1. npm, crates.io, pub.dev, our pull, Oct 25 2026.

Plain-English note on these numbers: a "download" on any package registry is mostly CI servers rebuilding projects, not humans. npm and crates.io count differently, and the windows differ by two days (npm Sep 23 to Oct 22, crates.io Sep 25 to Oct 24). Treat 23 to 1 as an order of magnitude, not a scoreboard.

One stat flipped our expectations. flutter_rust_bridge's 604,837 pub.dev downloads are more than half of provider (1,158,349), one of the most-used Flutter packages there is. A lot of Flutter apps quietly have a Rust engine room already.

Rust mobile is growing faster than Rust itself

Raw size is the past. Growth is the future, so we pulled 90 days of daily crates.io downloads for every Rust-on-mobile crate we could name and compared the last 30 days with the 30 days ending Aug 26.

The baseline matters: all of crates.io swings with the calendar, so we used serde, which nearly every Rust project pulls, as the tide. serde grew 32.7% (tokio 34.4%, libc 30.1%, syn 44.6%).

The mobile plumbing beat it. uniffi grew 58.0%, ndk 56.6% and android-activity 58.4%. The Rust UI kits ran hotter: Slint +164.8%, egui +105.7% and Red Badger's Crux, built exactly for "Rust core, native shell" apps, +191.4% from a small base.

Horizontal bars of 90-day download growth, last 30 days vs 30 days ending Aug 26: crux_core +191.4%, slint +164.8%, egui +105.7%, tauri +60.2%, uniffi +58.0%, android-activity +58.4%, ndk +56.6%, serde baseline +32.7%, flutter_rust_bridge +15.5%.
Rust mobile crates are outgrowing Rust itself. crates.io daily downloads, our pull, Oct 25 2026.

The one laggard is the funniest. flutter_rust_bridge on crates.io grew just 15.5%, half the serde tide. Our bet: teams that start with Rust are skipping the Dart middleman and going straight to uniffi or Crux with native UI.

Who wins, who loses

Winners: Mozilla, whose uniffi has become the default bridge (243 crates on crates.io depend on it). Signal, Bitwarden and Matrix, who get one audited core for every platform. Tauri, whose crate is up 60.2% and whose repo sits at 112,181 stars, close behind React Native's 126,781.

Losers: anyone selling "one codebase" as if the codebase you share should be the UI. The UI is the part users feel and the part each platform keeps changing. The logic is the part attackers hit. Share the second, not the first.

Horizontal bars of GitHub stars in thousands: Flutter 180.4, React Native 126.8, Tauri 112.2, Dioxus 39.5, Slint 24.3, Compose Multiplatform 19.4, Makepad 7.2, flutter_rust_bridge 5.5, uniffi-rs 5.1, Crux 2.8.
GitHub stars for app frameworks and Rust bridges. GitHub API, our pull, Oct 25 2026.

Still undecided: pure Rust UI on phones. Dioxus has 39,489 stars and 461 crates depending on it, Makepad has 7,218, and the Robius crew is building a Matrix client in it. Nobody has proven yet that a pure Rust UI can feel native on iOS. But the growth curve says somebody is about to try very hard.

The pattern, step by step

If you want what Signal and Element have, this is the shape, in plain terms:

  1. Write the core in Rust: networking, storage, sync, crypto, parsing, business rules. No UI.
  2. Expose it with uniffi, which generates Swift and Kotlin bindings from one interface definition (a "binding" is the glue code that lets Swift call a Rust function).
  3. Cross-compile with cargo-ndk for Android and the Apple targets for iOS, then ship it as an Android library and an XCFramework.
  4. Build the UI in SwiftUI and Jetpack Compose, the real native toolkits, so the app feels right on each phone.
  5. Already on Flutter? flutter_rust_bridge gets you the same Rust core without a rewrite. Already on React Native? Its new architecture can call native modules, which can be your uniffi output.

Step 3 is where most teams quit, because the first cross-compile for Android and iOS is a wall of linker errors. It is worth pushing through once. After that, every platform gets the same tested code for free.

What this means for you

If you are starting an app now, do not ask "Rust or React Native". Ask "what is the part I can never afford to get wrong", put that in Rust, and keep the UI in whatever ships fastest for you. That is the play Google, Mozilla, Signal and Bitwarden already made, and the numbers above say the rest of the ecosystem is growing about 1.8x faster than Rust overall.

Stuck on that first Android or iOS build of your Rust core? Our $99 Rust build fix gets your crate cross-compiling for Android and iOS, fixed within 24 hours or a full refund.

More from us: every Rust piece, the Rust hub and crates we track, why Rust is the language AI will be written in, and the redis-rs 2.0 speed tax. The raw data for this piece is below, free to download.

Sources

First published here on tensorust.com on Oct 25, 2026. Related: Rust articles, Rust hub, Crates we track, Rust is the language AI will be written in, redis-rs 2.0 speed tax.

Up next

More on RustPick a UUIDv7 library that keeps order: 10 tested, .NET fails 50%We tested 10 UUIDv7 libraries with 1M IDs each and a clock jump. .NET put 50% out of order, uuid6 ran 16.6 min ahead. The 2 that passed, plus free data.Read it next →

Cite this

Free to cite and reuse under CC BY 4.0 with a link back. How it was collected: methods. Spotted an error? Corrections.

Did this answer your question?

Get the next one by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

What are people saying about this? Read and post on The Floor →

More: the author, related reading, share this, a free game

Try it yourself · Rust dev?

Check a crate before you depend on it

Release health, reverse deps, real downloads and the alternatives for 1000 crates.

In The Manual: on this topic

Explainers answer one question, short answer first. Guides walk you through it step by step.

Open The Manual →

Read next

Free tool: iPhone app cost calculator → Pick an app type and features, get an honest budget range.

All articles →

1M+ X impressions in 4 days, run by AI agents · 8,000+ crates.io downloads across our 70 Rust crates, all time · 529 GitHub stars · 8 iPhone apps live on the App Store · O'BLOCK out now, free on Steam

Built by Matthew Busel · code on github.com/Mattbusel · numbers as of Oct 25, 2026, click any to check

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ