Skip To Content ArcGIS for Developers Sign In Dashboard

Sync offline edits

Your users can edit offline in a services pattern and later sync their edits back to a feature service when connected. Syncing offline edits requires that you've created a geodatabase using a sync-enabled feature service from ArcGIS for Server, ArcGIS Online, or Portal for ArcGIS, as described in Create an offline map. After users have made edits and are ready to sync their local copy of the data with the service, use GeodatabaseSyncTask to sync with the feature service. Syncing can be performed even if no edits have been made locally, to pull changes from the feature service into the local copy of the data.

To synchronize edits, do the following:

  • Set up a signal handler to report on the progress while the synchronization happens.
  • Create or obtain sync parameters for the synchronization task.
  • Create a GeodatabaseSyncTask instance.
  • Call the syncGeodatabase method on the GeodatabaseSyncTask.
In a sync operation, edits most recently synced to the service will overwrite previously synced edits, regardless of time of edits.

For descriptions of errors that can arise when syncing offline edits, see Error handling with sync.

Register a geodatabase in a pre-planned workflow

In a services pattern workflow known as a pre-planned workflow, you generate the geodatabase once and load copies of it onto each user's device. If you've generated the geodatabase on the user's device with GeodatabaseSyncTask, you don't need to register a geodatabase.

In the pre-planned workflow, you use the registerGeodatabase() method to register each geodatabase copy (on each device) with the feature service you used to generate the original geodatabase. Registering in this way ensures each device receives the correct updates during sync operations.


  • Once you call unregister on a geodatabase, you cannot re-register the same geodatabase.
  • If the original geodatabase is ever unregistered, no additional clients can use that copy to register.

For a list of benefits of this workflow, see Register a geodatabase in a pre-planned workflow in "Create an offline map."

Code sample

The following sample shows how to sync your offline edits back to a feature service.

Geodatabase {
        id: geodatabase
        path: PATH_TO_GDB
        syncGeodatabaseParameters: syncGeodatabaseParameters
    SyncGeodatabaseParameters {
        id: syncGeodatabaseParameters
        syncDirection: Enums.SyncDirectionBidirectional
    GeodatabaseSyncTask {
        id: geodatabaseSyncTask
        Component.onCompleted : {
            //Call the sync operation
            geodatabaseSyncTask.syncGeodatabase(geodatabase.syncGeodatabaseParameters, geodatabase);
        onSyncStatusChanged: {
            if (syncStatus === Enums.SyncStatusCompleted)
                console.log("Sync completed")
                var errorString = "";
                for(var key in syncErrors)
                    for (var j = 0; j < syncErrors[key].featureEditErrors.length; j++)
                        var error = syncErrors[key].featureEditErrors[j];
                        errorString += "\nLayer Id: " + error.layerId + "\nObject Id: " + error.objectId + "\nGlobal Id: " + error.globalId + "\nEdit operation: " + error.editOperationString + "\nError: " + error.error.description;
            if (syncStatus === Enums.SyncStatusErrored)
                console.log ("Error:" + syncGeodatabaseError.message + " Code="  + syncGeodatabaseError.code.toString() + " "  + syncGeodatabaseError.details);

Related topics