From a4f5929f90006bca81809e737effcc35e809bb01 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 28 Jan 2026 14:01:08 -0300 Subject: [PATCH] Update JS LiveObjects documentation for apply-on-ACK This reflects the functionality implemented in [1], based on the DR [2] and spec [3]. Written by Claude. [1] https://github.com/ably/ably-js/pull/2155 [2] https://ably.atlassian.net/wiki/spaces/LOB/pages/4671832082/LODR-054+SDK+apply+operations+on+ACK) [3] https://github.com/ably/specification/pull/419 --- src/pages/docs/liveobjects/batch.mdx | 2 +- .../docs/liveobjects/concepts/synchronization.mdx | 11 +++++++++++ src/pages/docs/liveobjects/quickstart/javascript.mdx | 2 +- src/pages/docs/platform/errors/codes.mdx | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/pages/docs/liveobjects/batch.mdx b/src/pages/docs/liveobjects/batch.mdx index 1ddbb21a09..04b5734a71 100644 --- a/src/pages/docs/liveobjects/batch.mdx +++ b/src/pages/docs/liveobjects/batch.mdx @@ -198,7 +198,7 @@ try { Since the batch callback is synchronous, you can read current values inside a batch context without intermediate updates from other clients being applied between reads: diff --git a/src/pages/docs/liveobjects/concepts/synchronization.mdx b/src/pages/docs/liveobjects/concepts/synchronization.mdx index 795ce1d899..c1c28a28b0 100644 --- a/src/pages/docs/liveobjects/concepts/synchronization.mdx +++ b/src/pages/docs/liveobjects/concepts/synchronization.mdx @@ -51,8 +51,19 @@ Calling [`channel.object.get()`](/docs/liveobjects/concepts/objects#channel-obje All object operations published to the channel are broadcast to subscribed clients, which apply the operations to their local client objects when they are received. This allows clients to maintain a consistent view of the channel objects in a bandwidth-efficient way, since only the operations (rather than the updated objects themselves) are sent over the client's connection. + + + + + + + If there is a loss of continuity on the channel for any reason, such as the client becoming disconnected for more than two minutes and entering the [suspended state](/docs/connect/states#connection-states), the client objects will automatically be resynchronized when it reconnects. diff --git a/src/pages/docs/liveobjects/quickstart/javascript.mdx b/src/pages/docs/liveobjects/quickstart/javascript.mdx index c634039382..3ee1d2ffc3 100644 --- a/src/pages/docs/liveobjects/quickstart/javascript.mdx +++ b/src/pages/docs/liveobjects/quickstart/javascript.mdx @@ -200,7 +200,7 @@ await reactionsMap.remove('likes'); ## Next steps diff --git a/src/pages/docs/platform/errors/codes.mdx b/src/pages/docs/platform/errors/codes.mdx index acac0bd4e4..26c6d51728 100644 --- a/src/pages/docs/platform/errors/codes.mdx +++ b/src/pages/docs/platform/errors/codes.mdx @@ -766,6 +766,10 @@ You may encounter this error when the type of the object located at the specifie Resolution: * Ensure that the operation is valid for the type of object at the specified path. +## 92008: Unable to apply objects operation; objects sync did not complete + +This error occurs when a LiveObjects mutation operation has been successfully published to the server, but the operation could not be applied locally because the channel entered the `DETACHED`, `SUSPENDED`, or `FAILED` state while waiting for the objects sync to complete. The operation will still take effect on the server, but the local state may not reflect it until the channel is re-attached and the objects are re-synced. + ## 93001: Attempt to add an annotation listener without having requested the annotation_subscribe channel mode This error occurs when attempting to [subscribe to individual annotations](/docs/messages/annotations#subscribe-individual-annotations) without having requested the `annotation_subscribe` [channel mode](/docs/channels/options#modes) .