I wrote a few months back that AI coding is changing everything right now. I stand by that. But that was the broad view. The actual experience of building Flutter apps alone, with AI tools, day after day, that's a more specific story.

My background is unusual for this. Ten years as a computational linguist, mostly at Google. I know what language models can and can't do at a conceptual level. I know the difference between "the model understands Dart" and "the model has seen a lot of Dart patterns and is very good at continuing them." That distinction matters a lot when you're deciding how much to trust what it tells you.

So here's the honest version. What changed. What didn't. And what AI still consistently gets wrong when it comes to building apps with AI as a solo developer.

What Actually Got Easier

Boilerplate is basically free now. That sounds minor until you remember how much of Flutter development is boilerplate. Scaffold structure, StatefulWidget setup, the same six lines of ListView.builder you've typed a hundred times. I don't think about those anymore. I describe what I want and it appears.

State management was the thing that slowed me down most as a part-time developer. Not because I didn't understand it, I did, but because the patterns are verbose and I'd lose the thread when I came back to a project after two weeks. Now I describe the behavior I want and ask for the right approach. It's like having a patient pair programmer who never gets annoyed when you ask the same question again.

Error messages. This is underrated. Flutter error messages can be brutal, long stack traces, cryptic type errors, null safety complaints that reference five files at once. Pasting an error into an AI and asking "what is actually wrong here" saves me probably an hour a week. Not exaggerating.

Looking things up. I used to spend a lot of time on Stack Overflow and the Flutter docs just checking syntax. Which parameter comes first. What the exact constructor looks like. How to do X with package Y. A lot of that friction is just gone. If you're curious about what my terminal setup looks like, including AI coding tools, I wrote about that separately.

The Flutter Problem

Here's the thing nobody writes about: Flutter is a bad fit for AI coding tools, relative to something like JavaScript or Python.

Flutter moves fast. Material 3, the new navigation API, null safety, the updated Color system, the framework has changed significantly in the last two years. Most AI models were trained on data from before some of those changes. So they confidently suggest APIs that are deprecated, widget constructors that no longer exist, or patterns that were the right approach in 2021 and aren't anymore.

I've gotten burned by this more than once. The model says something with total confidence. I copy it in. It doesn't compile. I go check the actual docs and find out the API changed six months ago.

The model doesn't know what it doesn't know. That's the computational linguist in me talking. It's not reasoning about whether its training data is current. It's pattern-matching on what it's seen. If most of what it's seen is older Flutter code, it will produce older Flutter code and present it as correct.

The workaround I've settled on: whenever I'm working with something that's changed recently, navigation, theming, state management, I check the official docs before trusting the output. The AI is still useful for structure and boilerplate. But for anything version-sensitive, verify.

What AI Can't Do

It can't decide what to build. That sounds obvious but it's actually the hardest part.

I've built several Flutter apps because I had real problems I wanted to solve. Each one exists because of a decision that had nothing to do with code. Why this? Why now? Who is it for? What's the one thing it needs to do well? AI is useless for all of that. It'll happily generate an app concept if you ask, but that's not the same thing as having product instinct.

UX decisions are the same. AI will implement whatever you describe. It won't tell you that a bottom navigation bar with six items is a bad idea, or that your onboarding flow has too many steps, or that users will be confused by that interaction pattern. You have to bring that judgment yourself.

And debugging the subtle stuff, logic errors, state that updates incorrectly, animations that feel slightly off, that's still mostly me. AI can help narrow it down, but it's not good at reasoning about runtime behavior in a complex app. It's good at patterns. Runtime behavior in your specific app is not a pattern.

The Linguistic Angle

Knowing how these models work changed how I use them. I stopped asking "what's wrong with this code" and started asking "here is the behavior I'm seeing and the behavior I expect, what might cause that difference." I stopped saying "fix this" and started saying "explain what this is doing and suggest three approaches." I treat it less like a search engine and more like a collaborator who needs context.

The other thing: I don't get frustrated when it's wrong. A lot of developers I know get annoyed when the AI confidently produces bad code. I understand why it does that. It's not trying to deceive you. It's completing a pattern. If the pattern led somewhere wrong, it didn't know any better. That framing keeps me from over-trusting it and from dismissing it. Both failure modes are expensive.

That perspective is useful for using AI for writing too, by the way. Same principles apply.

The Bottom Line

Building apps with AI, alone, is meaningfully less painful than it was two years ago. The ceiling for what one person can ship in a reasonable amount of time has gone up. That's real.

BUT… it's not magic. Flutter's pace of change means AI output needs verification more than it would for a more stable stack. The product and UX decisions are still entirely yours. And the confident wrong answer, which happens regularly, is more dangerous for a beginner than for someone who knows enough to catch it.

If you're a solo developer thinking about using AI tools more seriously: yes. Absolutely. Just stay skeptical. Check the docs. Know what you're doing well enough to recognize when the output is wrong.

That last part isn't optional. The full list of tools I rely on might help if you're building your own stack.

A writer is nothing without a reader. If you found this helpful, consider becoming my dear email friend. Nothing would make me happier.