I wrote a blog post about a prototype for revamping our color implementation in our design system—focusing on type safety with phantom types and convenience with property wrappers. I really enjoyed building it! Will it ship? No idea. But it was fun to explore. https://marcelvoss.com/2025/rethinking-our-color-system-a-type-safe-approach-in-swift/ #iosdev #designsytems
Rethinking Our Color System: A Type-Safe Approach in Swift

Our design system1 provides colors for three different contexts: background, foreground, and borders. Each color can exist in four different states: normal, hovered, disabled, and pressed. Historically, we modeled this using a UIColor subclass that exposed properties for different states. When the instance was used as is, it implicitly represented the normal variant. While this approach was convenient—since developers never had to manually reference the normal state—it had trade-offs. As customization expanded and dark mode support became essential, we ran into a major issue: our subclass didn’t work with UIColor’s dynamic theming mechanism. It turns out, subclassing UIColor is possible but not recommended2.

Marcel Voss

24 articles to read through for the next @DesignSysNew email newsletter.

Not signed up yet and want a curated email of the best articles, tutorials, examples, media, and links about Design Systems?

Be sure to sign-up:

https://news.design.systems

🙏🖤

#DesignSytems #WebDev #FrontEnd #DesignSystem #DesignTokens

Design Systems News

A publication full of interesting, relevant, and curated links.