Mobile System Design

By the author of the Mobile System Design and Swift in Depth books
Tjeerd in 't Veen

Written by

Tjeerd in 't Veen

X

Mastodon

LinkedIn

Youtube

Instagram

Newsletter

Reader

Why a Design System Matters to Developers

Tue, 6 May 2025, reading time: 7 minutes

As a developer, you might think, “Why do I need to care about a design system? I get designs from a designer, complete with proper spacing, components, and all the elements I need to build the UI. I don’t need to read documentation to build my features!”

The designer already follows the design system rules. They know whether to use a primary or secondary button, they define the right borders, and (hopefully) hand off a polished design. So why bother with UI documentation or a design system? You could just refer to the designs, grab what you need from the UI library, and get to work, right?

On the surface, that makes sense. But here’s the thing: there’s a lot more value to working with a design system than you might realize. It’s not just about saving the designer time. It’s about making your life easier too, especially as your project grows and becomes more complex.

Let’s talk about how a design system helps, even if you’re lucky enough to work with a fantastic designer.


A Better Working Culture

Some developers are used to getting every UI decision made for them. They implement a design without question. But when the handoff is incomplete, such as when they miss things like empty states, dark mode, or tablet variations, they get frustrated and expect the designer to fill in every gap.

And when something is off, like a button that’s too small or margins that feel weird, they call it out:
“Shouldn’t this button be wider?”
“How come the padding is different here?”

Unintentionally, these developers can become kind of nitpicky, acting as a critic instead of a collaborator. They point out mistakes in the design, rather than working together to improve it. This dynamic can create friction and undermine the shared goal of building a great product.

Believe it or not, designers are human too. They might miss a color here or a font size there. This isn’t about designers doing everything perfectly. It’s about developers being a partner in delivering a polished product, together.

In contrast, a collaborative developer sees the handoff not as a complete blueprint, but as a starting point. They try to understand the reasoning behind the design. They recognize that a design is a communication tool, not the final result. Then they check the design system for guidance. They use it to fill in missing states or adapt the design to other platforms, without needing to ask for every little variation.

That’s a mindset shift.

Working this way creates a healthier relationship. A design system stops designers from being the “UI gatekeeper” where they have to explain every little detail or hand over designs for developers to figure out. Instead, developers share responsibility for the UI. This makes things feel more balanced and helps build a better working culture where everyone shares ownership over the UI.


Not Everything Is in the Design

Designs can’t cover every dynamic state or interaction. Think of things like varying content lengths, right-to-left text, or dynamic font sizes. Even if a designer tries to account for all of these, they’d have to provide dozens, if not hundreds, of screens.

Even with tooling in design programs to show variations of a design, a designer would have to supply dozens, if not hundreds, of variations of each feature to account for all states a feature can be in.

When a designer is kind enough to provide tons of screens, it’s still never 100% complete. As a developer, you’re often the one filling in the gaps. The design system gives you principles to ensure those decisions align with the overall design philosophy rather than being improvised.

For example, you don’t need a designer to come up with a dark mode version of the same feature. Instead, if your UI is set up correctly, you can implement the light-mode version, and you get the dark mode version for free.

To be a pro at handling colors, be sure to check out chapter 20 of the Mobile System Design book

The same goes for dynamic fonts. If you get a feature’s UI with a regular font size, and enable large fonts, the UI might mess up a bit. But, with a design system, you can figure out yourself how to tweak the margins. You don’t need a designer to supply more screen variations before you can continue.

Which brings us to the next point.


Developers Gain Autonomy

With a design system, you don’t have to wait around for the designer to figure out everything for your platform.

Instead, the system acts as a guide, providing clear rules and reusable components that allow you to work independently.

If there are variations that the designer hasn’t explicitly covered — like how a component behaves in an error state or on a larger screen — you can reference the design system to make decisions confidently.

This autonomy means you’re not constantly waiting for input or relying on the designer for every detail, which speeds up the workflow and allows you to take a more independent role when implementation features.

It doesn’t mean you’re working in a silo. You still collaborate with designers. But instead of pinging them for pixel details, your collaboration focuses on real problems. You get to spend time solving meaningful challenges instead of debating whether the border radius is 6 or 8.


Adapting Features From Other Platforms

Imagine you’re an iOS developer, and you’re tasked with translating a successful web feature to a feature in your app. Or maybe you’re an Android developer, adapting a feature that’s already live in the iOS app.

It wouldn't be the first time that a feature releases iOS-first. I feel your pain, Android developers.

You might ask a designer to do most of the upfront work, you may expect them to deliver detailed screen designs for your platform. But here’s the thing: is that really necessary?

Also, designers don’t always have the time to fully reimagine every feature for every platform. Smaller details, like how it works on different screen sizes, what happens with touch interactions, or how it behaves in edge cases, often get left out.

That’s where the design system helps. It gives you the building blocks and the rules. You can handle the platform-specific adjustments yourself. Things like button sizes, responsive layout, and spacing patterns don’t need a meeting. You already have the tools to do it.

And again, this doesn’t mean you’re working alone. It means you’re empowered to move forward without being blocked by missing designs.


Experienced Developers Benefit From a System

If you’re an experienced developer, it might seem that a design system is overkill for you.

You can take half-baked design sketches and, using your extensive experience, turn them into fully realized features without needing much from a designer, let alone a mature design system.

But as the product grows, small inconsistencies will creep in, no matter how skilled you are. Maybe you tweak a button’s padding for one screen, but it’s unclear if that tweak should apply everywhere. Or you handle a loading state differently from another feature because there’s no shared standard.

Over time, these minor variations add up, and suddenly, your app feels less polished and harder to maintain.

Imagine that the loading screen receives a major UI update. Now you would have to hunt down every variation and do extra work just to update multiple similar-yet-slightly different views.

To learn more about structured spacing, check out Structuring Spacing for Scalable Mobile UIs .

Even if your company poached the most skilled engineers from around the world, that doesn’t guarantee they are communicating often and well. Thus, increasing the risk of disjointed UI.

A design system helps avoid this by making sure every decision you make, such as how buttons behave or what spacing to use, is reusable and consistent across the app.

It’s not about slowing you down; it’s about making your work scalable. You solve a problem once, and that solution works everywhere, saving you time and ensuring long-term consistency.

That’s the real value of a design system; It saves time for everyone, even the most experienced devs.


Design Systems Help New and Onboarding Developers

For a new developer, the value of a design system is even greater.

Imagine they’ve just joined the team and are asked to build a settings screen with a mix of inputs: toggles, dropdowns, and text fields.

Without a design system, they might need to dig through the app to find similar components, figure out if there are any conventions for layout or spacing, and potentially end up hard-coding their own styles to make it “look right.” This process is time-consuming and increases the risk of inconsistencies creeping into the app. One screen might use slightly different margins or input styles than another.

New employees might continuously “bother” veteran employees for every little detail to ensure they aren’t doing anything “wrong”. After all, they just joined the company and they don’t want to screw anything up while they’re on their probation period.

But this process can be much smoother.

With a design system in place, the new developer can quickly reference pre-built components and layout patterns, such as a documented form layout that specifies how toggles, dropdowns, and text fields should align and behave. They can implement the screen confidently, knowing they’re using the same standards as the rest of the app.

A design system empowers new developers to onboard quickly and contribute effectively without having to consult others as much.


Conclusion

These are some thoughts on why a design system matters for developers.

That said, actually implementing a design system is a herculean task. Many teams try, but it doesn’t stick. Not because they don’t care, but because it takes real effort and coordination to make it work.

You don’t have to do everything at once. A design system can grow gradually. You can build it on top of what you already have.

If you want to learn more, chapters 19 through 23 of the Mobile System Design book covers this in depth. It contains a practical roadmap to turning random UI decisions into a working system without requiring a giant rewrite.

The Mobile System Design book

If you want to boost your career and become an even better mobile engineer, then check out the Mobile System Design book.

I am the author of this book, but you may also know me from the highly-rated Swift in Depth book.

Even if you're a senior or staff-level engineer, I am confident you'll get a lot out of it.

It covers topics in depth such as:

  • Passing system design interviews
  • Large app architectures
  • How to avoid over-engineering
  • Dependency injection without fancy frameworks
  • Saving time by delivering features faster
  • Integrating a Design System into your apps

... and much more!

Get the Mobile System Design book

Written by

Tjeerd in 't Veen has a background in product development inside startups, agencies, and enterprises. His roles included being a staff engineer at Twitter (before X) and iOS Tech Lead at ING Bank.

He is the author of the Mobile System Design and Swift in Depth books.

Stay up to date and subscribe to the newsletter to get the latest updates in your mailbox.