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/integration-checklist/
content-type: text/plain; charset=utf-8
accept-ranges: bytes
date: Sat, 11 Oct 2025 18:28:28 GMT
x-served-by: cache-bom-vanm7210095-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1760207308.275228,VS0,VE118
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: 71
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: "3a30883701fec7d35074b869446981dc487e7456e88a023991b09e58d0fcdacf"
last-modified: Fri, 10 Oct 2025 02:31:02 GMT
strict-transport-security: max-age=31556926
accept-ranges: bytes
date: Sat, 11 Oct 2025 18:28:28 GMT
x-served-by: cache-bom-vanm7210095-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1760207308.406817,VS0,VE186
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: 2972
Sync Integration Checklist

The Chromium Projects
Sync Integration Checklist
If you want to integrate with our infrastructure, please follow these steps:
- Before starting any integration work, please reach out to us at chrome-sync-dev@google.com and share your plans / design doc! The Chrome Sync team will assign you a "champion" (primary contact person) to review your designs and code. If you're a Googler, please also file a bug via go/create-new-sync-data-type-bug
- Please go over Chrome Sync's Model API to get a better understanding of how sync works.
- [NEW!] For CL #1, run components/sync/bootstrap_new_data_type.sh. Given the data type name, this will generate a CL with a scaffold of the implementation and TODOs for what to do on the N-th CL. The next steps are listed below for completeness. After submitting this CL, there will be some server-side steps required, which should be discussed in the bug created above.
- Fill out the *_specifics.proto file generated by the script in CL #1.
- If your type should be controlled by an existing toggle in sync settings,
add it to
GetUserSelectableTypeInfo
. Otherwise, if the new type should have its own toggle, add an entry to theUserSelectableType
enum, add a preference for tracking whether the type is enabled, and map the type to the pref inGetPrefNameForType
. Add the toggle UI for each supported platform: - Register a
DataTypeController
inCommonControllerBuilder
or, for non-iOS platforms,ChromeSyncControllerBuilder
. Use a trivial implementation ofDataTypeSyncBridge
for now.- Add the sync team as co-owners of the bridge (and any associated
helpers, if appropriate), by adding something like
per-file *sync_bridge*=file://components/sync/OWNERS
to your OWNERS file. This allows us to do refactorings that touch all the bridges without needing reviews from tens of owners.
- Add the sync team as co-owners of the bridge (and any associated
helpers, if appropriate), by adding something like
- Over multiple CLs, implement the actual data type logic in the bridge.
- Refer to Implementing DataTypeSyncBridge for details on the changes required.
- Write some integration tests.
- While rolling out your new data type, keep the Sync team in the loop! E.g. CC your assigned champion on all Finch CLs.
- If you're a Googler, please fill out go/sync-integration-feedback.