I Built the First UAE Pass Flutter Plugin — Then Someone Forked It and Made My Day
In 2023, I needed to integrate UAE Pass into a Flutter app. I searched pub.dev. Nothing. I searched GitHub. Nothing. There was no Flutter plugin for UAE Pass — the national digital identity system used by millions of people in the UAE. So I built one.
This is the story of that plugin, the project that needed it, and the moment — almost two years later — when I saw a notification that someone had forked it and published their own version. That was one of the best feelings I've had as a developer.
It Started with Emirates Red Crescent
At MVP Apps, we were working on the Emirates Red Crescent mobile app — the official app for the UAE's national humanitarian body. The app needed UAE Pass authentication so users could verify their identity through the national digital ID system. This isn't a nice-to-have for a government-affiliated app — it's essential.
The problem was straightforward: UAE Pass provides native SDKs for iOS and Android, but there was nothing for Flutter. No plugin on pub.dev. No community package. If we wanted UAE Pass in our Flutter app, we had to build the bridge ourselves.
Emirates Red Crescent app — 47K ratings, 4.8 stars on the App Store
Building the Native Bridge
The hardest part wasn't the Dart code. It was the native bridge — writing Swift for iOS and Kotlin for Android, then wiring them together through Flutter's platform channels.
UAE Pass authentication works through deep links. Your app redirects to the UAE Pass app (or a web fallback), the user authenticates, and UAE Pass sends the user back to your app with an authorization code. Sounds simple. In practice, it means handling URL scheme registration on both platforms, managing the singleTask launch mode on Android so intent filters work correctly, configuring LSApplicationQueriesSchemes in the iOS Info.plist, and catching the callback across Flutter's platform channel boundary.
Each platform has its own quirks. iOS needs the URL schemes declared upfront or it silently fails. Android's intent filter routing depends on the launch mode being exactly right. Getting both to work reliably and then funnelling the result back to a single Dart callback took more iterations than I'd like to admit.
Publishing on pub.dev
Once it was stable and running in production with the Red Crescent app, I cleaned it up and published it as uae_pass_flutter on pub.dev. Version 0.0.1, August 2023. My first published Flutter plugin.
Un-official UAE Pass Flutter plugin for Android and iOS.
uae_pass_flutter on pub.dev — verified publisher faisalkc.com
I wrote the documentation with both sandbox and production setup instructions, included the iOS and Android configuration steps, and added screenshots of the Postman flow for obtaining access tokens. The goal was simple: if another Flutter developer in the UAE hits the same wall I did, they shouldn't have to start from zero.
It's now at version 0.0.3, licensed under MIT, and has been downloaded by developers building their own UAE Pass integrations.
The UAE Flutter Community
I'm part of the UAE Flutter developer community — a group of people who show up at meetups, share what they're building, and help each other out. This community is one of the reasons I open-sourced the plugin rather than keeping it internal to MVP Apps. When you're building software in a region where Flutter adoption is growing fast, sharing tools like this makes the whole ecosystem stronger.

MVP Apps — where we build apps for government, fintech, and consumer brands across the UAE
Then Someone Forked It
Sometime in early 2025, I noticed a new package on pub.dev: flutter_uae_pass. Published by Mohammed. The description referenced the original repo at github.com/Faisalkc4u/uae_pass.
I knew Mohammed from the Flutter meetups in the UAE. Seeing someone I'd met at community events take my plugin, fork it, improve it, and publish their own version — that was genuinely one of the happiest moments I've had as a developer.
The original repo at github.com/Faisalkc4u/uae_pass — 5 stars, 14 forks, and counting
It's not about credit or recognition. It's about the fact that something I built to solve a problem on one project became useful enough that someone else wanted to build on it. That's what open source is supposed to feel like.
Mohammed's version builds on the original with updates and improvements. The ecosystem has two options now — and that's better than zero, which is where we started.
What This Taught Me
Publish the rough version. My plugin wasn't perfect when I put it on pub.dev. But if I'd waited until it was polished, it might still be sitting in a private repo. The messy-but-working version that ships is worth more than the perfect version that doesn't.
Community compounds. Showing up to Flutter meetups, sharing what you're working on, making your code available — these things add up in ways you can't predict. A community connection turned into a fork turned into a whole new package. None of that was planned.
Government projects push you further. Building for Emirates Red Crescent, with UAE Pass as a requirement, forced me to go deeper into platform-specific Flutter development than I would have on a typical project. The constraint made me better.
Where It Stands Now
Both packages are live on pub.dev. uae_pass_flutter is the original, and flutter_uae_pass is Mohammed's fork. If you're a Flutter developer in the UAE and you need UAE Pass integration, you have options now. That's the whole point.
At MVP Apps, we've since used the plugin on other projects and continued to support it. And every time I see a new like or a download tick up on pub.dev, I think back to that first version — hacked together because there was no other choice, then shared because it felt like the right thing to do.
Sometimes the best things you build are the ones you give away.