Query-based sync to partially replicate is an absolute must. This was a key feature with Ditto: https://www.ditto.live
You still need pull on demand access when a user opens any random item where we don't know in advance what they probably want (e.g. a discussion board scenario).