Skip to content
experience

AI tool generated our new component library. Then the accessibility audit came back with 143 issues

박지우@jiwoo_front

October 12, 2026 · 2 min read

Contents(1)

회사 이름은 말 못 하지만... big portal company, React + TS. We had a deadline (always deadline) for new design system components. Management bought an AI tool that generates components from Figma, and the team was told: use it, ship faster.

We shipped faster. 진짜 빨랐어요. 3 weeks instead of 8.

Then the accessibility audit. 143 issues on the first 12 components. Some examples:

  • Buttons were divs. <div onClick={...}> with no role, no tabIndex, no keyboard handler. Cannot reach with Tab. Cannot press with Enter or Space.
  • Focus outline removed globally. *:focus { outline: none; } in the generated base CSS. Keyboard users cannot see where they are.
  • Icon buttons with no label. Screen reader says "button" and nothing else. 32 of them.
  • Modal with no focus trap. Tab goes behind the dialog. Escape does nothing.
  • Placeholder used as label in every input. Disappears when you type. Also low contrast grey.
  • Custom select built from divs, no listbox role, no arrow key support. Native select would be fine...

What we did

npm i -D eslint-plugin-jsx-a11y @axe-core/playwright
  • eslint-plugin-jsx-a11y in CI. click-events-have-key-events and no-static-element-interactions alone found 60+.
  • axe checks in Playwright for every Storybook story:
import { test, expect } from '@playwright/test'
import AxeBuilder from '@axe-core/playwright'

test('primary button has no a11y violations', async ({ page }) => {
  await page.goto('/iframe.html?id=button--primary')
  const results = await new AxeBuilder({ page }).analyze()
  expect(results.violations).toEqual([])
})
  • Replaced div buttons with <button type="button">. Native <dialog> for the modal, native select where the design allowed it.
  • Focus style back: :focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }

Fixing took 4 weeks. So total 7 weeks instead of 8. AI saved us 1 week, and we almost shipped components that many people cannot use at all.

I am not against the tool... the theme tokens it made were okay. But "looks finished" is not finished. And nobody in management asked "can a blind person use this". 솔직히 좀 지쳤어요. 야근 3주. ㅠㅠ

Get the best of #figma_fatigue weekly

One email each Monday with the most useful posts. No spam; unsubscribe in one click.

Comments

9

Sign in to join the conversation.

Sign in to comment
Frieda Sommer@frieda_s#5 in Figma Fatigue
Thank you for this very honest post. I audit for a living and this list is actually what I see in almost every AI-generated component library. The *:focus outline none is the worst, it is in so many templates. Your axe-in-Storybook setup is exactly right.
2 net votes
박지우@jiwoo_front#2 in Figma Fatigue
Thank you... your comments on other posts helped me explain to my manager why this matters. axe in CI now blocks the merge.
0 net votes
Giulia Bellandi@giulia_designs#1 in Figma Fatigue
'Looks finished is not finished' ✨ I wrote almost the same sentence in my Figma post! The tool generates the picture, never the behaviour. And thank you for using native select, designers please let developpers use native select 🙏
1 net votes
Divya Ramanathan@divya_ramanathan#8 in Figma Fatigue
Three weeks of overtime to fix something nobody budgeted for. Aiyo. Please write this up as a retro with the numbers (3 weeks to ship, 4 weeks to fix) and send it to whoever bought the tool. Managers listen to that table more than to the audit.
1 net votes
박지우@jiwoo_front#2 in Figma Fatigue
좋은 생각이에요. I will try. In our company it is hard to say 'the decision was wrong'... but numbers maybe ok
0 net votes
Yuki Tanaka@yuki_ios#4 in Figma Fatigue
Same on the iOS side, generated SwiftUI code often has no accessibilityLabel on image buttons. VoiceOver says only 'button'. It is difficult point because it looks perfect in the screenshot ^^
2 net votes
Danny Cho@danny_cho_la#8 in Figma Fatigue
Saving this as the canonical example for the next 'AI will 10x our frontend' meeting. Seven weeks instead of eight, and that's with an audit that caught it. Most teams don't have the audit. Take care of yourself, jiwoo.
1 net votes
Kang Minjun@minjun03#8 in Figma Fatigue
누나 고생 많으셨어요 ㅠㅠ I don't understand all but I will learn accessibility from the beginning. thank you for writing
3 net votes
박지우@jiwoo_front#2 in Figma Fatigue
고마워 민준아 ㅋㅋ start with button and label, that is already half of it
0 net votes