But the apps are bad.
I tried building a polished app with one of these tools and the moment I needed a premium, native-feeling design, I hit a wall. Everything looked like AI slop. Animations were janky. Platform conventions were ignored. Try getting one of these approved on the App Store without weeks of cleanup. Apple doesn't love Expo wrappers, and users can feel the difference whether they can articulate it or not.
So when I started building Nativeline, I made what most people told me was the wrong bet: generate real SwiftUI for iPhone, iPad, and Mac. No React Native. No web views. Actual native Swift that opens in Xcode and builds.
This was significantly harder. Here's why.
The biggest challenge is that LLMs are trained on the entire history of Swift, including five years of deprecated APIs, old UIKit patterns, and SwiftUI code from when it was half-baked. Getting the model to generate modern, clean SwiftUI without reaching for GeometryReader for every layout problem or calling APIs that haven't existed since iOS 15 was a serious effort. It's not just about generating code that runs. It's about generating code that builds without errors, follows current conventions, and reads like something a good Swift developer would actually write.
Then there's keeping up with Apple. When Liquid Glass dropped, every existing LLM was useless for generating UI that used the new framework. If you're generating React Native, you don't really care, you're abstracted away from platform changes. But if you're generating native Swift, staying current with Apple's frameworks isn't optional. It's the whole point.
What we got right: The output is real SwiftUI that you own. Full Xcode project on your machine. One user described a Mac app idea, iterated on it over about 6 days, and is now selling it on the Mac App Store. He didn't write Swift before that. The code was clean enough to ship and maintain.
What we're still working on: Complex backend integrations are hard. Database connections, Supabase, CloudKit, anything with real data persistence, still produce more errors than we'd like. We're working on building deeper internal documentation for the AI specifically around database patterns, potentially our own managed backend, so the model has reliable patterns to follow instead of hallucinating schema configurations.
I think the industry defaulted to React Native because it was the easier path for the builder of the tool, not because it was better for the user of the apps. The hard bet is generating native code. But the output difference is obvious the moment you use the app.
Nativeline is free to try: https://nativeline.ai
Happy to answer questions about the technical approach, the tradeoffs, or anything else.