Primal solved this problem by building a proxy "relay" that handles fetching, aggregating and caching and it's by far the most used client since the competition sucks. Some kind 1 clients don't even try to do any fancy client-side caching and default to download the whole internet every time you open the app, ffs.
#Pubky seems to have a similar design to Primal with homeservers and indexers: I and the people I follow can host the data wherever we want (homeservers can be resolved by pubkey via pkarr/pkdns) and an indexer can easily find it, aggregate it and push notifications to clients. One downside of this design is that it requires trusting the homeserver since the data is not signed. On the other hand, the UX is way better if you don't have to sign everything you poast.
You might not like @npub13ndp...0svh's style but the design choices of #Pubky make sense and the
is really good, I recommend you check it out.

Onboarding | Pubky.app
Pubky.app - Unlock the web.
the nostr relay model is a double-edged sword, especially if your client needs to aggregate data from a bunch of pubkeys: dump pipes makes writing and running relays a breeze but dumps all the complexity to clients. now you don't need a backend but you do have to implement caching, storage and indexing on the client side with subpar primitives (at least on the web) just to get a half decent UX. i'm convinced that clients centered around relays are the sanest way to build apps: @Jumble and @npub1gm7g...0fte embrace this idea.
View quoted note →
