Specimen index / rev 01You vibe. We measure.

vibecodng: 1,561 components verified, 11 do-not-use verdicts, 15 design styles.

vibecodng is a measured index of React components for coding agents. Every entry is built, mounted, screenshotted and scanned in the same harness before it gets a verdict, so an agent picking a component reads test results instead of a README. When something fails, the failure is the entry. There are 11 components in here whose only job is to tell you not to use them.

Numbers read from the live index at build time. Snapshot 2026-08-22.

Spec 01

What gets measured

Nine checks, one harness, same treatment for a first-party component and a component from a registry with forty thousand stars.

01

Mount

The component is installed into a clean Vite app, built, and mounted against a demo written from its own source API. No mount, no entry.

Mounted1,550 / 1,561

02

Console

Console errors and uncaught page errors are recorded while the demo runs. A component that mounts and then shouts still gets the shout written down.

Entries with errors90

03

Viewports

Screenshots at 375, 768 and 1440 with a horizontal overflow check on each. The screenshots are the specimen photos you see below.

Frames captured4,683

04

Overflow

Any viewport where the document scrolls sideways is flagged on the record. It is the single most common thing that breaks a component on a phone.

Flagged279

05

Accessibility

An axe scan runs on the mounted demo. Critical, serious, moderate and minor findings are summed. A zero means the recorded demo was clean, not that the component is certified.

Clean / violations1,035 / 739

06

Bundle

Gzipped kilobytes over the harness baseline, so the number is what the component itself costs rather than what the app around it costs.

Average marginal54.1 KB

07

Bare mode

A second build and mount with the prepared shadcn-style helpers removed. It answers one question: can you paste this into an app that is not a shadcn app.

Pass bare458 / 1,561

08

Providers

A missing-provider mount error is recorded separately, because a component that needs a theme or query provider is not broken, it is conditional.

Provider blocked0

09

Motion

Animated entries get a webm capture of the demo running, so a still frame is not the only evidence that something moves.

Captures on file665

Harness results are controlled measurements, not production QA. They do not replace testing a component inside your own app. The point is that the numbers exist at all, and that they are the same numbers for every entry.

Spec 02

Specimens

Six entries pulled from the index. The picture is the harness screenshot at 768. The strip under it is the record.

8bitcn-pricing1

pricing
Harness screenshot of 8bitcn-pricing1 at 768 pixels wide
Renders
YES
A11y
0
Gzip
34.4KB
Bare
fail

skeuomorphismMIT

kokonut-background-paths

background-effect
Harness screenshot of kokonut-background-paths at 768 pixels wide
Renders
YES
A11y
0
Gzip
59.6KB
Bare
pass

dark-futuristicMIT

tripled-chat-app-shadcnui

chat
Harness screenshot of tripled-chat-app-shadcnui at 768 pixels wide
Renders
YES
A11y
0
Gzip
79.4KB
Bare
fail

minimal-flatMIT

magicui-dotted-map

globe-viz
Harness screenshot of magicui-dotted-map at 768 pixels wide
Renders
YES
A11y
0
Gzip
42.2KB
Bare
fail

spatialMIT

clay-search-input

input
Harness screenshot of clay-search-input at 768 pixels wide
Renders
YES
A11y
0
Gzip
18.3KB
Bare
pass

claymorphismMITfirst partyoverflow flagged

cultui-feature-carousel

carousel
Harness screenshot of cultui-feature-carousel at 768 pixels wide
Renders
YES
A11y
0
Gzip
78.7KB
Bare
fail

liquid-glassMIT

A bare cross means the component did not build once the shadcn-style helpers were taken away. That is not a verdict against it. It is the setup cost, written down before you pay it.

Spec 03

Templates

Full pages built out of index entries, one per style and one per common site shape.

The component index answers one question at a time. The public template library answers the bigger one: what a whole page looks like when it is assembled only from entries that passed. Each template is a working Vite build, not a screenshot, and each one ships with a provenance table listing which index entry every block came from and what that entry measured.

91Templates built
15Style worlds
76Industry and app shapes
435Palette variants

Styles in the index, with published counts

minimal-flat675skeuomorphism126dark-futuristic118gradient-glow62editorial55brutalism50glassmorphism48spatial463d45liquid-glass38aurora-mesh21claymorphism12neumorphism12bento6holographic1unclassified246

246 published entries carry no style label yet. They are counted here because leaving them out would make the taxonomy look tidier than it is.

Browse public template librarySource + download

Spec 04

Bill of materials

We ship our own audit. If we will not publish the receipts for our own homepage, the index is worth nothing.

This page is first party. The CSS is written for it, the React is written for it, and the only runtime dependencies are react and react-dom. There is no component library under it and no UI package to credit. What we did take from the index is structure: six patterns whose behaviour we copied by hand rather than installed. Below is each source entry with what the harness measured on it, and then this page with the same measurement applied to itself.

Patterns this page adapts, with harness measurements, plus this page measured the same way
Source entryPatternWhat we tookMountAxeGzipBareLicense
neobrutalism-cardcardHard border plus offset shadow, used by the specimen cardsOK029.6 KBOKMIT
neobrutalism-tabletableTwo pixel rule table with an inverting row hover, used by this tableOK029.8 KBOKMIT
neobrutalism-badgebadgeBordered uppercase chip, used by the style list and status tagsOK031.3 KBFAILMIT
neobrutalism-navigation-menunavbarDivided header bar, used by the mastheadOK143.9 KBFAILMIT
neobrutalism-buttonbuttonOffset action block, used by the two links on this pageOK031.7 KBFAILMIT
motion-primitives-in-viewscroll-effectOnce-only intersection reveal, used by every sectionOK058.1 KBOKMIT
vibecodng.com homepagefirst partyEverything else on this pageOK076.3 KBOKnot published

Read the gzip column carefully. The six source entries are measured as marginal cost over the harness baseline, which is how every entry in the index is measured. The last row is different: it is every JavaScript and CSS file this site ships, gzipped together, measured by a script that runs after the build and stamps the number into the row you are reading. Images, videos and the prerendered HTML are not counted in it, because those are paid per route rather than by everyone. The axe column on that row is a real scan: the same axe-core build the index uses runs against this page and five gallery routes after every build, with the scroll reveals forced open so the whole document is in view. A serious or critical finding fails the build. Bare mode fails for three of the six source patterns where they live. We adapted them instead of installing them, so this page carries none of that setup cost, which is exactly the trade the bare column exists to expose.

Viewport check, 375 / 768 / 1440clean at 375, 768, 1440

Spec 05

Agent access

should-i-render is a read-only MCP server that answers component-fit questions with verdicts and harness facts instead of trusting source marketing.

The free beta is open. Use the hosted endpoint for the live index, or run the npm snapshot locally with no account, database or network access. Both expose nine read-only tools and clamp text responses to roughly 500 tokens so the agent spends its context on your code.

Free beta live

Connect the measured index to your agent

Hosted keys include 100 measured tool calls per UTC day. No card or email required.

Offline snapshot — free forever

{
  "mcpServers": {
    "should-i-render": {
      "command": "npx",
      "args": ["-y", "should-i-render@latest"]
    }
  }
}

should-i-render / hosted + stdio / read only1,561 measured entries

find_component(task, pattern?, style?, palette?)

Ranks up to three fits across the prose, pattern, style and measured results. Pass a palette slug and it appends that palette as CSS variables.

check_component(name)

Returns the full verdict for one entry, its skip conditions, and the measured strip.

alternatives(name)

Ranks other candidates that solve the same pattern.

install_plan(name)

Dependencies, bare-harness gaps, provider requirements, setup notes, license and author credit.

skip_list(pattern, style?)

Puts the explicit failure warnings and the worst measured offenders first, so an agent can rule things out before it picks.

palette_pick(mood?)

One to three curated palettes with hex roles and a copyable CSS variable block. Every text-on-surface pair is checked at WCAG AA.

find_template(task, category?, style?)

Ranks complete page starters for a product or business task and keeps failed accessibility audits out of recommendations.

check_template(name)

Returns one template’s stack, license, audit status, preview, source, download and available palette builds.

template_plan(name, palette?)

Gives the exact clone and setup steps, optionally selecting a ready-built palette preview.

The offline snapshot remains free. Future paid plans will cover live freshness, higher quotas and team policy workflows; the free beta does not silently enroll you in billing.