Coding · How-To

How to Actually Ship a Real App with Lovable (Instead of a Beautiful Demo You Can't Trust)

Six habits that separate the people shipping working products with Lovable from the people burning credits on refactor loops. Plan mode, knowledge files, frontend-first, and how to stop the AI before it eats your Saturday.

By Devin Osei · Analyst, Developer & Coding Tools · July 29, 2026

Nobody warns you about this part of Lovable: the demo is the easy bit. You type "build me a booking app," ninety seconds later you've got a booking app, you show your co-founder, everyone claps. Then you try to add real auth, real data, real edge cases, and three days later you're staring at a project that half-works, a credit balance that's evaporating, and a chat history where the AI has cheerfully "fixed" the same bug four times in a row.

That's not Lovable's fault. It's a prompting problem, a workflow problem, and a "you skipped the setup that would've saved you" problem. I've spent the last few months running Lovable against every other AI app builder on our bench, and the people who actually ship on it aren't the fastest typers. They're the most disciplined. These six habits are what separate them from everyone else.

1. Start in Plan mode, not Build mode

This is the single biggest shift, and the one everyone skips because Build mode feels faster. It isn’t. It just feels that way for the first ten minutes.

For anything bigger than a tweak, flip the chat into Plan mode. Plan mode is project-aware: Lovable inspects your files, database, and logs, asks clarifying questions, and proposes a structured plan you can edit before any code gets written. Plan mode is for decision-making, Build mode is for execution, and you can switch at any time.

Here’s why this matters more than it sounds: most AI mistakes happen because the AI doesn’t fully understand what you want to build. A vague prompt leads to assumptions, and assumptions lead to apps that miss the mark and credits down the drain. Plan mode is where you kill those assumptions before they cost you.

The workflow I run on every non-trivial change:

  1. Open Plan mode. Describe the feature in one paragraph: the user, the flow, the edge cases you already know about.
  2. Let Lovable ask its clarifying questions. Answer them honestly, not aspirationally.
  3. Read the plan it produces. Edit it. This is the step nobody does. If the plan says “add a users table” and you know you already have one, fix that before you approve.
  4. Approve one milestone at a time. Not the whole plan. One milestone.

An approved plan gets saved to .lovable/plan.md, Lovable switches to Build mode, and implementation kicks off from that approved version. Earlier plans stay in chat history even though only the latest approved plan lives in the file. That means you can go back. Use that. If Build mode goes sideways, you don’t have to start over, you have to go back to the plan.

The rule of thumb: for a small, obvious change, go straight to Build. For anything broad or high-risk, plan first. “Broad or high-risk” covers more of your changes than you think.

2. Write a knowledge file on day one, not day thirty

The knowledge file is the closest thing Lovable has to long-term memory, and 90% of people never touch it. Then they wonder why the AI keeps forgetting the app is for photographers, not personal trainers.

The knowledge file is always part of the context Lovable works with, so it never loses sight of what you’re building. A good knowledge file reads like a one-page brief, not a wiki.

What actually belongs in it, in order of how much it changes the output:

  • Who the product is for, in one sentence. Not “small businesses.” Try “a solo photographer who wants clients to book a session in under a minute.”
  • The main user journeys. Not features, journeys. “A client picks a session type, sees available slots, pays a deposit, gets a confirmation email.”
  • The design register. Describe the feel, not just the layout. Style words like “calm,” “premium,” “playful,” or “bold” meaningfully change typography, spacing, and color. Pick two or three and commit.
  • Role-specific behavior. If you have admins, members, and guests, spell out what each one can and can’t do. This is where authorization bugs come from.
  • What you’ve already built. Keep it current.

If you’re twenty prompts into a project without a knowledge file, don’t panic, you can generate one after the fact. Ask Lovable in Plan mode: generate a knowledge file for this project based on what we’ve built so far. Read it, fix the parts it got wrong, save it. Everything from that point on gets easier.

3. Build the whole frontend before you touch the database

This feels backwards if you come from a traditional dev background, where the data model is where you start. In Lovable, that’s the fastest way to spend a day arguing with the AI about schema migrations when you could’ve been figuring out whether your app even makes sense.

Build frontend-first. Start with sample data, get the screens and flows right, and connect the database once the product feels right. Frontend-first iterates faster and keeps early sessions about your product instead of your data model.

In practice: build every screen with hardcoded fake data. Fake bookings, fake users, fake dashboards. Click through the whole app as if it’s real. You’ll find three flows that don’t make sense, two screens you don’t need, and one field that belongs on a different page. Fixing those with fake data takes one prompt each. Fixing them after you’ve wired up Supabase takes ten.

When do you switch on the database? The moment information has to survive a page refresh or be shared between users: saved bookings, user accounts, uploaded files. Until then, sample data is faster and cheaper to iterate on. That’s the trigger. Not “when I feel ready.” When the state actually needs to persist across sessions.

4. Prompt like a product manager, not a designer

Vague prompts are how you burn a hundred credits producing four versions of a landing page that all miss the point. Specific prompts are how you get the thing you actually wanted on the first try.

Bad prompt: “Make the dashboard better.”

Good prompt: “On the dashboard, replace the raw revenue number with a card that shows this month’s revenue, the delta versus last month as a percentage, and a small sparkline of the last twelve weeks. Keep the existing layout; only change the one card.”

The difference is that the good prompt tells Lovable what to change, what not to change, and what success looks like. The bad one leaves all three to guessing.

A few discipline moves that compound:

  • Reference specific files with @. Use @ to reference a file or project. In the code editor, you can also reference exact lines. Focused references reduce exploration and make the request easier to review. Every prompt that says “@Dashboard.tsx” instead of “the dashboard” is a prompt that costs less and lands better.
  • One change per prompt. Ask for five things and you’ll get three of them right, one half-right, and one broken. Stack the prompts instead.
  • Attach a screenshot when the words aren’t enough. Take a screenshot of a site or app and paste it into Lovable to convert it into functional code. Same trick works for “make this look like that.” A reference beats a paragraph.

5. Stop the AI when it starts spinning

This is the habit that separates people who ship from people who watch the credit meter tick. Lovable will happily “fix” the same bug four times, each attempt slightly worse than the last, if you let it. Don’t let it.

The rule: stop repeating the fix attempt after two or three tries. Switch to Plan mode and ask Lovable to investigate the root cause before changing code. If a session has gone sideways, restore the last good version from history, or remix the project for a clean start.

Two tries. That’s it. If the same error is still there on the third attempt, you’ve stopped debugging and started praying. Switch to Plan mode, paste the error, and explicitly ask: “Do not change any code. Investigate why this is happening and propose three possible root causes ranked by likelihood.”

You’ll be shocked how often the actual cause is something totally different from what Build mode was trying to fix. And Build mode shows current tasks, files, tools, and progress in a Details view. Use it to spot unexpected scope or repeated failures. If the Details view shows Lovable touching fifteen files to fix a button color, stop it manually. That’s a scope problem, not a code problem.

6. Wire up GitHub before you have anything worth losing

The most expensive lesson people learn on Lovable is that a bad session can eat a good project. The fix is embarrassingly simple: turn on Git sync before you get attached to what you’ve built.

Everything Lovable builds is a real application, and the code is yours. Code view: read and edit the code right in the editor whenever you’re curious or want precise control. Git sync: connect your project to GitHub or GitLab for a synced copy in your own repository. Edit in your favorite IDE or let teammates contribute, and changes flow both ways. Portability: you can host your app outside Lovable whenever you choose. Nothing locks you in.

This does three things for you at once:

  • A real undo. Lovable’s history is good; a git log you control is better. When a session goes sideways, you’ve got a commit to check out.
  • An escape hatch. If you ever decide Lovable isn’t the right tool anymore, you don’t need to rebuild. The code is already yours, in your repo, in a framework any developer recognizes.
  • A place for a real developer to help. The moment you need someone to fix something Lovable can’t, they can clone the repo, patch it locally, and push it back. Changes flow both ways.

Turn it on in the first session. Not the tenth.

The bonus habit: verify the boring things

Before you publish anything with real users, do the checks that feel too obvious to bother with. Verify the database the reliable way: open your app in two browser tabs, create a booking in one, and refresh the other. If it appears, you have a real backend. Then control who sees what. Add sign-in so [the owner] can log in to manage her schedule while clients book without an account. After adding accounts, always test with two different users to confirm one user’s private data is invisible to the other. This is also the moment to run your first security scan: finding a problem now is far cheaper than at publish time.

Two-tab test. Two-user test. Security scan. Ten minutes total. It’ll catch the one bug that would otherwise show up on launch day as a very awkward support email.

The habit that ties it all together: treat Lovable like a very fast, slightly overconfident junior developer, not a magic box. Junior devs need briefs (knowledge file), plans before big work (Plan mode), narrow tasks (one change per prompt), and someone who stops them when they’re spinning (the two-try rule). Give it those four things and it’ll genuinely ship for you. Skip them and you’ll have a great demo and no product. The people getting real work out of Lovable aren’t the ones typing the fastest. They’re the ones running the process.

Sources