Remote / foldkit-remote
Limits
- Effect RPC is the wire contract; the application supplies deployment layers.
ReadBatchandLiveRequirementcarryREMOTE_PROTOCOL_VERSION, and a mismatched version fails withRemoteProtocolErrorrather than silently drifting. - One request may name at most
MAX_FIELDS_PER_REQUEST(256) fields of one entity and nest relations at mostMAX_RELATION_DEPTH(8) levels; the wire rejects larger inputs. - The wire
LiveChangeunion carries entity patches/deletes and connection insert/remove/invalidate changes;RemoteServer.liveserves them as a stream. - Coalescing is scoped to one
RemoteClientlayer. Separate layers do not share batches. - Retention keeps what active Surfaces (and explicit retain entries) reach. An
inactive/unretained Surface may lose its cache on
RetentionChanged. - Two applications with the same Model type are not distinguishable by TypeScript
alone;
Data.subscriptionsalso checks the Surface owner token at runtime. staleWhileRevalidate({ maxAge })ages entity data. Connections have no age; they re-query when invalidated or whennetworkOnlyforces them.RemoteDatais a closed union.- A Selection must choose at least one field; an empty Selection would require
nothing and misleadingly read
Readyfor every id, so it is rejected.