From Figma to production — not prototype code that needs a rewrite.
AI code generators get you to a plausible-looking component in minutes. The gap to production is the same gap it has always been: semantic HTML, ARIA roles, keyboard navigation, responsive layout, performance budgets, and design system consistency. These are not edge cases — they are the baseline that makes the component deployable. We treat them as primary deliverables, not cleanup tasks.
The vibe-coding revolution — v0, Bolt, Lovable, Cursor generating React components from Figma designs — has genuinely changed design-to-prototype velocity. A designer can turn a frame into working code in hours. The output is prototype-quality, and that gap to production is consistent across tools: accessibility semantics are missing or incorrect, layouts use hardcoded pixel widths rather than fluid responsive logic, design tokens are not used (inline styles appear instead), and component boundaries are not designed for reuse across the design system.
The production gap requires the same skills it always has. Accessibility: semantic HTML, ARIA roles and labels, keyboard navigation, focus management. Responsiveness: fluid layouts, breakpoint behavior, content reflow. Design system integration: design tokens, component variants, consistent spacing. Performance: image optimization, code splitting, font loading, Core Web Vitals. Full state coverage: loading skeleton, empty state, error state, disabled state, edge cases. WCAG 2.1 Level AA is the legal standard in an increasing number of jurisdictions and not something you add retroactively.
- Accessibility: semantic HTML, ARIA labels, keyboard navigation, focus management
- Responsive behavior: fluid layouts and breakpoints, not hardcoded pixel widths
- Design system integration: design tokens and component variants, not inline styles
- Full state coverage: loading, error, empty, disabled, and edge case states
- Core Web Vitals: image formats, lazy loading, code splitting, layout shift prevention
- Component architecture: designed for reuse, not copy-pasted with inline variations
We use v0, Bolt, Cursor, and AI-assisted scaffolding to accelerate the initial generation — we are not working against the vibe-coding tools, we are building on top of them. The production work happens after: design system integration, accessibility remediation, state coverage implementation, responsive behavior, and performance optimization. The output is code that ships, not code that demos.
Component boundaries are designed for reuse: a Button that appears 40 times in the design is implemented once with all variants and states, not copy-pasted with inline style variations. Every component is implemented with all states visible in the design and the states that are not — loading skeleton, empty state, error state, disabled state, and content edge cases like long text overflow.
Implementation process
Map the design file's tokens, component library, and spacing system to the codebase's design system. Identify gaps. Align token usage before implementation starts so inline styles never appear in production components.
Use v0, Bolt, or Cursor to generate initial component scaffolding from the design file. This is the fast-path for structure and layout. The scaffolding is the starting point, not the deliverable.
Apply design system integration, full state coverage (loading, error, empty, disabled, edge cases), responsive behavior for all breakpoints, and component boundary design for reuse.
Semantic HTML, ARIA attributes, keyboard navigation, focus management. Automated accessibility checker plus manual screen reader testing. WCAG 2.1 AA compliance as a quality gate, not a checklist.
Measure LCP, INP, and CLS for implemented pages. Image format and size optimization, lazy loading, font loading strategy, layout shift prevention. Measure before and after.
- 01
AI-assisted scaffolding, production-quality output
We use v0, Cursor, and Bolt to generate initial component structure from Figma files — handling the fast path. What follows is the gap those tools don't close: design system token substitution, ARIA implementation, state coverage, and performance measurement. The output is production code, not a scaffold that needs another pass.
- 02
Design system integration
Every component uses your existing design tokens — CSS custom properties or Tailwind config values for color, spacing, typography, and breakpoints — not hardcoded hex values or inline styles. Components are built to extend your existing library, not sit beside it as one-offs.
- 03
Full component state coverage
We implement default, hover, focus, active, disabled, loading skeleton, error, and empty states for every component. Happy-path Figma files routinely omit these — but the states exist in production. Missing state coverage is how post-launch visual bugs appear in scenarios the designer never specced.
- 04
Accessibility-first implementation
Semantic HTML is the baseline: headings, landmarks, lists, and buttons before ARIA. ARIA roles, labels, and live regions are added only where semantic elements are insufficient. Keyboard navigation, visible focus indicators, and screen reader output are tested — WCAG 2.1 AA is a build-time gate, not a post-launch audit.
- 05
Core Web Vitals optimization
We measure LCP, INP, and CLS on implemented pages using Lighthouse and WebPageTest before and after delivery. Optimization targets image formats and sizing, lazy loading thresholds, font loading strategy (font-display, preloading), and layout shift sources. You get the before/after numbers, not a verbal assurance.
- Production React components integrated with your design system
- WCAG 2.1 AA compliance report with per-component status
- Responsive implementation tested across defined breakpoints
- Core Web Vitals report: LCP, INP, CLS before and after
- Storybook stories for all implemented components
- Implementation notes for underdefined states and design decisions
Retrofitting accessibility and performance into shipped components typically runs 3–5× the original implementation cost — and blocks release cycles while it happens. Building it correctly once is both faster and cheaper than fixing it under pressure after launch.
Frequently
asked questions
Do you use v0, Bolt, or Lovable in the process?
Yes. We use these tools to accelerate scaffolding from design files — they are fast at generating initial component structure and layout. The production work happens after: design system integration, accessibility remediation, state coverage, responsive behavior, and performance optimization. We are not working against vibe-coding tools; we are closing the gap between what they produce and what ships.
How do you handle designs that are not developer-ready?
We identify and resolve ambiguities before implementation starts: missing states, inconsistent spacing, undefined responsive behavior, and components that do not match the design system. We produce a design review document with questions for the designer. Implementation starts after review is resolved — design decisions made during implementation are harder and more expensive to change later.
Do you work with existing component libraries (shadcn, MUI, Radix)?
Yes. We implement designs using your existing component library as the foundation, customizing via the library's theming and composition APIs. Starting from an accessible component library is more reliable than building from scratch — keyboard behavior, ARIA semantics, and focus management are already correctly implemented.
What is your approach to animations and transitions?
CSS transitions and animations for simple state changes. Framer Motion or React Spring for complex sequence animations. Animation performance impact measured and GPU compositing applied where appropriate. Accessibility: animations are reduced or disabled for users with prefers-reduced-motion.
Ready to get started?
Tell us what you are building. We will scope it, price it honestly, and give you a clear plan.
Free 30-min scoping call
