From weeks to days: building a design-in-code workflow at Fig — Qinglan Zheng
qinglan.zheng ← all work
weeks → days FLAGSHIP · FIG · 2026

From weeks to days: building a design-in-code workflow at Fig

How I pitched a two-week pilot, wired Figma and Claude into our production codebase, and turned small UI fixes from a weeks-long queue into same-day draft PRs.

ROLE
Senior product designer
TEAM
1 designer, 1 engineer
TOOLS
Claude, Cursor, Figma MCP
01 · The problem

Small UI fixes took weeks

Copy tweaks, spacing fixes, a reordered form field — the kind of change that should take an afternoon was queued behind sprint planning, engineering handoff, and a staging cycle. By the time I counted, more than 10 small improvements were sitting blocked, none of them contentious, all of them stuck in the same handoff chain.

The cost wasn't any single fix. It was the compounding drag: designers describing changes instead of making them, engineers re-deriving intent from a Figma frame, and a queue that only grew.

02 · The bet

A two-week pilot, Shape Up style

I pitched leadership a small, time-boxed bet: one designer, one engineer, one surface, two weeks. Not a platform initiative — a test of whether AI tooling could let a designer ship real UI changes without breaking engineering review.

"I wasn't sure Phase 3 would ever become real. It did."

Cycle 1 bet-tracking board showing the AI Design in Code and Flinks Drop-off Reduction bets, both with Qinglan Zheng as Pitch DRI; other teams' bets are blurred
Cycle 1 bet board — my bets in focus; other teams' bets blurred
Notion pitch doc: 'Reduce Time-to-Ship for Small UI Changes via Design-in-Code Pilot' — problem, impact, appetite, proposed solution, scope, risks, data considerations, and game plan
Pitch doc — scroll to read, or click to enlarge
03 · Three phases

From a first PR to a production playground

01

First PR from Cursor

The engineer and I shipped the first real change together, from a Cursor session directly into a draft PR — proving an AI-assisted diff could survive review unchanged.

Cursor agent session in agent mode: prompt asking to change review-page copy from 'periodic credit checks' to 'periodic soft credit checks', the agent's plan using the design-change skill, and the resulting origination.ts diff
First shipped fix — a Cursor agent session updating review-page credit-check copy
Slack message from Qinglan announcing the first PR shipped via the Design in Code pilot bet, with teammates congratulating her and reacting with celebration emoji
The team's reaction — first PR shipped under the pilot
02

Figma MCP connected to the codebase

We wired Figma's MCP server into the repo so component structure, tokens, and layout could be read directly from the design file instead of re-described by hand — backed by a real component library in Storybook.

Storybook component library for Fig's LOS and SSP apps, showing organized folders for Components and Pages (Generic, Offer, PersonalLoan, Prequal) with a live PersonalLoan page preview including Flinks bank connection copy
The component library in Storybook — the shared source of truth
03

The Design Playground

Production screens running with local state and mock data — a sandbox where I could test real UI against real components without touching a shared environment.

The Design Playground: a production loan-amount step running with mock data, next to a Design Playground panel listing every Prequal, Origination, Portal, and Chat screen plus a prompt box to describe a visual change for an agent to apply
The Design Playground — every screen, one prompt box away from a change
04 · The workflow today

Figma or a prompt, to a merged PR

BEFORE · HANDOFF CHAIN
{{ $index }} {{ s }}
AFTER · OWNED CHAIN
{{ $index }} {{ s }}
GitHub profile activity for qinglanzheng-prog showing a contribution graph, commits created in fig-financial/figgy, and a pull request titled 'feat(prequal): update legal name copy and focus-triggered hints'
GitHub activity — commits and PRs shipped through the workflow
05 · Results

Weeks became days — with review intact

weeks → days
Turnaround for small UI fixes
0
Handoffs, staging pushes, and QA cycles for small changes
100%
Changes still pass engineering review

The pilot didn't remove engineering — it removed the parts of the process that existed only to translate intent from one person to another. Review stayed. The queue didn't.