Calling Rust from Flutter: FRB or UniFFI?
A beginner-friendly comparison of flutter_rust_bridge and UniFFI, with small examples, practical differences, and guidance on choosing between them.
A personal blog by Yulin
Notes on learning, practice, and reflection. Reusable commands, code snippets, and the reasoning behind decisions.
About me and this blog
Move stable business semantics into Core, leave concrete product implementation to Variant, and keep engineering independence while preserving the same business outcome.
Read the essay ReflectionWhen software engineering students stand at the crossroads of graduate school, civil service exams, employment, and AI, what they may need most is not a fixed answer, but the ability to adapt to change.
Read the essayA beginner-friendly comparison of flutter_rust_bridge and UniFFI, with small examples, practical differences, and guidance on choosing between them.
Starting from a Flutter app that gradually became harder to maintain, this article explains why I introduced a Rust Core, what FRB does between the two sides, and how the architecture creates clearer boundaries.
The same goal — seeing an app's HTTPS traffic — plays out very differently on native Android and Flutter: certificate trust, traffic redirection, and hostname verification each fail at a different point. Ends with a complete reusable capture flow you can follow next time.
How I went from a suspicious difference in app behavior to the client-side A/B routing logic using USB packet capture, remote-config decoding, and Dart AOT analysis.
How I worked from an Android client and a BLE protocol toward a Python reference, a Rust core, the AidexKit Swift driver, and a working LoopWorkspace integration.
A firsthand account of dividing responsibilities across a Flutter host, a contract SDK, and a Vue web app—and of handling payments, back navigation, lifecycle, startup, and updates along the way.