useSyncedState in RedwoodSDK currently depends on capnweb for its WebSocket transport. This creates two related constraints for production apps:
- Every deploy drops active WebSocket connections, because Cloudflare restarts Durable Objects on deploy. This is a platform-level behavior, not a bug in our code.
- Without the WebSocket Hibernation API, open connections keep Durable Objects active and billing wall-clock time even when idle. Whether this matters depends on the app's scale and usage pattern.
capnweb is not currently compatible with the Hibernation API, and the maintainer has indicated it is a large project with no near-term timeline. So we cannot fix both constraints by changing a flag. We need to choose between client-side reconnection on the current architecture, reimplementing the server on the Hibernation API, or documenting the limitations clearly.