As I’m tagged I’ll share our approach Virto is currently focused on creating high level UI components as a way to package more complex functionalities provided by pallets and runtime components our chain and others in the ecosystem can integrate like
virto-connect
that abstracts the usage of pallet-pass, nft memberships with prepaid gas, sessions, transaction extensions and passkey signing to give the end user a simple to reason with product: copy-paste a couple of lines and I get this component in my page/store/app that allows users to login and send transactions like its web2.
As technology of choice I went for standard vanilla web components, they are not the most common choice as they can be a bit verbose but in 10 years when hundreds of JS frameworks would have vanished the browsers will still support the resilient standards based web components that can integrate with any framework(or none at all). Having a declarative nature I think it also helps in the age of AI where front-ends will be generated by non technical users and their bot of choice can change some behavior updating an html attribute the prompter will understand, which brings me to …
Defining an audience is important, I’m more inclined to step out of our web3 bubble so I avoid UI elements that scream blockchain like a network selector, anything showing addresses, creation of extrinsics, etc. Instead we target less technical people like founders or someone using a website builder who have a concrete use case in mind, e.g. I need a shopping cart and checkout, a payment button, a chat prompt aware of currency amounts or user aliases, a discussion thread, etc. So it might be worth dividing components by use cases(financial, commerce, socials, media, etc.), such components will be more complex and might require things no yet available in our blockchains but definitely more useful if the target is to get people to create actual products.