desktop and mobile have fundamentally different UX patterns, even if the business logic of the application is identical. what you really want is the ability to share UI components between the two aspects of your application. unity, in this and all cases, is death. One Single Shared UX is going to make bad trade-offs in a vain attempt at appeasing the often opposing needs of these interaction models.
Aspect is this idea that a
User will interact with your
Application in one or more ways. each
Aspect is tailored specifically to that interaction. the specific details of how aspects are selected and displayed is an (important) implementation detail, but also beyond the scope of this article.
why aspects in the first place?
isn’t “mobile reactive” the Answer to Every UI Question?
well, no. have you used the web lately? what convergent web applications are you using on a daily basis both on desktop and mobile? how often does the “mobile reactive” thing actually work? in my experience, the best mobile experiences are actually separate applications that are tailored specifically to work on mobile.
“aspects” aren’t really a new idea, just a name i’m giving to this pattern that i’ve noticed. granted, this isn’t a very common one, but i do think that it works well. i’m also convinced that chasing this whole Convergent meme is going to kill a lot of projects and really should be abandoned wholesale.
what we need is productive tools for building reusable native ui components that can be shared easily between the different aspects if your application(s). we want Modular, not Monolithic. some of these ideas have been explored by React, Vue, et al and i think they are on to something. i do think that the Web Stack is a Mistake, but that is also a topic for another time.
aspects are definitely something that i want to explore further in
relax/ui. expect more detailed accounts in future posts.
comment in #federation space