Reactivity Updates
The Reactivity Update module ensures that any changes made to a document by one user are reflected for all other users viewing the same document. This enables real-time collaboration by automatically syncing updates across all active sessions, eliminating the need for manual refreshes or reloads.
Type of Events
Event | Description |
---|---|
Insert | The dataset receives a document which previously was not there. This either means a new document was created or a document was changed in such a way that it now matches the configuration (filter & sorting) of the dataset. |
Update | The dataset receives changes to a document that is already present. |
Delete | The dataset will remove a document if the document was either deleted or no longer matching the configuration (filter & sorting) of the dataset |
Update Throttling
To optimize performance and reduce unnecessary updates, reactivity updates make uses of a debounce mechanism:
-
Updates are delayed by 500ms after the most recent change, ensuring that rapid, successive document changes don’t trigger redundant updates.
-
If document changes continue to happen rapidly, updates are still guaranteed to occur at least every 5000ms (5 seconds), even if the debounce delay keeps resetting.
This approach balances responsiveness with performance, ensuring users see timely updates without overwhelming the system with frequent refreshes.
Note: The debounce mechanism applies for the entire document collection.
Buffered Updates During Layout Actions
While a user is performing a layout action (such as executing a workflow action), reactivity updates are temporarily paused to prevent visual disruptions and ensure a smoother editing experience.
-
Incoming updates from other users are not immediately applied during the layout action.
-
Once the layout action is completed, all buffered updates are flushed and applied in order, ensuring the document reflects the latest state without interrupting the user’s current interaction.
This mechanism prevents conflicts or jarring updates while maintaining real-time accuracy once the user completes their layout changes.
Note: Buffering of updates occur per each layout. This means that while a layout action is ongoing on a layout, other layouts on the screen will process reactivity events.