diff --git a/src/pages/docs/liveobjects/batch.mdx b/src/pages/docs/liveobjects/batch.mdx
index 1ddbb21a09..7512c30bcc 100644
--- a/src/pages/docs/liveobjects/batch.mdx
+++ b/src/pages/docs/liveobjects/batch.mdx
@@ -31,6 +31,8 @@ Batch operations are only currently only supported in LiveObjects JavaScript. Su
Batch operations allow multiple updates to be grouped into a single channel message and applied atomically. It ensures that all operations in a batch either succeed together or are discarded entirely. Batching is essential when multiple related updates to channel objects must be applied as a single atomic unit, for example, when application logic depends on multiple objects being updated simultaneously. Batching ensures that all operations in the batch either succeed or fail together.
+
+
diff --git a/src/pages/docs/liveobjects/concepts/objects.mdx b/src/pages/docs/liveobjects/concepts/objects.mdx
index a3200d07ec..61e50dfa8d 100644
--- a/src/pages/docs/liveobjects/concepts/objects.mdx
+++ b/src/pages/docs/liveobjects/concepts/objects.mdx
@@ -27,6 +27,8 @@ meta_description: "Learn how data is represented as objects in Ably LiveObjects"
LiveObjects enables you to store shared data as "objects" on a channel, allowing your application data to be synchronized across multiple users and devices in realtime. This document explains the key concepts you need to know when working with objects.
+
+
## Primitive types
Primitive types are the fundamental data types that can be stored in a collection type. Currently, the only supported collection type is a [LiveMap](/docs/liveobjects/map).
diff --git a/src/pages/docs/liveobjects/concepts/operations.mdx b/src/pages/docs/liveobjects/concepts/operations.mdx
index 3353bfa619..b6aed3ebee 100644
--- a/src/pages/docs/liveobjects/concepts/operations.mdx
+++ b/src/pages/docs/liveobjects/concepts/operations.mdx
@@ -29,6 +29,8 @@ LiveObjects operations define how object data is updated and synchronized across
When you create or update an object, the change is expressed as an _operation_ that is sent as an [object message](/docs/metadata-stats/stats#messages) on the channel. The operation is then applied to the object instance on all clients that are subscribed to the channel.
+
+
This document explains the key concepts you need to know when working with operations.
## Operation types
diff --git a/src/pages/docs/liveobjects/concepts/synchronization.mdx b/src/pages/docs/liveobjects/concepts/synchronization.mdx
index 795ce1d899..9a61f6be69 100644
--- a/src/pages/docs/liveobjects/concepts/synchronization.mdx
+++ b/src/pages/docs/liveobjects/concepts/synchronization.mdx
@@ -35,6 +35,8 @@ Each object instance is identified by a unique [object ID](/docs/liveobjects/con
Ably stores the object data durably such that the data is available even after the channel becomes inactive. The data is stored in multiple regional datacenters and across multiple availability zones. This ensures that the data is available even if there is disruption in one or more datacenters.
+
+
When a channel first becomes active in a region, the channel loads the object data from durable storage into memory to facilitate low-latency operation processing.
## Client objects
@@ -56,3 +58,5 @@ Currently, when a client publishes an operation it is not immediately applied to
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/inband-objects.mdx b/src/pages/docs/liveobjects/inband-objects.mdx
index ca30536478..8046b8b05d 100644
--- a/src/pages/docs/liveobjects/inband-objects.mdx
+++ b/src/pages/docs/liveobjects/inband-objects.mdx
@@ -37,6 +37,8 @@ If you're using LiveObjects from one of the the following languages, then use th
Inband objects works by delivering changes to channel objects as regular channel messages, similar to [inband occupancy](/docs/channels/options#occupancy).
+
+
## Enable Inband Objects
To enable inband objects, use the `objects` [channel parameter](/docs/channels/options#objects) when getting a channel:
diff --git a/src/pages/docs/liveobjects/index.mdx b/src/pages/docs/liveobjects/index.mdx
index 9ffd8a4f3d..482aebdde1 100644
--- a/src/pages/docs/liveobjects/index.mdx
+++ b/src/pages/docs/liveobjects/index.mdx
@@ -33,10 +33,16 @@ LiveObjects provides a global, durable, and conflict-free shared data layer buil
LiveObjects has the same performance guarantees and scaling potential as [channels](/docs/channels).
+
+
LiveObjects enables you to store shared data as "objects" on [channels](/docs/channels). When an object is updated, changes are automatically propagated to all subscribed clients in realtime, ensuring everyone always sees the latest state.
LiveObjects provides a simple, purpose-built API that handles realtime synchronization, persistence, and convergence behind the scenes. The result is a single logical view of your data - distributed to the edge, updated in real time, and always in sync - no matter how many users are connected or where they are in the world.
+
+
+
+
## Use cases
You can use LiveObjects to build all sorts of powerful functionality in your applications that require realtime updates to shared data. It is useful when your application has data that:
diff --git a/src/pages/docs/liveobjects/lifecycle.mdx b/src/pages/docs/liveobjects/lifecycle.mdx
index ebc0b2cb53..c68ca525ec 100644
--- a/src/pages/docs/liveobjects/lifecycle.mdx
+++ b/src/pages/docs/liveobjects/lifecycle.mdx
@@ -76,6 +76,8 @@ channel.getObjects().on(ObjectsStateEvent.SYNCED, (stateEvent) -> {
LiveObjects synchronization events do not replace [connection](/docs/connect/states) or [channel](/docs/channel/states) states. You should still monitor these states and handle [connection](/docs/connect/states#handling-failures) and [channel](/docs/channel/states#failure) failures to ensure your application behaves as expected. LiveObjects synchronization events specifically inform you about the progress of LiveObjects data synchronization and should be used alongside other state management mechanisms.
+
+
## Handle object lifecycle events
diff --git a/src/pages/docs/liveobjects/storage.mdx b/src/pages/docs/liveobjects/storage.mdx
index 7f7ba0a557..86d6709907 100644
--- a/src/pages/docs/liveobjects/storage.mdx
+++ b/src/pages/docs/liveobjects/storage.mdx
@@ -7,6 +7,8 @@ meta_description: "Learn about LiveObjects object storage."
Ably durably stores all objects on a channel for a retention period that is configured to 90 days by default. If the data is not updated within the retention period, it automatically expires. After expiry, the channel is reset to its initial state and only includes an empty [channel object](/docs/liveobjects/concepts/objects#channel-object)[root object](/docs/liveobjects/concepts/objects#root-object).
+
+