I’m Kayla. I build apps for a living. I also break them, fix them, and ship them. I care about speed, clean UI, and how it feels in my hands. I also care about the little stuff—like tap delay, battery drain, and the “why did that crash only on my old phone?” moments.
I’ve started routing every beta through Loup so testers can shake to send logs the instant something feels off.
If you’d rather jump straight to the quick-fire list of stacks, check out my side notebook on the same topic—my concise rundown of the top 10 programming frameworks for app development.
Here’s what I’ve used, what I loved, and what made me sigh a bit.
1) Flutter — fast builds, pretty pixels
I built a kids’ reading timer in Flutter for iOS and Android. Bright colors, big buttons, cute stars. It looked the same on both phones, which made my life easy. Hot Reload felt like magic. I could tweak a widget, tap save, and boom—new screen.
But the app bundle was chunky. The first install took a bit. One plugin for Bluetooth also gave me fits. I had to read a lot of GitHub issues at 2 a.m. Still, animations were smooth, and the design felt “pro.”
If I need one codebase and lots of custom UI, I reach for Flutter. I just keep an eye on size. For a deeper dive into trimming bundle weight, the Flutter team’s guide on app size optimization is worth a skim.
2) React Native — JavaScript, but make it native
I made a parent-teacher chat app in React Native. Think read receipts, push alerts, and a big emoji picker. Fast Refresh was sweet. I reused some React mental models from web work, which helped my brain.
I did hit some bumps. Metro got grumpy at times. iOS builds would break until I cleaned pods. And lists needed care—FlatList or bust, or it stuttered. Turning on the Hermes engine helped the cold start. If you’re curious, the official Hermes docs break down what it does under the hood.
If you’re flirting with the idea of building a location-based dating or hookup app—a space that lives and dies by chat speed and push timeliness—check out FuckLocal's Adult Finder for a working example in the wild; browsing the service gives a clear picture of the real-time UX and privacy flows users expect.
It’s great if you live in JavaScript land. You can ship quick. Just plan for a few native bridges when you need deep device stuff.
If you’re hunting for more inspiration on how hyper-local, review-driven adult platforms lay out their map and listing flows, swing by Rubmaps Valdosta—studying its mix of geo filters, user ratings, and mobile-friendly cards is a fast way to spark ideas for your own location modules and UX patterns.
3) SwiftUI — iOS apps that feel cozy
I built a habit tracker for iPhone and Apple Watch in SwiftUI. The live previews felt like a warm blanket. I could test different font sizes with almost no work. VoiceOver support came along nicely too.
But SwiftUI can be picky across iOS versions. A ScrollView behaved one way on iOS 16 and another on 17. I pulled in some UIKit views when things got weird. Small app, though? It flies.
For pure Apple apps, I like it. It’s clean. It’s modern. Just keep a few UIKit tricks in your pocket.
4) Jetpack Compose — modern Android, less XML
I shipped a grocery list app with Jetpack Compose. I used Material 3, dark mode, and a fun little “shake to sort” trick. The preview tools saved me time. No more hunting through XML forests.
The first setup felt slow. Builds took their sweet time on my old laptop. And when I needed a map view, I had to wrap a classic View. Not hard, just extra steps.
If it’s Android first, I’m happy in Compose. It feels fresh but not fussy.
5) .NET MAUI — one codebase, many screens
I wrote a small barcode scanner for a corner shop using .NET MAUI. It scanned, tracked stock, and ran on Android, iOS, and Windows. One codebase. C#. I wired it to a simple SQLite file and called it a day.
Setup was the hard part. SDK paths, emulator hiccups, and hot reload that sometimes forgot to be hot. But once it ran, it felt steady. I used XAML for layout, then C# for the logic. The shop owner loved the big buttons.
If your team knows .NET, this can be a calm lane.
6) Ionic + Capacitor — web skills, app shell
I built a recipe app as a PWA first. Playing with phone sensors got me thinking about mobile AR too—here’s a hands-on dive into Samsung’s AR Zone app if you’re curious. Then I wrapped it with Capacitor to add camera and share. I wrote it with web tools I knew. That speed felt great. I pushed a fix in minutes, not days.
But you can feel the web roots. Fast scrolls felt a bit “glassy” on older phones. Heavy animations got choppy. For content apps, it’s fine. For games or fancy motion? I’d pass.
You know what? If you’re a web dev and need an app, this is your quick win.
7) NativeScript — native UI with JavaScript or TypeScript
I made a weekend activity planner in NativeScript. That sprint reminded me of an earlier challenge where I built a rapid web app in a single weekend and documented every hiccup. I liked that the UI was truly native, not a web view. I could tap into phone APIs right from TypeScript. Vibration, camera, the works.
The plugin scene felt smaller, though. A few docs were stale. I had to test more on real devices. It wasn’t hard. It just took care.
If you want native feel and you think in TypeScript, it’s worth a look.
8) Electron — desktop apps without tears
I wrote a screenshot and markup tool in Electron for Mac and Windows. It let folks grab a shot, add arrows, and send it fast. Hot reloading, easy menus, quick builds with electron-builder. Nice.
But memory use was… not tiny. On old laptops, it felt heavy. I shaved some stuff, but it’s still Chromium under the hood.
For cross-platform desktop, I’ll take it. I ship fast, and users get updates with no fuss.
9) Next.js — web apps that feel snappy
I built a room booking app with Next.js. Server-side render for the first view. API routes for simple data. Deployed on Vercel with one push. Pages loaded fast. Clients noticed.
The App Router took me a minute to learn. Server actions were new to me. Env keys bit me once. But once it clicked, it clicked.
If it’s a web app with lots of pages and login, this is my steady horse.
10) Angular — structured, serious, and team-friendly
I shipped an internal dashboard in Angular. Charts, filters, admin gates, the whole deal. The CLI set the rules, which helped the team. TypeScript plus RxJS kept the data flow clean.
But it’s not small. There’s boilerplate. Forms can feel wordy. New folks ask, “Why so many files?” I get it. Then I show them a big refactor that took twenty minutes, not two days.
For large apps with many devs, it keeps things tidy.
Real talk: what I reach for and when
- Need one codebase for iOS and Android, and UI is custom? Flutter.
- iOS only, small to mid app? SwiftUI.
- Android first? Jetpack Compose.
- Team is deep in .NET? .NET MAUI.
- Web team, simple content app, fast ship? Ionic + Capacitor.
- Web app with strong SEO or lots of pages? Next.js.
- Big team, strict structure? Angular.
- Desktop app, cross-platform, quick? Electron.
- JS/TS with native UI and direct device access? NativeScript.
- React skills, mobile app with some native parts? React Native.
Little lessons I keep taped to my monitor
- Hot reload saves hours. But don’t trust it blindly—do clean builds before release.
- Lists are hard. Use the right list view, or scrolling will stutter.
- Measure size and startup time early. Fixing late hurts.
- Test on a cheap phone. If it feels good there, you’re golden.
- Keep release tools handy. I use Fastlane for builds and Play Console/TestFlight notes.
Honestly, there’s no single “best.” There’s the one that fits your team, your deadline, and your users’ thumbs. Pick the tool that helps you ship with a smile—and a low bug count.