CARVIEW |
Select Language
HTTP/2 301
content-security-policy: script-src 'sha256-1az3CiAdXAaMP3TFl5msfrDjNuSHMdg1ecAgxfZPR50=' 'unsafe-inline' 'strict-dynamic'; object-src 'none'; base-uri 'none'; report-uri https://csp.withgoogle.com/csp/chromium-website/
location: /developers/design-documents/sync/
content-type: text/plain; charset=utf-8
cross-origin-opener-policy-report-only: same-origin; report-to="gfe-default_product_name"
report-to: {"group":"gfe-default_product_name","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/default_product_name"}]}
accept-ranges: bytes
date: Sat, 11 Oct 2025 07:21:26 GMT
x-served-by: cache-bom-vanm7210095-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1760167287.687750,VS0,VE132
vary: x-fh-requested-host, accept-encoding
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400
content-length: 49
HTTP/2 200
cache-control: max-age=3600
content-encoding: gzip
content-security-policy: script-src 'sha256-1az3CiAdXAaMP3TFl5msfrDjNuSHMdg1ecAgxfZPR50=' 'unsafe-inline' 'strict-dynamic'; object-src 'none'; base-uri 'none'; report-uri https://csp.withgoogle.com/csp/chromium-website/
content-type: text/html; charset=utf-8
etag: "5deb1a1690ee9a6536599da49f052f41414a2419acbd632d352e067efaeaeb71"
last-modified: Fri, 10 Oct 2025 02:31:02 GMT
strict-transport-security: max-age=31556926
accept-ranges: bytes
date: Sat, 11 Oct 2025 07:21:26 GMT
x-served-by: cache-bom-vanm7210095-BOM
x-cache: HIT
x-cache-hits: 0
x-timer: S1760167287.833318,VS0,VE1
vary: x-fh-requested-host, accept-encoding
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400
content-length: 2784
Sync

The Chromium Projects
Sync
Docs
ClientTagBasedDataTypeProcessor
Protection against data override by legacy clients
Unified Sync And Storage proposal (Outdated, kept for historical purposes)
What
A library that implements the client side of our sync protocol, as well as the Google server-side infrastructure to serve Google Chrome users and synchronize data to their Google Account.
The goals for this protocol include:
- Store/sync different kinds of "data types", e.g. bookmarks.
- Allow the user to connect to the server from multiple clients simultaneously.
- Changes the user makes in one client should be immediately reflected in other clients connected to the server.
- Allow the user to make changes to their data even if the server is unreachable, such that changes made while offline are synced with the server at a later time.
- Resolve data conflicts on the client without prompting the user.
Where
Most sync code (except for UI and integration tests) lives in
components/sync/
. Some of the more important subfolders are:
base
: Various "util" stuff; doesn't depend on any other sync folders.engine
: The core sync "engine", i.e. the parts that run on the sync sequence, talk to the server, and propagate changes to and from the various data types.invalidations
: The subsystem responsible for handling invalidations, i.e. messages from the server informing the client that new data is available. Implemented as a layer on top of FCM.model
: Contains the APIs that each data type needs to implement, and sync classes that live on the model sequence.protocol
: Contains the.proto
definitions and some related utils.service
: Contains the centralSyncService
, and most other sync stuff that runs on the UI thread.test
: Various test doubles and utils.
Dependencies / layering:
service
is the highest layer; it depends on everything below, and most external code depends on this, e.g. to query the sync status.model
is the layer below; all data type implementations depend on this.engine
is even lower and mostly internal - external code should generally not (directly) depend on this.protocol
is depended on by most other sync code, and by all data type implementations.base
is the lowest layer; everything else may depend on this.
Additionally, there is components/browser_sync/
, which pulls together dependencies from most data types in other components/
subfolders, and
injects them into core sync in the form of DataTypeController
s.