Yes, both communikeys and NIP-29 groups are easier to work with. But NIP-17 DMs use gift wraps, and the ecash wallet uses NIP-44 encryption. There's a bunch of data I need to store client side for incremental sync and to avoid having lots of encrypt/decrypt ops.
The browser has key-value storage and indexed storage and I use both, but even with proper indexes and query optimizations you hit a perf wall on web once you store thousands of records. There's also the issue that durability is not guaranteed and DB might get pruned once you hit certain quotas.