Bolt.new, from StackBlitz, is an AI full-stack development tool that builds and runs a complete web application from a prompt inside an in-browser development environment. It commonly scaffolds projects with frameworks like React, Vite, Next.js, or Svelte and lets you preview and deploy without leaving the browser. Bolt.new is powerful because it writes real, editable framework code rather than a locked visual export, but that same flexibility means the accessibility of what it produces is entirely down to the code the AI writes and how you review it. In typical Bolt.new output you will find generic div-based layouts with no landmarks, interactive elements built as clickable divs instead of buttons, forms whose inputs rely on placeholders instead of labels, Tailwind or inline color choices that miss contrast requirements, and images generated without alt text. Bolt.new also tends to build custom interactive widgets (tabs, modals, menus) by hand, and these frequently lack the roles, states, and keyboard handling that assistive technology depends on. Apps shipped from Bolt.new are usually real products that handle user data and transactions, putting them squarely under the European Accessibility Act and the ADA. This checklist identifies the accessibility issues most likely to appear in Bolt.new's generated code and provides the prompts and fixes to resolve them, whether or not you are comfortable editing the code directly.

Common Accessibility Issues

critical

Interactive Elements Built as Clickable divs

WCAG 2.1.1

Bolt.new often implements buttons, cards, and menu items as div or span elements with click handlers rather than native button or anchor tags. These elements are not keyboard focusable, are skipped in the tab order, and do not respond to Enter or Space, so keyboard-only and screen reader users cannot use them at all.

How to fix:

Ask Bolt.new to 'replace all clickable div and span elements with native <button> elements for actions and <a> elements for navigation, removing click handlers from non-interactive tags.' Then Tab through the running preview to confirm every interactive element is reachable and operable from the keyboard.

Before
<div class="card" onclick="openItem()">
  View details
</div>
After
<button type="button" class="card" onclick="openItem()">
  View details
</button>
serious

No Landmark Regions in the Generated Layout

WCAG 1.3.1

The scaffolded layouts Bolt.new produces are usually a nest of div containers styled with utility classes. Without header, nav, main, and footer landmarks, screen reader users cannot jump to the main content or navigate the page by region, and there is often no skip link to bypass repeated navigation.

How to fix:

Prompt Bolt.new to 'wrap the layout in semantic landmark elements (header, nav, main, footer) with an aria-label on the nav, and add a visible skip-to-content link as the first focusable element.' Verify the landmarks and skip link with the keyboard and the accessibility tree.

Before
<div class="app">
  <div class="topbar">...</div>
  <div class="content">...</div>
</div>
After
<a href="#main" class="skip-link">Skip to content</a>
<header class="topbar">...</header>
<main id="main" class="content">...</main>
critical

Form Inputs Without Real Labels

WCAG 3.3.2

Forms generated by Bolt.new commonly use placeholder text as the only descriptor for an input, with no associated label element. Placeholders vanish on input, are unreliable for screen readers, and usually fail contrast, leaving users unsure what each field requires and how to fix validation errors.

How to fix:

Ask Bolt.new to 'add a <label> with a for/id association to every form input, keep placeholders only as examples, and connect any error messages to their field with aria-describedby.' Check that each field shows a persistent, visible label.

Before
<input type="password" placeholder="Password" />
After
<label for="password">Password</label>
<input id="password" type="password" />
serious

Custom Widgets Missing Roles, States, and Keyboard Support

WCAG 4.1.2

When Bolt.new hand-builds tabs, accordions, modals, or dropdown menus, it tends to omit the ARIA roles and states (role, aria-expanded, aria-selected, aria-controls) and the arrow-key and Escape handling these patterns require. Assistive technology then cannot convey the widget's structure or current state, and keyboard users cannot operate it.

How to fix:

Prompt Bolt.new to 'rebuild custom interactive widgets using an accessible component library appropriate to the framework (such as Radix UI or Headless UI for React) so roles, states, focus management, and keyboard interaction are handled correctly,' or to add the required ARIA and keyboard handlers. Test each widget with the keyboard alone.

critical

Images Generated Without Alt Text

WCAG 1.1.1

Bolt.new often inserts placeholder or generated images, logos, and icons with missing or empty alt attributes, and icon-only buttons without accessible names. Informative visuals then provide nothing to screen reader users, and icon buttons are announced with no description of their function.

How to fix:

Ask Bolt.new to 'add descriptive alt text to every informative image, set alt to empty for decorative images, and give every icon-only button an aria-label.' Review and rewrite the AI's generic alt descriptions so they accurately describe each image's purpose.

Bolt.new-Specific Tips

  • Bolt.new writes real, editable code, so the most reliable workflow is to add an accessibility linter (eslint-plugin-jsx-a11y for React projects, or eslint-plugin-svelte / the relevant framework linter) to the generated project and fix what it reports before deploying.
  • Give Bolt.new accessibility requirements up front in your initial prompt, for example 'build it with semantic HTML landmarks, labeled forms, keyboard-accessible controls, AA color contrast, and image alt text,' since stating them early produces cleaner code than retrofitting later.
  • Use Bolt.new's live in-browser preview to test keyboard access directly: Tab through every screen, operate menus and modals without a mouse, and confirm Escape closes overlays, because the visual preview alone will not reveal these failures.
  • Each time you prompt Bolt.new to add or change a feature it may rewrite surrounding code and undo earlier accessibility fixes, so re-run your linter and keyboard checks after every iteration rather than only at the end.

axe DevTools

A browser extension that audits your running Bolt.new app for WCAG violations, surfacing the missing landmarks, labels, and ARIA states that the preview does not show.

eslint-plugin-jsx-a11y

An ESLint plugin you can add to the React project Bolt.new generates to automatically catch inaccessible JSX such as clickable divs, missing alt text, and unlabeled inputs as you build.

WAVE

A web-based and browser-extension evaluation tool that overlays accessibility errors on your deployed Bolt.new site, making missing form labels and low-contrast text easy to find and fix.

Further Reading

Other CMS Checklists