Share Dialog
Share Dialog

Subscribe to erik

Subscribe to erik
<100 subscribers
<100 subscribers
The paradigm of building software using AI (via e.g. Cursor or v0) and standardized design systems (like shadcn) has streamlined the product development process, making it easier than ever to create apps quickly.
I love this, but I’ve noticed it comes at (least for now) a cost. When every app is built on the same foundations and models, the result is a smörgåsbord of experiences that lack personality, originality, and edge. Modern apps, websites, and brands are starting to look like digital doppelgängers.
In this brief post, I’ll drop some of my ideas and attempt to outline some high-level principles to help your products stand out, based on industry best practices used in applications with millions of users. Let’s dig into it.
The best products strikes a balance between familiarity and novelty, offering users a sense of both home and innovation at the same time. New and old reliable, hand in hand.
Ideally, your app’s new features and interaction patterns should blend harmoniously with familiar components that users instantly recognize from other products they love and use daily.
Zomming outMost interactions and flows in your product should be generic, established, and feel familiar. This way you leave cognitive and visual space for the novel flagship features you want to highlight and use to differentiate your app—without it being overwhelming.

So to be clear, public design systems are great and prevents product teams from reinventing the wheel. But a risk when using these off-the-shelf component libraries is that the user experience can become too generic, dull, and speechless. It can make your product lack the edge™ that makes it interesting, rememberable, and fun to use.

Crafting experiences that feel unique and “resonate with your users” is easier said than done and more of a (tbh, kind of vague) end result rather than a process that’ll get you there.
So, let’s look into how global brands are achieving this á la show, don’t tell.

One important key to differentiate your experience is to spark joy between the lines of your UI, and make your app’s key flows into brand moments. Make the core interactions feel unique and on brand while using underlying patterns users know and feel at home with via thousands of apps before. The focus here is to create something that feels special to both you and the user without overdoing it (more on this later).
To get started, experiment with tailor-made animations, copy, and illustrations designed to frame each part of the experience. Elements that embody entities, steps, or features in your app.
Identify in-between steps of your flows; empty states, loading, success screens, and confirmations, etc., and use these moments to highlight your brand alongside the messaging without slowing the user down.
Consistency is key. Ensure that your brand is introduced seamlessly throughout the flows. Every detail matters. Embedding your brand beyond marketing channels and into the end-user experience is easier said than done, but it is essential for building a cohesive and memorable product across all clients / surfaces / touchpoints.
Below, I’ve included some examples of how brands like Figma, MetaMask, and Notion do this. With more examples by the bottom of this post.





Many apps often present all available features at once, on the top level. Everything is right there, all the time, whether the user needs it or not. This makes sense for some apps, but generally leads to a cluttered and overwhelming user experience.

The overarching goal should be to make your product accessible to newcomers without sacrificing depth or power for experienced users. This is particularly crucial for flows like onboarding, which can have many potential paths and edge cases. It’s important to avoid turning critical flows into daunting tasks that overwhelm the user. Enough is enough.
Aim to keep only the fundamental features at the user’s fingertips, and introduce additional functionalities as they become relevant in the flow. This approach ensures that users are not bombarded with options and can focus on the task at hand.
Most product teams are caught up with adding more features, capabilities, and functionality, but very rarely spend time thinking about what can be removed. So every once in a while — instead of adding stuff — consider what can be removed to streamline the experience. Zoom out and re-focus on the main tasks your app is designed for, and make it super delightful before adding customizability and subtasks.
Think of experiences people love, like Apple Pay or AirDrop, which each do one thing exceptionally smoothly without almost any configuration, customizability, or cognitive overload. They just focus on delivering one seamless and intuitive experience that does one thing really well.
Good design emphasizes the usefulness of a product while disregarding anything that could detract (you!!) from it.

Great interactions are often modeled after properties from the real world. This approach was particularly prominent during the skeuomorphism-era that characterized early versions of iOS, but it remains a valuable tool for infusing digital experiences with a sense of clarity, delight, and familiarity.
Analog patterns can be used to simplify, overview, and intuitively describe complex interactions. Examples include the use of sliders, toggles, and controls to adjust volume, brightness, or other arbitrary metadata. Another example is how most calendar apps mimic the look and feel of a traditional desk calendar. By drawing inspiration from real-world objects and interactions, you can create interfaces that are immediately understandable and engaging for users.
UI parallels to the real world can transform mundane tasks and boring UIs into experiences that spark joy. Give yourself some time here and let your imagination go free here. Think of products, patterns, and interactions that you love irl, and see if any of these could be used as proxies to simplify or symbolize what you’re trying to achieve via software.





While education, descriptions, and explicit context can be needed, the real magic happens when users can seamlessly interact with your product without needing instructions. By holding the users’ hands and displaying just what they need at any given stage, you can create a product that feels almost effortless to use without having to clutter the UI with tooltips and long intros.
Instead of relying solely on text to guide users, use visual cues and interactive elements to lead them through the experience.

Exceptional software goes beyond function; it creates a connection between people and technology. In a world overfilled with apps, adding polish & joy to the core flows of your product is what transforms ordinary products into extraordinary ones.
Thank you and stay blessed. Included some inspo below, let me know what you think, if you have interesting ideas or UI to share, and feel free to follow me on Twitter.

















The paradigm of building software using AI (via e.g. Cursor or v0) and standardized design systems (like shadcn) has streamlined the product development process, making it easier than ever to create apps quickly.
I love this, but I’ve noticed it comes at (least for now) a cost. When every app is built on the same foundations and models, the result is a smörgåsbord of experiences that lack personality, originality, and edge. Modern apps, websites, and brands are starting to look like digital doppelgängers.
In this brief post, I’ll drop some of my ideas and attempt to outline some high-level principles to help your products stand out, based on industry best practices used in applications with millions of users. Let’s dig into it.
The best products strikes a balance between familiarity and novelty, offering users a sense of both home and innovation at the same time. New and old reliable, hand in hand.
Ideally, your app’s new features and interaction patterns should blend harmoniously with familiar components that users instantly recognize from other products they love and use daily.
Zomming outMost interactions and flows in your product should be generic, established, and feel familiar. This way you leave cognitive and visual space for the novel flagship features you want to highlight and use to differentiate your app—without it being overwhelming.

So to be clear, public design systems are great and prevents product teams from reinventing the wheel. But a risk when using these off-the-shelf component libraries is that the user experience can become too generic, dull, and speechless. It can make your product lack the edge™ that makes it interesting, rememberable, and fun to use.

Crafting experiences that feel unique and “resonate with your users” is easier said than done and more of a (tbh, kind of vague) end result rather than a process that’ll get you there.
So, let’s look into how global brands are achieving this á la show, don’t tell.

One important key to differentiate your experience is to spark joy between the lines of your UI, and make your app’s key flows into brand moments. Make the core interactions feel unique and on brand while using underlying patterns users know and feel at home with via thousands of apps before. The focus here is to create something that feels special to both you and the user without overdoing it (more on this later).
To get started, experiment with tailor-made animations, copy, and illustrations designed to frame each part of the experience. Elements that embody entities, steps, or features in your app.
Identify in-between steps of your flows; empty states, loading, success screens, and confirmations, etc., and use these moments to highlight your brand alongside the messaging without slowing the user down.
Consistency is key. Ensure that your brand is introduced seamlessly throughout the flows. Every detail matters. Embedding your brand beyond marketing channels and into the end-user experience is easier said than done, but it is essential for building a cohesive and memorable product across all clients / surfaces / touchpoints.
Below, I’ve included some examples of how brands like Figma, MetaMask, and Notion do this. With more examples by the bottom of this post.





Many apps often present all available features at once, on the top level. Everything is right there, all the time, whether the user needs it or not. This makes sense for some apps, but generally leads to a cluttered and overwhelming user experience.

The overarching goal should be to make your product accessible to newcomers without sacrificing depth or power for experienced users. This is particularly crucial for flows like onboarding, which can have many potential paths and edge cases. It’s important to avoid turning critical flows into daunting tasks that overwhelm the user. Enough is enough.
Aim to keep only the fundamental features at the user’s fingertips, and introduce additional functionalities as they become relevant in the flow. This approach ensures that users are not bombarded with options and can focus on the task at hand.
Most product teams are caught up with adding more features, capabilities, and functionality, but very rarely spend time thinking about what can be removed. So every once in a while — instead of adding stuff — consider what can be removed to streamline the experience. Zoom out and re-focus on the main tasks your app is designed for, and make it super delightful before adding customizability and subtasks.
Think of experiences people love, like Apple Pay or AirDrop, which each do one thing exceptionally smoothly without almost any configuration, customizability, or cognitive overload. They just focus on delivering one seamless and intuitive experience that does one thing really well.
Good design emphasizes the usefulness of a product while disregarding anything that could detract (you!!) from it.

Great interactions are often modeled after properties from the real world. This approach was particularly prominent during the skeuomorphism-era that characterized early versions of iOS, but it remains a valuable tool for infusing digital experiences with a sense of clarity, delight, and familiarity.
Analog patterns can be used to simplify, overview, and intuitively describe complex interactions. Examples include the use of sliders, toggles, and controls to adjust volume, brightness, or other arbitrary metadata. Another example is how most calendar apps mimic the look and feel of a traditional desk calendar. By drawing inspiration from real-world objects and interactions, you can create interfaces that are immediately understandable and engaging for users.
UI parallels to the real world can transform mundane tasks and boring UIs into experiences that spark joy. Give yourself some time here and let your imagination go free here. Think of products, patterns, and interactions that you love irl, and see if any of these could be used as proxies to simplify or symbolize what you’re trying to achieve via software.





While education, descriptions, and explicit context can be needed, the real magic happens when users can seamlessly interact with your product without needing instructions. By holding the users’ hands and displaying just what they need at any given stage, you can create a product that feels almost effortless to use without having to clutter the UI with tooltips and long intros.
Instead of relying solely on text to guide users, use visual cues and interactive elements to lead them through the experience.

Exceptional software goes beyond function; it creates a connection between people and technology. In a world overfilled with apps, adding polish & joy to the core flows of your product is what transforms ordinary products into extraordinary ones.
Thank you and stay blessed. Included some inspo below, let me know what you think, if you have interesting ideas or UI to share, and feel free to follow me on Twitter.

















No activity yet