---
title: "Review persistence architecture for collaborative annotations | Nutrient Web SDK"
canonical_url: "https://www.nutrient.io/guides/web/annotations/synchronization/review-persistence-architecture/"
md_url: "https://www.nutrient.io/guides/web/annotations/synchronization/review-persistence-architecture.md"
last_updated: "2026-05-30T02:20:01.389Z"
description: "Canonical architecture guide for collaborative annotation persistence, including server-backed patterns, storage/sync flows, and anti-patterns."
---

# Review persistence architecture

This guide describes the recommended architecture for collaborative review workflows where multiple users comment, annotate, and return to documents across sessions and devices.

Recommendation summary:

- **Internal persistence/sync format** — Instant JSON

- **External interoperability format** — XFDF

- **Collaboration backbone** — Document Engine with Instant synchronization

## Canonical architecture

For collaborative review, use Document Engine as the source of truth and Instant synchronization for multiuser updates.

1. Clients load documents from [Document Engine](https://www.nutrient.io/guides/document-engine.md).

2. Users create/edit annotations in Web SDK.

3. Changes are persisted server-side and synchronized to other clients through [Instant](https://www.nutrient.io/guides/web/instant-synchronization.md).

4. Clients reconnect and resume from server state across sessions/devices.

5. If needed, export to [XFDF](https://www.nutrient.io/guides/web/importing-exporting/xfdf-support.md) for external systems.

## Recommended server-backed patterns

- **Single source of truth on the server** — Treat server-backed document state as authoritative for team workflows.

- **Use Instant JSON internally** — Prefer Instant JSON for compact, implementation-friendly persistence and synchronization payloads.

- **Use XFDF at boundaries** — Export/import XFDF when integrating with Adobe Acrobat or other XFDF-compatible tools.

- **Keep autosave and sync explicit in UX** — Surface save/sync status in review-heavy applications.

- **Define conflict semantics early** — For concurrent edits, use Instant synchronization to avoid building ad hoc conflict logic.

## Storage and sync flow (reference)

```text

Reviewer A/B opens document -> Document Engine returns current annotation state
Reviewer A annotates -> change persisted server-side (Instant JSON-based)
Instant sync broadcasts change -> Reviewer B receives update
Reviewer B reconnects later -> same server-backed state restored
Optional integration export -> XFDF generated for external system

```

## Anti-patterns

- **Local-only persistence for collaborative workflows** — Leads to lost updates and poor multidevice continuity.

- **Using XFDF as the primary real-time sync format** — XFDF is excellent for interoperability, but not ideal as the internal collaborative sync backbone.

- **Assuming single-user storage patterns will scale to team review** — Multiuser sessions need explicit server-backed synchronization.

## Related guides

- [How to choose Instant JSON vs. XFDF vs. server-backed sync](https://www.nutrient.io/guides/web/annotations/import-and-export/choose-persistence-strategy.md)

- [Synchronization overview](https://www.nutrient.io/guides/web/annotations/synchronization.md)

- [Importing and exporting annotations with Document Engine](https://www.nutrient.io/guides/web/annotations/import-and-export/server-backed.md)

- [Importing and exporting annotations in XFDF](https://www.nutrient.io/guides/web/importing-exporting/xfdf-support.md)

- [Importing and exporting annotations with Instant JSON](https://www.nutrient.io/guides/web/importing-exporting/instant-json.md)
---

## Related pages

- [Conflict resolution when synchronizing annotations](/guides/web/annotations/synchronization/conflict-resolution.md)
- [Synchronizing annotations across users, devices, and sessions](/guides/web/annotations/synchronization.md)
- [Storing annotation data](/guides/web/annotations/synchronization/storing-annotation-data.md)

