> ## 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.

# AI App Store Reviewer

> Rork reads your iOS build against the App Store Review Guidelines before Apple does, and reports each rejection risk with its guideline number, the evidence behind it, and a suggested fix.

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" 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 areaList = {
  margin: "20px 0 28px",
  borderRadius: "14px",
  overflow: "hidden",
  border: "1px solid color-mix(in srgb, currentColor 12%, transparent)",
  background: "linear-gradient(135deg, rgba(249,115,22,0.10), transparent 60%)"
};

export const area = {
  display: "flex",
  alignItems: "center",
  justifyContent: "space-between",
  gap: "12px",
  padding: "11px 16px",
  borderTop: "1px solid color-mix(in srgb, currentColor 8%, transparent)"
};

export const areaFirst = {
  ...area,
  borderTop: "none"
};

export const areaName = {
  fontSize: "15px",
  fontWeight: 600,
  letterSpacing: "-0.2px"
};

export const areaGuideline = {
  fontSize: "12px",
  opacity: 0.55,
  whiteSpace: "nowrap"
};

<div className="reviewer-frame" style={frame}>
  <video src="https://mintcdn.com/rork/9GpDw-qykwtqiMSN/videos/ai-app-store-reviewer/reviewer-demo.mp4?fit=max&auto=format&n=9GpDw-qykwtqiMSN&q=85&s=e6610a49f728971d940330e3796e4cf1" poster="/videos/ai-app-store-reviewer/reviewer-demo.jpg" autoPlay muted playsInline controls aria-label="Opening More, App Store, App Review in a Rork project and running the AI App Store Reviewer until the report appears" style={frameMedia} data-path="videos/ai-app-store-reviewer/reviewer-demo.mp4" />
</div>

<p style={frameCaption}>The whole flow: open More → App Store → App Review, press Run, and read the report.</p>

Apple's review takes days, and a rejection costs you another round trip. The **AI App Store Reviewer** reads the build you are about to submit and tells you what a reviewer is likely to flag, before you send it.

It checks five areas at once, the same five sections the App Store Review Guidelines use:

<div className="reviewer-areas" style={areaList}>
  <div className="reviewer-area" style={areaFirst}>
    <span style={areaName}>Safety</span>
    <span style={areaGuideline}>Guideline 1.x</span>
  </div>

  <div className="reviewer-area" style={area}>
    <span style={areaName}>Performance</span>
    <span style={areaGuideline}>Guideline 2.x</span>
  </div>

  <div className="reviewer-area" style={area}>
    <span style={areaName}>Business</span>
    <span style={areaGuideline}>Guideline 3.x</span>
  </div>

  <div className="reviewer-area" style={area}>
    <span style={areaName}>Design</span>
    <span style={areaGuideline}>Guideline 4.x</span>
  </div>

  <div className="reviewer-area" style={area}>
    <span style={areaName}>Legal</span>
    <span style={areaGuideline}>Guideline 5.x</span>
  </div>
</div>

<Info>
  The reviewer is advisory. It never blocks a submission and it never promises an approval. Apple makes the final decision, and Apple's own review still takes days.
</Info>

## What you need

* A paid Rork subscription of any tier. Credits do not substitute for a subscription here.
* Editor access to the project. Viewers can open the panel and read past reports, but cannot start a review.
* An iOS app in the project: a Swift app, or an older Expo project. Android and web apps are not reviewed.

## Run a review

<Steps>
  <Step title="Open More, then App Store">
    In your project, open **More → App Store** and stay on the **App Review** tab. It is the first tab. The reviewer does not live in the publish menu.
  </Step>

  <Step title="Check the build in the panel header">
    Under the title you see the app name and the build being reviewed, for example `Current build src_62bb`. Before the first run the panel lists the five areas it covers.

    <Frame caption="The panel before the first run, with the five review areas and the Run button">
      <img src="https://mintcdn.com/rork/V9VmHf1n96rEBxWy/images/ai-app-store-reviewer/panel-before-run.jpg?fit=max&auto=format&n=V9VmHf1n96rEBxWy&q=85&s=8604ca2d16d0dfdda62d34c73d480414" alt="AI App Store Reviewer panel showing Check this build for App Review risks with Safety, Performance, Business, Design and Legal" width="1160" height="394" data-path="images/ai-app-store-reviewer/panel-before-run.jpg" />
    </Frame>
  </Step>

  <Step title="Press Run">
    All five areas are checked at the same time. **Run** becomes **Stop**, which cancels the review. You can leave the tab and come back while it works.

    <Frame caption="All five areas run at once, and Stop cancels the review">
      <img src="https://mintcdn.com/rork/V9VmHf1n96rEBxWy/images/ai-app-store-reviewer/review-running.jpg?fit=max&auto=format&n=V9VmHf1n96rEBxWy&q=85&s=05aa6df3f29c18f1003d56d61777a10c" alt="Review running with a spinner next to Safety, Performance, Business, Design and Legal" width="1142" height="374" data-path="images/ai-app-store-reviewer/review-running.jpg" />
    </Frame>
  </Step>

  <Step title="Wait for the report">
    When the run ends, the header switches to the build it looked at, for example `Reviewed build src_62bb`, and how long ago the review finished.

    <Frame caption="A finished report: counts on top, then one row per review area">
      <img src="https://mintcdn.com/rork/V9VmHf1n96rEBxWy/images/ai-app-store-reviewer/report-passed.jpg?fit=max&auto=format&n=V9VmHf1n96rEBxWy&q=85&s=40f47c284e5cff3de5b81c1b4827b596" alt="Report showing no rejection risks found, zero rejections, zero warnings and five passed areas" width="1018" height="370" data-path="images/ai-app-store-reviewer/report-passed.jpg" />
    </Frame>
  </Step>
</Steps>

## Read the report

The report has one row per review area, not one row per rule. Each row ends as **Passed**, a warning, a rejection, or **Fixed**.

Above the rows you get the counts and a status line:

| Status line                  | What it means                                              |
| ---------------------------- | ---------------------------------------------------------- |
| **Rejection risks found**    | At least one finding looks likely to get the app rejected. |
| **Warnings need review**     | No rejection risk, but something is worth checking.        |
| **No rejection risks found** | Nothing was flagged.                                       |

Press a row to open it. Inside you get the guideline number, what was found, the evidence behind it, sometimes the file it lives in, and the suggested fix.

Once the report is saved, the panel also shows an estimated outcome: **Likely to pass**, **Likely rejection**, or **Outcome uncertain**. Next to it the panel says "Apple makes the final decision."

<Warning>
  Treat the estimate as a prediction about your build, not a verdict. A clean report does not guarantee approval, and a rejection risk does not stop you from submitting.
</Warning>

## Fix what the review found

Findings are not fixed for you. Ask Rork in chat to fix them, one finding at a time, and name the guideline:

> The App Review report flagged guideline 5.1.1: the app has no way to delete an account. Add an in-app account deletion flow.

You can also ask Rork in chat to run the review for you. A review started from chat asks you what to do when it finds something: **Cancel**, or **Fix warnings** when there are warnings, or **Done** when there are none. **Fix warnings** lets Rork edit the app and check it again in the same turn. While that review waits for your answer, the App Store panel says "This review is running in chat — respond there."

A review started with the **Run** button reports and stops. It changes no code and asks you nothing.

After Rork changes the app, run the review again so the report matches the code you are about to submit.

## Previous reviews and new builds

Rork keeps the last four reports. The newest one is the report in the panel, and the older ones sit under **Previous reviews** below it. Each entry shows the build it reviewed, its counts, and when it ran. Open one to see its findings again.

When the code changes after a review, the panel adds a **New build available** badge next to the build id. The saved report now describes an older build, so run the review again before you submit.

## Limits

* Up to 40 reviews per day, counted across the account that pays for the project.
* Six review runs per chat turn. After that the agent says so and asks you to finish the remaining fixes, then start a fresh review from the App Store panel.
* Only iOS apps are reviewed. In a project with only Android or web apps, the panel asks you to add an app instead of showing a report.
* The reviewer reads your project source, plus your App Store Connect readiness data when the app is connected to App Store Connect. Without that connection, the review is based on the source alone.
* The reviewer does not submit your app. Submitting is still a separate step.

## Troubleshooting

<AccordionGroup>
  <Accordion title="There is no App Review tab">
    The tab lives in **More → App Store**, not in the publish menu.
  </Accordion>

  <Accordion title="Pressing Run opens a paywall">
    The message says "App Store reviews require a paid Rork subscription". Any tier works, on the account that pays for the project. Buying credits does not unlock it.
  </Accordion>

  <Accordion title="Run does nothing and shows Could not start the App Store review">
    The most common cause is access: you need editor rights on the project, not viewer. Ask the project owner to change your role, then try again.
  </Accordion>

  <Accordion title="Run is greyed out">
    It stays disabled while the panel loads, while a review runs, and when the project has no build to review yet. Wait a moment, reload the page, and try again.
  </Accordion>

  <Accordion title="The panel asks me to add an app">
    "Add an Expo or Swift app to this project before running an App Store review" means the project has no iOS app. Add a Swift app: an existing Expo app is reviewed too, but Expo is no longer offered for new apps, see [What happened to Expo?](/expo).
  </Accordion>

  <Accordion title="The review seems stuck">
    Press **Stop**, then **Run** again. If the run ended badly, the panel shows "Review could not complete" with the reason above the report. If it keeps failing, contact support with the project link and the time of the run.
  </Accordion>

  <Accordion title="The daily limit was reached">
    The message says "Daily App Store preflight review limit reached." The count resets each day.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card icon="list-check" href="/submitting-to-app-store/apple/app-store-checklist" title="App Store checklist">
    Everything else to prepare before you submit.
  </Card>

  <Card icon="apple" href="/appstore-submission-checklist/app-review-guide" title="How Apple's review works">
    Timing, what slows a review down, and expedited review.
  </Card>

  <Card icon="image" href="/appstore-screenshots/app-store-screenshots" title="App Store screenshots">
    Generate the screenshots your listing needs.
  </Card>

  <Card icon="rocket" href="/publishing" title="Publish your app">
    Take the reviewed build to App Store Connect.
  </Card>
</CardGroup>

<CtaBanner />
