Fetching relay lists just once is a fine idea, maybe doing it again after 24 hours or something. People don't change relays often.
Also, IMHO, rather than building a smartphone or web app, use a server as the protocol client, and the smartphone or web app just as a frontend to the server. Servers can aggregate far more efficiently, and don't have restrictions that webapps do.
I've come to believe the best solution is
- Replace nostr so we can fix these problems far better.
- Define in the standard that only 3 outbox relays will be honored, so people don't have incentives to publish to dozens.
- Use the Bittorrent DHT to bootstrap, instead of relying on a purplepag.es single-point-of-failure
- Give relays keypairs, so we don't have to depend on the DNS name, DNS lookups, or certificates from CAs issued by nobody companies. Technically, that means using TLS certificates with keypairs that we recognize the key of... which means they can't be secp256k1 since TLS doesn't support that cryptosystem.
- Switch to QUIC whenever IP privacy isn't needed (else use TCP over Tor), which doesn't have any connection limits and can recover connections even when endpoints switch IP addresses (e.g. moving from WiFi to 4G)
- A bunch of other stuff too.
I'm (slowly) working on this (called Mosaic) but my life has become complicated recently and I haven't had much time to devote to it.
