> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rork.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plan mode: see the whole app before you build

> Plan mode makes Rork write a plan before it changes any code. For a new app, the plan also draws the key screens and a flow diagram. Read it, change it in chat, then press Build.

export const CtaBanner = () => <div style={{
  display: "flex",
  alignItems: "center",
  justifyContent: "space-between",
  gap: "24px",
  flexWrap: "wrap",
  margin: "40px 0 8px",
  padding: "22px 28px",
  borderRadius: "16px",
  background: "linear-gradient(135deg,rgba(249,115,22,0.10),rgba(255,255,255,0.03),rgba(249,115,22,0.06))",
  border: "1px solid rgba(255,255,255,0.08)"
}}>
    <div>
      <div style={{
  fontSize: "19px",
  fontWeight: 700,
  color: "#fff",
  letterSpacing: "-0.3px",
  lineHeight: 1.3
}}>
        Build your app with Rork today.
      </div>
      <div style={{
  fontSize: "14px",
  color: "rgba(255,255,255,0.6)",
  marginTop: "4px",
  lineHeight: 1.5
}}>
        Ship iOS, Android, and web apps by chatting with AI.
      </div>
    </div>
    <a href="https://rork.com?utm_source=docs&amp;utm_medium=referral&amp;utm_campaign=docs-cta&amp;utm_content=cta-banner" onClick={tagCtaLink} style={{
  flexShrink: 0,
  display: "inline-block",
  padding: "10px 24px",
  background: "linear-gradient(135deg,#fff,#f0f0f0)",
  color: "#000",
  fontSize: "14px",
  fontWeight: 600,
  borderRadius: "100px",
  textDecoration: "none",
  whiteSpace: "nowrap"
}}>
      Try Rork for Free
    </a>
  </div>;

export const frame = {
  margin: "8px 0 12px",
  borderRadius: "16px",
  overflow: "hidden",
  border: "1px solid color-mix(in srgb, currentColor 12%, transparent)",
  boxShadow: "0 18px 40px rgba(0,0,0,0.25)",
  lineHeight: 0
};

export const frameCaption = {
  margin: "0 0 32px",
  fontSize: "13px",
  lineHeight: 1.5,
  opacity: 0.55,
  textAlign: "center"
};

export const frameMedia = {
  width: "100%",
  height: "auto",
  display: "block",
  margin: 0,
  border: 0,
  borderRadius: 0,
  verticalAlign: "top"
};

export const PlanClip = ({slug, title, caption}) => <figure style={{
  margin: "16px 0 8px"
}}>
    <div style={frame}>
      <video src={`/videos/plan-mode/${slug}.mp4`} poster={`/videos/plan-mode/${slug}.jpg`} aria-label={title} autoPlay muted loop playsInline controls preload="metadata" style={{
  ...frameMedia,
  aspectRatio: "16 / 9"
}} />
    </div>
    <figcaption style={frameCaption}>{caption}</figcaption>
  </figure>;

<div style={frame}>
  <video src="https://mintcdn.com/rork/0bVIqeNYsZnxvT6R/videos/plan-mode/plan-mode-demo.mp4?fit=max&auto=format&n=0bVIqeNYsZnxvT6R&q=85&s=c603bcffb728eb10c670e0b695aa9d75" poster="/videos/plan-mode/plan-mode-demo.jpg" controls playsInline preload="metadata" aria-label="Plan mode demo: a prompt is sent in Plan mode, the plan draws a habit tracker's screens and flow diagram, a follow-up adds a calendar screen, then a recipe app is planned and Build is pressed on its Review Plan card" style={{ ...frameMedia, aspectRatio: "16 / 9" }} data-path="videos/plan-mode/plan-mode-demo.mp4" />
</div>

<p style={frameCaption}>Plan mode in 23 seconds. Turn the sound on for the music.</p>

Plan mode makes Rork think before it builds. You describe the app or the change, Rork asks a few questions, and it writes a plan. It changes no code until you press **Build**.

For a new app, the plan also draws the app's key screens and a small diagram of how they connect. You see the whole app before a single file exists, and a change costs one message instead of a rebuild.

| Use Plan mode when | Use Build when |
| - | - |
| You start a new app and want to see it first | You know exactly what you want |
| The change touches many screens | The change is small, like a color or a label |
| You are not sure how a feature should work | You fix a bug or a typo |

## Turn on Plan mode

The mode menu sits next to the model picker in the composer. It shows the current mode, **Build** by default. Open it and pick **Plan**.

<div style={frame}>
  <img src="https://mintcdn.com/rork/30UXYOS1IBKR0K1F/images/plan-mode/mode-menu.png?fit=max&auto=format&n=30UXYOS1IBKR0K1F&q=85&s=642817063551ca934ebb527c1f0224cd" alt="The Rork composer with the mode menu open. Three rows: Build, Build and edit your app. Plan, Plan the features and screens before building. Design, Explore the look before building." style={frameMedia} width="725" height="378" data-path="images/plan-mode/mode-menu.png" />
</div>

<p style={frameCaption}>The mode menu. Before an app exists, Plan reads "Plan the features and screens before building".</p>

The same menu sits on the home screen and inside every project. Only one mode is on at a time: picking **Plan** turns **Design** off.

Two faster ways in:

* On the home screen, press **P** when you are not typing. It switches Plan on or off and opens the menu so you see the change.
* Open [rork.com/?plan=true](https://rork.com/?plan=true\&utm_source=docs\&utm_medium=referral\&utm_campaign=docs-cta\&utm_content=plan-mode-link). The home screen opens with **Plan** already on.

<Note>
  Plan mode stays on for the project until you press **Build** on a plan, pick **Build** in the menu, or approve **Return to Agent Mode?**. Rork remembers the choice in your browser, so it survives a reload.
</Note>

## How a plan comes together

<Steps>
  <Step title="Send your idea">
    Describe the app or the change in plain words. You do not need a spec. "A habit tracker with daily check-ins, streaks and weekly stats" is enough.
  </Step>

  <Step title="Rork reads before it writes">
    Rork looks through your project and, when it helps, the web. In Plan mode it can read but not write: every tool that changes files is switched off.
  </Step>

  <Step title="Answer the questions">
    Rork batches its open questions into one **Questions** card. Colors and layouts come as pictures, so you pick a look instead of describing one. Type your own answer in **Other...**, or press **Skip**. Press **Submit** when you are done.
  </Step>

  <Step title="Read the plan">
    Rork writes the plan and shows a **Review Plan** card at the end of its answer. **View Plan** opens the plan in the panel on the right. For a new app, the screens fill in as Rork draws them.
  </Step>

  <Step title="Change it, or build it">
    Reply in chat to change the plan. When it is right, press **Build**.
  </Step>
</Steps>

<div style={frame}>
  <img src="https://mintcdn.com/rork/30UXYOS1IBKR0K1F/images/plan-mode/questions.png?fit=max&auto=format&n=30UXYOS1IBKR0K1F&q=85&s=b89df9edb07e7b6b6156d0a49b712ad2" alt="A Rork Questions card on question 4 of 4, Which colors should it use, with four palette tiles named Soft orb, Still pond, Night glow and Warm clay, then Surprise me, an Other field, Skip and Submit" style={frameMedia} width="752" height="795" data-path="images/plan-mode/questions.png" />
</div>

<p style={frameCaption}>Questions arrive in one card. A color question shows each option as a palette.</p>

Rork asks at most two rounds of questions. After that it writes the plan with what it knows, so a plan never turns into an interview.

## What a plan contains

A plan is written for a person, not for a programmer. It describes what the app does and how it looks. It never lists file names, libraries, or code.

| Section | What it says |
| - | - |
| **Title and overview** | One line about the app, in everyday words. The same lines show on the **Review Plan** card. |
| **Screens** | For a new app: 3 or 4 key screens, drawn as pictures. |
| **Features** | What people can do in the app, one line each. |
| **Design** | Layout, colors by name, and motion, in plain words. |
| **Flow** | A small diagram of how the screens connect, when a picture explains it faster than text. |
| **Goals** | For hard parts only: each goal says what "done" looks like. |

<div style={frame}>
  <img src="https://mintcdn.com/rork/30UXYOS1IBKR0K1F/images/plan-mode/plan-viewer.jpg?fit=max&auto=format&n=30UXYOS1IBKR0K1F&q=85&s=fd56fa17c5d19d14595e54c51f77ad1b" alt="A Rork plan open in the plan panel: four drawn screens named Today, Habits, Calendar and Stats, then a Features list, a Flow diagram from Today to Habit list to Calendar to Weekly stats, and two Goals, each with a done-when line" style={frameMedia} width="1204" height="830" data-path="images/plan-mode/plan-viewer.jpg" />
</div>

<p style={frameCaption}>A new app's plan: its screens, then Features, Flow, and Goals.</p>

A small change gets a small plan. A new app gets a fuller one. A plan can also show pictures, for example a reference design Rork found or a screen your app already has, and a diagram box can carry a screen.

<div style={frame}>
  <img src="https://mintcdn.com/rork/30UXYOS1IBKR0K1F/images/plan-mode/plan-diagram.jpg?fit=max&auto=format&n=30UXYOS1IBKR0K1F&q=85&s=4ad5befeea8e5380f99406fb844ad2de" alt="The plan panel for a meditation app called Serene Moment, with a Close button and ESC hint in the header, and a Flow diagram where Timer leads to Session, Sounds and Journey, each box showing its screen" style={frameMedia} width="1206" height="828" data-path="images/plan-mode/plan-diagram.jpg" />
</div>

<p style={frameCaption}>A Flow diagram whose boxes show the drawn screens. Close the panel with Close or Esc.</p>

The plan panel is read-only. To change a plan, ask Rork in chat. This keeps the plan Rork reads and the plan you read the same file.

## Tutorial 1: plan a new app

This walkthrough takes about five minutes. You end with a plan, drawn screens, and a running app.

<Steps>
  <Step title="Pick Plan and send your idea">
    On the home screen, open the mode menu and pick **Plan**. Type your idea and send it.

    ```
    A habit tracker with daily check-ins, streaks and weekly stats
    ```

    <PlanClip slug="plan-mode-pick-plan" title="Animated walkthrough: open the mode menu, pick Plan, type a habit tracker idea, and send it" caption="Open the mode menu, pick Plan, type the idea, send." />
  </Step>

  <Step title="Answer the questions">
    Rork usually asks what the app is mainly for and which features the first version must have. Then it asks one to three questions about the look, unless your message already settles it. Pick the answers that feel right and press **Submit**.
  </Step>

  <Step title="Watch the plan and its screens arrive">
    The plan opens on the right by itself, because a new project has no preview yet. The screens fill in one by one. Scroll down for Features, Flow, and Goals.

    <PlanClip slug="plan-mode-read-plan" title="Animated walkthrough: the plan opens, four habit tracker screens are drawn into it, then the plan scrolls to Features, Flow and Goals" caption="The screens are drawn into the plan, then come Features, Flow, and Goals." />
  </Step>

  <Step title="Press Build">
    The **Review Plan** card waits at the end of Rork's answer. Press **Build**. Rork switches Plan mode off, opens the preview, and builds the app from the plan and its screens.

    <PlanClip slug="plan-mode-build" title="Animated walkthrough: the Review Plan card for Habit tracker, Build is pressed, and the preview shows the design being built" caption="Press Build on the Review Plan card. The preview shows the design being built." />
  </Step>
</Steps>

<Tip>
  Put the look into your first message and Rork has fewer questions to ask. "A calm habit tracker, white background, green accents" settles most of the design questions before they come up.
</Tip>

## Tutorial 2: change the plan before you build

The cheapest moment to change your mind is before the build. Every change here costs one message, not a rebuild.

<Steps>
  <Step title="Keep Plan mode on">
    After the first plan, the mode menu still reads **Plan**. Leave it that way.
  </Step>

  <Step title="Ask for the change in chat">
    Say what you want in plain words. Rork edits the same plan file instead of starting a new one.

    ```
    Add a calendar for my month
    ```

    <PlanClip slug="plan-mode-change-plan" title="Animated walkthrough: a follow-up asks for a calendar, and the plan gains a fourth screen and a new branch in its flow diagram" caption="One message adds a Calendar screen and a new branch in the Flow." />
  </Step>

  <Step title="Check what changed">
    For a new app, Rork redraws only the screens the change affects. A visual change, like "make it orange", updates the screens and the plan's Design section together.
  </Step>

  <Step title="Build when it is right">
    The **Review Plan** card moves to Rork's latest answer. Press **Build** there.
  </Step>
</Steps>

Good change requests are short and specific:

```
Make it orange and warmer
```

```
Drop the Stats screen, put the weekly view on Today
```

```
Add a sign-in screen before Today
```

## Tutorial 3: plan a big change in an app you already have

Plan mode is not only for new apps. Use it before a change that touches many screens, like accounts, payments, or a new section.

<Steps>
  <Step title="Open the project and pick Plan">
    Open the mode menu in the project's composer and pick **Plan**. In an existing app, the row reads "Map out the work before building".
  </Step>

  <Step title="Describe the outcome">
    Say what people should be able to do, not how to code it.

    ```
    Let people book a class, pay for it, and see their upcoming bookings
    ```
  </Step>

  <Step title="Read the plan">
    Rork reads your code first, so the plan fits the app you have. A plan for an existing app has no drawn screens: your preview already shows the app. Press **View Plan** to read it.

    <div style={frame}>
      <img src="https://mintcdn.com/rork/30UXYOS1IBKR0K1F/images/plan-mode/review-plan-card.png?fit=max&auto=format&n=30UXYOS1IBKR0K1F&q=85&s=71706ccf4646a8837acc87bb524f33d7" alt="A Rork Review Plan card under the line Created plan: Recipe box, with the overview Save the recipes you love and turn any of them into a shopping list, and View Plan and Build buttons" style={frameMedia} width="940" height="464" data-path="images/plan-mode/review-plan-card.png" />
    </div>

    <p style={frameCaption}>The Review Plan card. View Plan opens the plan, Build starts the work.</p>
  </Step>

  <Step title="Build">
    Press **Build**. Rork sends `Build the plan.` for you, turns Plan mode off, and works through the plan. It ticks off each item as it finishes it.
  </Step>
</Steps>

You can also type "go" instead of pressing **Build**. Rork then shows a **Return to Agent Mode?** card. Press **Approve** and it starts building.

## When Rork suggests Plan mode

In Build mode, Rork can ask to switch when a request looks large or has several sensible answers. A **Switch to Plan Mode?** card appears with a short reason.

* **Approve** turns Plan mode on, and Rork plans before it builds.
* **Decline** keeps Build mode, and Rork goes on with your request.
* No answer in 30 seconds cancels the switch. The card shows how many seconds are left.

Rork asks at most once per message. If you asked for a plan yourself and the switch timed out, Rork stops and asks you to approve it or turn on **Plan** in the menu.

## After you press Build

* **Build** sends `Build the plan.` and switches Plan mode off for you. No extra approval is needed.
* The card then shows **Built** instead of **Build**. **View Plan** stays, so you can reopen the plan at any time.
* Rork keeps the latest plan in front of it on every later message, and ticks off items as it finishes them.
* Each goal becomes its own task. Rork marks a goal done only when its "done when" line is true, or it tells you what is missing.

Plans live in `.rork/plans/` in your project, one file per plan. They travel with your code to GitHub, but they stay out of the file tree in Rork.

## What Plan mode cannot do

* It does not change code. Rork only reads, asks, and writes the plan.
* You cannot edit the plan by hand in Rork. The plan panel is read-only, so ask Rork in chat.
* Drawn screens are for new apps only. Once the app exists, a plan is text, pictures, and a diagram.
* Rork asks at most two rounds of questions per plan.
* The mode menu hides while a Design mode session is open. Finish the design or build it first.
* A plan is a strong guide, not a promise of the exact result. Check the preview after the build and ask for fixes as usual.

## FAQ

<AccordionGroup>
  <Accordion title="Does Plan mode cost extra?">
    Plan mode has no separate price. A plan message spends build credits like any other message. For a new app, the drawn screens add to the cost of that message, the same way Design mode screens do. See [Build credits vs Cloud credits](/billing/build-credits-vs-cloud-credits).
  </Accordion>

  <Accordion title="What is the difference between Plan mode and Design mode?">
    Design mode is about the look: it proposes screens and nothing else. Plan mode covers the whole app: features, screens, flow, and goals. For a new app, a plan includes its screens, so you get the design inside the plan. See [Design mode](/features/design-mode).
  </Accordion>

  <Accordion title="I pressed Build by mistake. What now?">
    Rork starts building from the plan. Stop the message, or let it finish and roll back with [Undo and version history](/features/undo-and-history). The plan file stays, so you can press **View Plan** and continue later.
  </Accordion>

  <Accordion title="Can I go back to an older plan?">
    Every plan is its own file in `.rork/plans/`, and Rork follows the newest one. Ask Rork in chat to bring parts of an older plan back into the current plan.
  </Accordion>

  <Accordion title="Rork asked me to switch and I missed it. Is that a problem?">
    No. After 30 seconds the card says the switch timed out, and Rork goes on in Build mode. Turn on **Plan** in the menu and send the message again if you want a plan.
  </Accordion>

  <Accordion title="Does Plan mode work on my phone?">
    Yes. On a phone, the mode menu opens as a dialog in the middle of the screen. Pick **Plan** there.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card icon="palette" href="/features/design-mode" title="Design mode">
    Settle the look of a new app before you build.
  </Card>

  <Card icon="lightbulb" href="/introduction/introduction/prompting-strategy" title="How to prompt successfully">
    Write the first message that makes a good plan.
  </Card>

  <Card icon="arrow-pointer" href="/features/element-selection" title="Element Selection">
    After the build, point at a part of the app and change it.
  </Card>

  <Card icon="rotate-left" href="/features/undo-and-history" title="Undo and version history">
    Roll back a build you did not like.
  </Card>
</CardGroup>

<CtaBanner />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.