AI Studio.

AI Studio Build

enter the access code
That’s not it — try again
AI Studio Build — design review
Design review · 10 most-built genres · mobile-first · Build's default output, no style chosen

The question: when a user builds one of the apps people actually make — a landing page, a dashboard, a Spotify clone — what does Build's design default to, and how good is it on a phone? What we did: generated the 10 most popular vibe-coder genres from terse prompts, rendered each on a real device viewport, and audited the design mobile-first. The finding:

Build is a capable layout engine that defaults to one generic look and skips mobile.

Per app the craft is real. Across apps it converges on the same grayscale dashboard — and the style-choice step never appeared, so users get the default whether it fits the genre or not. On a phone the gaps show: 1 of 10 apps handles the dynamic viewport; the landing page overflows; text shrinks below 12px.

The fix: teach Build to detect the app's genre and offer ~5 themes that fit it — never one default — on a correctness floor that handles mobile. Both ship below as paste-able system instructions.

The problem

A capable layout engine — that skips the phone.

10 genres rendered on a real 390px phone; the static code audit spans all 13 generated apps (per-dimension N noted where smaller). The mechanics are competent; the design system and mobile are where it falls.

1/10
apps handle the dynamic viewport (dvh); 11× fixed h-screen
230
elements clipped off-screen (m7-music + m9-notes: desktop layout on a phone)
360
arbitrary sub-12px text sizes (down to text-[7px])
D+
Identity — 5/9 apps are one template re-skinned
DimensionGradeWorst evidenceLever
Spacing scaleA−0 arbitrary spacing values across 13 apps (the credit)
Edge / empty statesB+empties designed, but broken images undesigned (1/9 onError)instruction
Visual hierarchyBscan paths land; some 3-way attention splitsinstruction
Layout rigorB−min-w-0 in only 4/9; break-words 5× / 73 filesinstruction
CTA clarityB−low-contrast primaries; duplicated entry pointsinstruction
Signal-to-noiseB−decorative chrome; rose used everywhereinstruction
Color systemC0 --color tokens in 12/13; one hue = accent & dangertemplate-tokens
Radius disciplineCup to 7 radii/app; mixed on sibling controlsinstruction
Genre-appropriatenessCa quiz & a salon read as B2B dashboardsstyle-system
Responsive compositionCm7 127 / m9 103 elements clipped; 1-breakpoint shellsinstruction
CLS / viewportC+0 dvh, 0 image dimensions, tiny-text epidemicinstruction
Type scaleD+no modular ratio; 360 arbitrary sub-12px sizestemplate-tokens
Elevation systemD9 shadow steps + ~40 one-off colored glowstemplate-tokens
Typography tokensDmono used ~3–5× more than sans (portfolio set in mono)template-tokens
Measure / readabilityD0/13 apps cap line length (max-w-prose)template-tokens
Component / token reuseD0 shared primitives; 1243-line monolithtemplate-tokens
Identity / distinctivenessD+5/9 = one template re-skinned; uppercase eyebrow 9/9style-system

The mechanics grade B-ish; the design-system dimensions grade C/D; the lowest is Identity. The fix routes to three levers: instruction (correctness — next section), template-tokens (a shipped theme file), and style-system (a chosen aesthetic — the palette below). Build can diverge — proof it's default-gravity, not a ceiling.

Fix the defaults

The floor every app should clear — independent of style.

Deliverable 1 of 2 — the correctness floor: a system-instruction block that fixes the taste-independent problems above — overflow, off-canvas clipping, mobile, ergonomics. The genre router (deliverable 2) sits on top of this; style never overrides correctness.

Layout integrity

  • min-w-0 on every flex child holding text; truncate / line-clamp anything unbounded; break-words on long tokens.
  • Never ship a multi-pane desktop layout without a mobile collapse — sidebars → drawer/bottom-nav under md:. Zero horizontal scroll at 390px.

Viewport & touch

  • Use dvh/svh, never vh (iOS URL bar).
  • Body text ≥16px; never arbitrary sizes below text-xs.
  • Touch targets ≥44×44px; images get dimensions + an onError fallback.

Readability & rhythm

  • Cap prose to a 45–75ch measure.
  • One modular type scale; one h1, never skip heading levels.
  • Monospace for code/data only — never body or marketing copy.

Hierarchy & ergonomics

  • Exactly one primary action per screen, highest-contrast.
  • Design empty / loading / error states with realistic content; never wire the UI to a backend route that isn't in the build.

Identity

  • Real, human title & brand from purpose — never the project slug.
  • Match the genre; define semantic color tokens once (don't reuse a hue as accent & danger).

The instructions

Detect the app type → suggest fitting styles.

Deliverable 2 of 2 — the genre router (the headline): Build should infer the app's genre and offer the user ~5 styles that fit it — never one generic default. This is the exact genre→style routing the gallery above demonstrates. Below it: the 10 styles' palette + each one's paste-able @theme instruction.

The instruction for each theme — the actual output

This is what ships to the team: a paste-able directive block + a Tailwind v4 @theme token set, per style. Pick a theme to read its instruction.

Full text: design/instructions-genre-styles.md (genre detection + routing), design/instructions-styles.md (the 10 token sets, light & dark), design/instructions-default-fix.md (the correctness floor).