Most design-engineering friction isn’t about talent. It’s about a broken relay: design throws a file over the wall, engineering builds something close, and the gap surfaces in QA when it’s expensive to fix. The teams that ship well don’t hand off — they work in the same loop. Here are the rituals that actually help.
Pair on components
Book 45 minutes with a designer and build one component together, live. They watch the hover feel wrong at 300ms; you watch them realize the empty state was never drawn.
The bugs you catch while pairing never reach a ticket. You’ll fix in one sitting what would have been three review rounds, and you both leave with the same mental model of how the thing works.
Review inside the PR
Design review shouldn’t live in a separate tool. Put a deploy preview link on every PR and let designers comment on the running thing, not a screenshot.
They’ll catch what a static mock can’t show: the animation that stutters, the focus ring that’s missing, the layout that breaks at a real content length. Feedback lands on the actual artifact, and it lands before merge instead of after.
One shared vocabulary
Half of cross-team confusion is words. A designer says “card,” an engineer pictures a different component; “primary” means one blue in Figma and another in code.
Fix it once: agree that the token is --primary, the component is Card, and the spacing step is space-4 everywhere — Figma, code, and Slack. One name per thing, and reviews stop being translation exercises.
Start small
Don’t reorganize the team. Pick one ritual this sprint — usually the PR preview link, because it’s the cheapest — and run it for two weeks. Add pairing next. The goal isn’t process; it’s a shorter distance between an idea and a thing you can both click on.