Polish Gate

The Polish Gate is the third and final quality gate before app submission — the validation checkpoint between the POLISH phase and the SUBMIT phase. After the build is complete and before the app goes to App Store Connect, it must score at least 70% on a polish quality rubric covering haptics, animations, visual refinement, and micro-interactions. The 70% threshold is the minimum viable quality bar — below it, the app feels cheap and gets bad reviews; above it, it feels crafted and professional.

Polish is the stage where mediocre apps become good apps. The build phase produces working code — buttons work, data persists, features function. The Polish phase makes the app feel like it was made by someone who cared. Haptic feedback patterns that give tactile response to interactions. Spring-based animations that give UI elements physical weight and momentum. Confetti celebrations on achievement moments. Dark mode consistency across every screen. These are the details that distinguish an app that feels assembled from one that feels designed.

The Polish Gate rubric evaluates five dimensions:

  1. Haptic feedback (up to 20 points) — Do interactive elements produce appropriate haptic responses? Buttons, toggles, sliders, and gestures should have contextually appropriate haptic feedback.

  2. Animation quality (up to 20 points) — Are transitions smooth and purposeful? Spring animations should feel physically plausible. Page transitions should have appropriate duration and easing.

  3. Visual refinement (up to 20 points) — Are colors, shadows, and typography consistent? Are icon sets unified? Is spacing consistent? The 1-pixel alignment details that separate professional from amateur.

  4. Micro-interactions (up to 20 points) — Do buttons respond to press states? Do loading states show progress? Do error states have helpful messages? The small moments that make an app feel alive.

  5. Dark mode (up to 20 points) — Is the app fully usable in dark mode? Are all screens and components properly styled for both light and dark environments?

The 70% threshold is deliberately set below 100% — the factory doesn't aim for perfect polish on every build. The reason is economic: diminishing returns. Getting from 70% to 90% polish can take as long as getting from 0% to 70%. The gate ensures every app meets a quality floor, not that every app is maximally polished. Additional polish beyond 70% can be added iteratively or in response to user feedback.

Factory v3 formalized the Polish module as a distinct stage in the pipeline (see factory-v3). Previously, polish was applied inconsistently or omitted entirely — the viral "fasting app without an icon" moment was a consequence of polish being skipped. The factory's response was to make polish a structured phase with a defined gate: if the app doesn't pass the 70% threshold, it doesn't submit.

The Polish Gate also serves as the integration point for Angry Mob testing (see angry-mob). Before the app is polished, the Angry Mob runs its adversarial tests against the build. The polish work then addresses what the Angry Mob found. The Polish Gate validates that the security and quality issues surfaced by the Angry Mob were actually fixed — not just that polish was applied.


  • ios-factory-pipeline — where Polish Gate is the Step 5 quality checkpoint (70% required)
  • factory-v3 — the evolution that formalized polish as a distinct pipeline stage
  • design-gate — the prior gate; design must pass before polish phase begins
  • angry-mob — the adversarial testing whose findings polish must address