Designing for delivery

How code migration strengthened design outcomes.

Case study by:

Amiel Samai

Date:

December 2025

The legacy
infrastructure dilemma

Our client’s internal application had outgrown its Vue foundation. Years of quick iterations had led to inconsistencies, component drift, and technical debt that slowed development. What started as a straightforward migration to React quickly revealed a deeper opportunity: to redesign not just the interface, but the system behind it.

The goal wasn’t just to migrate the application—it was to make the experience scalable, maintainable, and consistent across every workflow. That meant aligning design and engineering around a shared foundation built for growth.

Designing through constraints

From the start, we understood this wasn’t about shipping pixel-perfect mockups. It was about designing through constraints—aligning intent and implementation without losing speed.

We embedded developers into the design process and embedded design directly into the migration workflow. By breaking down the traditional handoff, both teams worked side-by-side from concept to code, validating ideas in real time and shaping the interface together.

That proximity changed everything. Design stopped being a separate phase and became part of the build.

We quickly learned that even small UI decisions had broad implications in code. A color token meant a new prop; a spacing adjustment could ripple through multiple layouts. By collaborating daily and validating as we built, we kept consistency high and friction low.

What began as a technical migration became a shared rhythm between design and development—a process built around delivery, not handoff.

“Being part of the design process early on helped us flag feasibility issues and shape solutions up front, rather than during code review,” said Greg Rickaby, front-end engineering lead. “That time spent collaborating made the process more productiveand, dare I say, fun.”

Building with delivery in mind

As we gained traction, one principle guided every decision: the best experience is the one that ships.

We designed with delivery at the center—creating patterns that were modular, reusable, and grounded. Components were validated before being finalized in Figma, ensuring parity between design and code.

Designing for delivery meant prioritizing clarity over perfection:

  • Real-time collaboration replaced long handoffs

  • System thinking replaced one-off fixes

  • Shared accountability replaced silos

By the time the migration reached momentum, the process itself had transformed. Every new feature shipped faster because every new pattern was built to last.

“The ability to quickly share designs and iterate together meant we avoided scrapping ideas down the line,” said Patrick Garman, engineering manager. “Those early tweaks helped align designs with our technical limitationsand made everyone more efficient.”

What collaboration
made possible

When the React application launched, the difference was immediate. The client now had a unified design system—flexible, modern, and easy to maintain. Features that once required rework in multiple places could now be rolled out in a fraction of the time.

The outcomes included:

  • A consistent, intuitive interface ready for long-term iteration

  • A modular component system supporting rapid development

  • Shorter design-to-development cycles and faster feature releases

But the biggest outcome wasn’t in the codebase—it was in the relationship. The migration created a culture of delivery-minded collaboration that continued well beyond launch.

“From the product perspective, having design and engineering collaborating daily/hourly/ad hoc worked so well that it feels as though we've been doing it wrong for years. Rather than the traditional flow of step-by-step review, the rapid iteration on ideas gave Product confidence and peace of mind that changes could be done!” said Cameron Knox, product owner

What we learned

This migration reminded us that great design doesn’t exist in isolation. It lives in code, in conversation, and in the shared trust between disciplines.

We learned that designers don’t need to code to think like developers—empathy for the build process is enough to transform outcomes. We learned that design isn’t done until it ships, because anything less never reaches the people it’s meant to serve. And we learned that relationships are the real system: the stronger they are, the smoother the delivery.

These aren’t just takeaways from one migration; they’ve become habits that continue to guide how we design, build, and deliver together.

Final word

This migration showed that the real outcome of good work isn’t just a better application, but a stronger partnership between the people who build it.

For us, that’s the mark of delivery done right: a shared process that leaves teams more aligned, confident, and capable of creating what comes next.

If you’re navigating a legacy migration, scaling an internal tool, or working to help your teams move faster together, we’d love to help you design, build, and deliver with confidence.

Together, we design for what’s next.