A user flow is a sequence of steps a real person takes through your app to reach a specific outcome — trigger, action, result. A feature list is a roster of capabilities: auth, dashboard, notifications, payments. Both serve a purpose, but when you hand a feature list to an AI tool and expect a working app, you get a collection of screens that do not connect. When you hand it a user flow, you get an app that makes sense from the first tap to the last.
Most founders plan their AI-built apps by features. They open Claude Code, Cursor, or Lovable and type: “I need authentication, a dashboard, project creation, team invitations, and notifications.” The AI obliges. It generates each piece. But the pieces do not connect. The dashboard shows nothing after signup. Notifications exist but never fire. The invite flow works in isolation but drops the user into an empty screen afterward.
This post explains why feature lists cause that problem, how to convert them into user flows, and when feature lists still matter.
Why a feature list produces disconnected app screens
A feature list tells the AI what exists. It does not tell the AI when a user encounters each piece or why they need it at that moment. The AI treats each feature as a standalone prompt. It builds authentication without knowing what the user sees after login. It builds notifications without knowing what triggers them. It builds a dashboard without knowing whether the user has data yet.
The result is a set of screens arranged like tools on a pegboard — each one functional in isolation, none of them linked by a story the user can follow. Empty states go unhandled. Transitions between screens feel abrupt. Settings pages exist for features that have no visible effect.
This is not an AI limitation. It is an input problem. The AI built exactly what you described. You described parts, not a path.
Why a user flow produces a coherent app
A user flow template forces you to think in sequences: a trigger starts the flow, a series of steps moves the user forward, and an outcome confirms the job is done. When you describe your app this way, the AI generates screens that connect. Each screen has a reason to exist, a clear entry point, and a clear exit.
Consider the difference for a simple project management app:
Feature list input:
- User authentication
- Project dashboard
- Task creation
- Team invitations
- Notifications
User flow input:
- A new user signs up and lands on an empty dashboard with a prompt: “Create your first project.”
- The user creates a project, names it, and sees it appear on the dashboard.
- The user opens the project, adds a task, and assigns it to themselves.
- The user invites a teammate by email. The teammate receives an invitation, signs up, and lands inside the same project.
- When the teammate completes a task, the original user receives a notification.
Both inputs describe the same app. The second one tells the AI how the pieces relate. The empty state has a purpose. The invitation leads somewhere. The notification has a trigger. The AI can generate screens that form a path because you gave it a path.
How to plan app screens with a three-step user flow template
Use this template for every core journey in your app. Each flow follows the same structure: trigger, steps, outcome.
USER FLOW: [Name of the flow]
Trigger:
[What causes this flow to start -- a first visit, a button tap, a time-based event]
Steps:
1. [What the user sees and does first]
2. [What happens next and what the user sees]
3. [Continue until the job is done]
Outcome:
[What the user has accomplished -- and what they see that confirms it] Example: Onboarding flow for a project management app
USER FLOW: New user onboarding
Trigger:
User signs up from the landing page.
Steps:
1. User lands on an empty dashboard. A card reads: "Create your first project."
2. User clicks the card, enters a project name, and confirms.
3. The project appears on the dashboard. A second prompt reads: "Add your first task."
4. User creates a task inside the project.
Outcome:
The dashboard shows one project with one task. The empty state is gone. The user has experienced the core loop. Write one flow like this for each core journey: onboarding, the main repeated action, inviting others, and any payment or upgrade path. Three to five flows cover most early-stage apps.
Checklist: convert your feature list into user flows
Use this to turn a feature-based plan into a flow-based plan before you open any AI tool:
- List your features in one column.
- For each feature, ask: “When does a user first encounter this?” Write the trigger.
- Order features by the sequence a new user would experience them — not by technical complexity.
- Connect each feature to the one before it. What does the user see after each step?
- Write the outcome: what has the user accomplished at the end of this sequence?
- Identify empty states. What does each screen look like before the user has data?
- Name each screen explicitly. “Dashboard (empty state)” and “Dashboard (with projects)” are two different designs.
- Mark any feature that no flow touches. Either write a flow for it or cut it from v1.
This exercise takes 30 minutes. It saves days of rework inside the AI tool.
When feature lists still matter for planning app screens
Feature lists are not useless. They serve a different purpose:
Scoping. A feature list tells you how large the project is. It helps you decide what belongs in v1 and what waits.
Pricing tiers. If your product has plans, features map to tiers. “Free: 3 projects. Pro: unlimited projects, team invitations, file attachments.”
Technical requirements. Some features imply backend work that the AI tool should know about: real-time updates require WebSockets, file uploads require storage, payments require a third-party integration. A feature list is the right format for surfacing these dependencies.
Stakeholder communication. Investors, co-founders, and advisors think in features. A feature list is a quick reference for what the product can do. It communicates scope without requiring anyone to read through flows.
The mistake is using a feature list as your build plan. Use it for scoping and communication. Use flows for building.
Signs your AI-built app was planned by features, not flows
These symptoms appear in apps where the founder described capabilities instead of journeys:
- Empty screens after signup. The dashboard exists but shows nothing because no flow described what a new user sees first.
- Dead-end pages. A settings screen or profile page with no clear path back to the main action. The user arrived but has no next step.
- Notifications that notify nothing. The notification system exists, but no event in the app triggers a message. The feature was listed; the trigger was not.
- Invite flows that strand the invitee. A teammate accepts an invitation and lands on a generic dashboard instead of inside the project they were invited to.
- Duplicate functionality across screens. Task creation appears in three places with slightly different forms because the AI generated each feature independently.
- Settings pages for unused features. Toggle switches and configuration panels for capabilities no user flow ever reaches.
- No confirmation that an action worked. The user submits a form and nothing visibly changes. The feature processes data; the flow never confirmed the outcome.
If three or more of these describe your app, the fix is not more features. It is rewriting your plan as user flows and regenerating the screens that connect them.
From feature list to user flow: what changes in your AI workflow
Shifting from features to flows changes how you prompt AI tools. Instead of “Build me authentication, a dashboard, and notifications,” you describe a journey: “A new user signs up, sees an empty dashboard, creates their first project, and receives a confirmation.” The AI generates screens that form a path because you provided one.
This shift also changes when you catch problems. Feature-based planning hides gaps until you click through the app and discover that screens do not connect. Flow-based planning surfaces those gaps on paper, before you generate a single line of code.
At Spin by Fryga, we see this pattern in nearly every AI-built app we audit. The founder described features. The AI built features. The app feels like a parts catalog, not a product. The fix is not a rewrite — it is restructuring the plan around user flows and wiring the transitions that were never specified. Your feature list started the project. User flows make it a product people can use.