Pain Points / design limitations
- Limit is useless for subscriptions with multiple filters (as how to prioritise which filter results are most important? Left to right?)
 - Hard to do pagination (using since/until, but what limit to use? What if older events shared after you fetch, you’ve now missed it)
 - Race condition between EOSE and CLOSE subscription when you don’t want to stream (option to only return existing data only, without newer broadcast results)
 - Events from new pubkeys are missing basic kind0 data (ideally embed name/display_name for first pubkey event)
 - Websocket congestion control and bottlenecks (single event streamed at a time, blocked by larger events FIFO)
 - Unable to query for ranges of kinds (e.g. {"kinds": [30000-39999]})
 - More?
 
Missing Features
- Option to request metadata for events (like reaction or reply counts, etc)
 - Reverse sorting capability
 - Ability to query with POW minimum (today only starts with N zeros, and support for that looks to be EOL as a supported query)
 - Unable to request related events be included in the same request (e.g. include all replies to event with depth x)
 - Relay pre-filtering (clients should enforce filter checks locally, however this can reduce data usage)
- Keyword filtering (we have NIP-50, however I think we can improve if we review a new request structure)
 - Tag filtering (e.g. without "content-warning")
 - Pubkey muting (eg. share cuckoo filter of pubkeys to skip/ignore)
 
 - Ability to share cuckoo filters of received events (maybe per relay session - eg. only send profile kind 0 once, no need to send again unless replaced)
 - More?
 
Questions
- How much caching or deduping logic in server side vs client side - how do we balance and perhaps allow disable server logic?
 - Can we perhaps pre-can some common client app queries so relays can cache the data for better performance? Perhaps in areas like DMs, notifications, etc.
 - Do we need to consider relay indexers/aggregators and any needs they may have?
 - Potential for perhaps client config (e.g. a mobile client can request more data saving features be enabled)