From Figma to Production: A Practical Web Development Workflow
The Figma Handoff Conversation Nobody Has Early Enough

The gap between a beautiful Figma file and a live production website is where projects go wrong. Not in the design phase. Not in the coding phase. In the translation between the two, all those unspoken assumptions, undocumented decisions, and "we'll figure this out when we get there" moments that accumulate into technical debt and missed deadlines.
I want to walk through a practical workflow that actually works for teams of different sizes. Not a rigid process with fifteen steps and a ceremony for everything, just the things that consistently reduce pain when you're taking a design from pixels to production.
The Figma Handoff Conversation Nobody Has Early Enough
Before a single component gets built, there's a conversation that needs to happen between designer and developer. It's not about visual preferences. It's about constraints.
What's the component inventory? Are there responsive variants for mobile and tablet, or do developers need to interpret those? Are hover and focus states designed, or assumed? What's the behavior for empty states, what does this card look like with no data? What does this list look like with one item, or fifty?
These questions sound tedious to ask. They are. But they're far less tedious than getting to implementation and discovering that half the components only have happy-path desktop designs and you're making up the rest as you go.
Good Figma files have an auto layout structure that maps reasonably to how components will be built. They use named styles for typography and color that will become CSS custom properties. The best ones even have a notes layer where behavior and edge cases are documented. If your Figma file doesn't have these, the handoff conversation is about getting that information out of the designer's head before development starts, not after.
Setting up the Component Structure before you Build Anything
Looking at a Figma file with forty screens, the temptation is to start with the homepage because it's the most visible. Resist this. Start with the design system, the atomic pieces.
Build your typography components. Build buttons in all their states. Build form elements. Build the card variants. Build the grid and layout primitives. Do this before you touch a single page-level component.
Why? Because pages are compositions of components. If you build the homepage first, you'll build implicit, one-off versions of those atomic pieces and then when you need them again on the services page, you're either duplicating code or refactoring the thing you already built. Neither is fun.
Storybook is worth the setup time for any project with more than a few components. Having an isolated environment to build and test components without running the whole application catches edge cases early and gives you a living style guide for free.
CSS Custom Properties are Not Optional, They're the Architecture
Design tokens, the named values for colors, spacing, typography, border radius, shadows, need to live as CSS custom properties, not as hard coded values in component styles. This is not premature abstraction. This is the difference between being able to theme a component in ten minutes versus hunting through six files to change a color.
Map your Figma styles directly to custom properties at the root level. Color palette, type scale, spacing scale. Every component references these properties. When the designer says "actually the primary blue should be slightly darker," you change one variable, not forty selectors.
This setup also pays off enormously if dark mode is on the roadmap, which it increasingly is for anything built today.
The Testing Checkpoint Most Teams Skip
Cross-browser and cross-device testing tends to happen late, usually right before launch, when everyone is tired and nobody wants bad news. By then, any significant issues require emergency fixes under pressure.
The better approach is visual regression testing baked into the CI pipeline. Tools like Percy or Chromatic (which integrates with Storybook) take screenshots of components at each build and flag visual differences. You catch the thing that quietly broke three PRs ago, before it's a production issue.
For accessibility, axe-core in your testing suite is the baseline. Not a replacement for manual testing, but a way to catch the obvious violations, missing alt text, poor color contrast, unlabeled form inputs, automatically before they ship.
Production Deployment: The Things That Bite You
A few things that come up repeatedly in production deployments for web projects:
Environment variable management. Sounds boring, completely essential. Local, staging, and production environments all have different values, and at some point someone will accidentally push a production key to a repository or have a staging build pointing at the production database. Use something like Doppler or AWS Secrets Manager and keep this stuff out of your repo entirely.
Preview deployments. Vercel, Netlify, and most modern hosting platforms support deployment previews for pull requests. This should be on by default for any professional project. Reviewers should be looking at a live build, not imagining what the code changes look like in a browser.
Rollback capability. Deployments fail. Sometimes they fail in ways that aren't caught by tests. Having an instant rollback path, whether through your CI/CD platform or through containerization, is not optional for production business websites. This is a big part of what separates a hobbyist deploy from a professional one. Working with teams who build with this in mind from day one, like those doing professional web development and delivery, means these safeguards are built in rather than bolted on.
The Documentation Nobody Writes but Everyone Needs
After launch, most projects have zero documentation. No README that explains how to run the project locally. No notes on why certain architectural decisions were made. No guide for content editors explaining what each component does and when to use it.
A year later, when someone new joins and needs to understand the codebase, or when you yourself need to revisit something, you built eighteen months ago, the absence of that documentation is a real cost.
Write it as you go. It takes ten minutes per significant decision. Future you, future teammates, and future clients will all be glad you did.
Figma to production is never just a technical translation. It's a whole set of communication decisions, workflow choices, and process investments that either compound into a smooth delivery or compound into a stressful one. The workflow itself is the craft, not just the code.






