MinorMedium confidence

Third card sits 12px lower than its siblings

The cards in the feature row are not aligned, and the last one uses square corners where the others are rounded.

Screenshot with the problem area boxed
Example finding Dashboard GitHub check
MinorHigh confidence

Button colour is not a design token

The checkout button uses #6d8bf2 instead of --primary, and is not in your palette.

Element, actual vs expected value, screenshot
Example finding Dashboard GitHub check
01 / 06

Design polish

A designer's eye on every state of the UI you changed.

Type
AI (vision)
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Misaligned elements and uneven spacing
  • Inconsistent corner radii, shadows and icons
  • Weak typographic hierarchy
  • Clipped or overflowing content, overlaps and awkward wrapping
  • Missing hover, focus, active or disabled states

Example finding

A card layout with the problem areas boxed and annotated, plus the viewport it was found at.

Hydrofoil · Design polish
Viewport 1280 × 800
  1. 1
    Boxed problem areaShows exactly which element is off.
  2. 2
    AnnotationSays what's wrong, in plain words.
  3. 3
    ViewportThe size the screenshot was taken at.

How it works

Hydrofoil screenshots each state the run visits and a vision model reviews them against good-design principles.

  1. 01

    Visit each state

    Every state of the UI you changed.

  2. 02

    Take screenshots

    One per state.

  3. 03

    Review the design

    A vision model checks good-design principles.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Screenshot with the problem area boxed, and the viewport.

Known limits

  • Without a design file, it judges general polish, not fidelity to your brand. [TBD: Figma comparison is a separate, later review]
  • Visual judgement is partly subjective, so confidence is shown.
  • Static screenshots can't judge animation.

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

02 / 06

Design-system conformance

Checks that the UI actually uses your design tokens and components.

Type
Deterministic + AI
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Colours outside your palette
  • Font sizes and spacing off your scale
  • Hand-built components where a design-system component already exists

Example finding

The expected token next to the colour the browser actually computed.

Hydrofoil · Design-system conformance
button.checkout-submit· background-color
Expected
--primarydesign token
≠
Actual
#6d8bf2not in your palette
padding-inlineexpected 16px·actual 15px
  1. 1
    Expected tokenRead from your CSS variables or Tailwind config.
  2. 2
    Actual valueThe computed style in the browser.
  3. 3
    The elementWhich element and property differ.

How it works

Hydrofoil reads your tokens from CSS variables and the Tailwind config, compares them to computed styles in the browser, and uses AI to spot hand-rolled lookalikes.

  1. 01

    Read your tokens

    From CSS variables and the Tailwind config.

  2. 02

    Compare to computed styles

    Check what the browser renders.

  3. 03

    Spot lookalikes

    AI finds hand-rolled components.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • The element, the actual versus expected value and a screenshot.

Known limits

  • Needs tokens it can read from CSS variables or the Tailwind config. [TBD: other theming approaches]

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

03 / 06

Responsive

Reviews your UI at phone, tablet, desktop and wide-screen sizes.

Type
Deterministic + AI
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Horizontal scrolling
  • Hidden or cut-off content
  • Touch targets that are too small
  • Layouts that break at in-between widths

Example finding

The same page at three widths. The narrow one shows a clipped field.

Hydrofoil · Responsive
Desktop · 1280
Tablet · 768
Phone · 375
  1. 1
    Clipped fieldBoxed on the screenshot at the failing size.
  2. 2
    Failing viewportThe width where the layout breaks.

How it works

The browser re-renders each state at several viewport sizes. Checks look for overflow and tap-target size; AI reviews the screenshots.

  1. 01

    Resize the viewport

    Re-render each state at several widths.

  2. 02

    Run the checks

    Look for overflow and tap-target size.

  3. 03

    Review the screenshots

    AI looks for what the checks can't.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Screenshot at the failing viewport with the problem area boxed.

Known limits

  • Emulated viewports, not real devices.
  • [TBD: viewport sizes checked]

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

04 / 06

Theme variants

Checks dark mode and any other themes you ship.

Type
AI
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Unreadable text and icons in dark mode
  • Elements that ignore the theme
  • Images and logos that disappear on one background

Example finding

Light and dark versions of the same card, with the missing icon boxed in dark.

Hydrofoil · Theme variants
Light
Dark
  1. 1
    Missing in darkThe element that doesn't survive the theme change.
  2. 2
    Side by sideBoth themes shown together for comparison.

How it works

The run switches themes and reviews the same states in each.

  1. 01

    Visit the states

    In the default theme.

  2. 02

    Switch theme

    Then visit the same states again.

  3. 03

    Compare

    Review each state in every theme.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Side-by-side screenshots of the two themes.

Known limits

  • [TBD: how Hydrofoil switches themes: system preference, a toggle, or configured]

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

05 / 06

Visual diff vs base

Compares your PR's preview with your base version and says which changes are intended.

Type
Deterministic + AI
Status
[TBD: Live / Beta / Coming soon]
Default
[TBD: On / Off]
Est. cost
[TBD: X credits per run]

What it catches

  • Unintended visual regressions
  • Changes that no ticket or criterion explains

Example finding

Drag between base and PR. Differences are highlighted and each is classified.

Hydrofoil · Visual diff
  • IntendedSign-up button restyled, explained by criterion 2
  • Unintended regressionThird card moved down 16px
  1. 1
    Before/after sliderCompare the base and the PR in the same frame.
  2. 2
    Highlighted diffEvery pixel difference, boxed.
  3. 3
    ClassificationIntended, or an unintended regression.

How it works

Hydrofoil screenshots the same states on the base deployment (production or main preview) and on the PR, computes pixel differences, then AI classifies each as intended (explained by the PR or criteria) or unintended regression.

  1. 01

    Capture both

    The same states on base and on the PR.

  2. 02

    Diff the pixels

    Find every visual difference.

  3. 03

    Classify

    Intended, or an unintended regression.

Output

Findings appear in the Hydrofoil dashboard and in your GitHub check, with a severity (blocker, major, minor or nit) and a confidence level. Low-confidence findings are marked Needs reviewand don't fail the check.

Severity
BlockerMajorMinorNit
Confidence
HighMediumLow · Needs reviewDoesn't fail the check
Where it appears
Hydrofoil dashboard GitHub check

Evidence

What each finding includes.

  • Before/after slider and a highlighted diff.

Known limits

  • Needs a base URL.
  • Dynamic content such as dates and animations can cause noise. [TBD: masking options]
  • Classification can be wrong, so uncertain ones are marked Needs review.

Configuration

Turn this review on or off for each repository in repository settings.[TBD: add any check-specific options.]

06 / 06

Design fidelity

Compares the built UI with the Figma frames linked from your ticket or PR.

Design fidelity will compare what you built with the Figma frames linked from your ticket or PR, and mark where they differ.

Type
AI
Status
Coming later
Default
—
Est. cost
—

What it catches

  • [TBD: spacing, colour, type and layout differences from the design]

Example finding

A mock of what a finding could look like: the Figma frame beside the built UI, with differences marked.

Hydrofoil · Design fidelity (mock)
Figma frame
Built UI
  • 1Heading is 20px, the design uses 24px
  • 2Button radius is 6px, the design uses a full pill
  • 3Card padding is 16px, the design uses 24px
  1. 1
    Design frameThe Figma frame linked from your ticket or PR.
  2. 2
    Built UIWhat the preview actually renders.
  3. 3
    DifferencesMarked on the built UI and listed.

Known limits

  • Not available yet. Figma only.

Tell me when it's ready

[TBD: confirm you want this]

Related reviews

See it on your next pull request

Hydrofoil opens each preview in a real browser and posts what it finds to GitHub.