Skip to content

The Editing settings for a hosted feature layer (item) allow you to control whether client applications can execute editing operations on a feature layer in a feature service. They also determine whether operational changes are logged (Change Tracking) and attributed (Editor Tracking).

You use the editing settings to:

  • Enable users or groups of users to create, update, and delete features in a service.
  • Keep a log of changes made to the features in a service.
  • Synchronize edits with offline workflows.
Hosted feature layer item page showing editing settings
Hosted feature layer item page in a portal showing feature layer settings.

What are editing and synchronization settings?

The editing and synchronization settings allow you to enable editing, determine the type of editing allowed, and decide who can make the edits. You can only change these settings if you are the owner of the feature layer in a feature service or an administrator.

The table below describes the editing and synchronization settings available.

SettingDescription
Enable editingControls whether the users who have access to the layer can Add, Delete, or Update features. To perform the editing operations, users must be members of a default or custom role that has the privilege to edit features.
Keep track of changes to the data (add, update, delete features)Monitors changes made to the spatial and nonspatial attributes of a service by recording the changes in a system change log.
Keep track of who edited the data (editor name, date and time)Adds additional fields that will be automatically populated with the user name of the editor and a date of when the feature was created or updated.
Enable Sync (required for offline use and collaboration)Allows other users to take the feature layer offline and work while disconnected from the network.

Once editing has been enabled, additional types of edits that can be performed are provided. The table below describes each of the capabilities:

SettingDescription
Who can edit features?Read-only text displaying the current sharing level and how to change the setting.
What kind of editing is allowed?Options that control what type of edits are enabled for users with editing privileges.
Add : Allow editors to add new features.
Delete: Allows editors to delete features.
Update: Allows editors to update feature geometry and attributes or only update the attribute values.
What features can editors see?Options that control what features users with edit privileges can see:
- (Default) Editors can edit all features.
- Editors can only see features they've created (requires editor tracking to be enabled).
- Editors can't see any features, even those they add.
What features can editors edit?- (Default) Editors can edit all features.
- Editors can only edit features that they create (requires editor tracking to be enabled)
What access do anonymous editors (not signed in) have?This setting is only applicable if the layer is shared with everyone (public). If the layer is not public, anonymous users cannot access it.
- The same as signed in editors.
- Only add new features, if allowed above (requires editor tracking).

Anonymous feature editing can also be performed via an application API key when the layer is public and editor tracking (author fields) is disabled. Without editor tracking, no per-user identity is recorded; enable editor tracking or restrict edit privileges if auditability is required.
Who can manage edits?Read-only text listing the current users and roles that can manage this layer's edit settings.

Tracking types

ArcGIS provides three related but distinct mechanisms that support editing, auditing, and offline workflows. Understanding their roles helps you choose only what you need:

CapabilityPurposeKey OutputsTypical Use CasesStorage Impact
Change TrackingRecords create, update, and delete operations in a system-maintained change log for each layer.Internal change log generations (serverGen), enables differential extraction.Offline sync, collaboration, detecting deltas for replication, calculating increments for data distribution.Grows over time; must be managed/purged to control size.
Editor TrackingAutomatically populates attribution fields (e.g., Creator, CreationDate, Editor, EditDate) and supports ownership-based access controls.Feature-level fields showing who created/last edited and when.Restrict editors to their own features, auditing who changed a record, anonymous vs signed-in attribution.Minimal—only added fields plus their values.
Synchronization (Sync)Allows clients to take data offline and later push edits; relies on change tracking under the hood.Replica versions, sync generations, optional attachments transfer.Mobile/offline apps, disconnected field data collection, partner collaboration.Additional metadata for replicas and change log growth.

Guidelines:

  • Enable Editor Tracking if you need ownership-based restrictions or audit trails of who edited data.
  • Enable Change Tracking if you plan to use Sync or need incremental change extraction for replication.
  • Enable Sync only when you have offline/disconnected workflows; it adds overhead and change log growth.
  • You can enable Editor Tracking without Sync; Sync implicitly depends on Change Tracking.
  • Review change log size periodically to avoid unnecessary storage charges.

Decision flow:

  • Need per-user ownership or audit? → Enable Editor Tracking.
  • Need offline/disconnected workflows? → Enable Sync (implies Change Tracking).
  • Need incremental replication/delta exports but not offline? → Enable Change Tracking only.
  • No ownership requirements and no offline or replication needs? → Keep Editing minimal (e.g., only Update or Create as required) and omit tracking features.

How to manage editing settings

The steps to manage service editing settings are:

  1. Sign in to your portal:

  2. Find the item.
  3. Use the item page to change the editing settings.

Code examples

You can use data management tools to update the editing capabilities of a hosted feature layer (item) or you can use the ArcGIS REST APIs. The following examples illustrate how to programmatically get the properties and then modify the edit capabilities of a hosted feature layer (item).

Get service properties

The example below uses a Feature Service URL to get the current properties of a feature service layer.

Request

Use dark colors for code blocksCopy
1
2
3
4
POST https://{host}/rest/services/{service_name}/FeatureServer HTTP/1.1

&f=json
&token={access_token}

Response

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
    "currentVersion": 11.1,
    "serviceItemId": "{serviceItemId}",
    "hasChangeTrackingEnabledViews": true,
    "serviceDescription": "",
    "hasVersionedData": false,
    "supportsDisconnectedEditing": false,
    "hasStaticData": false,
    "hasSharedDomains": false,
    "maxRecordCount": 2000,
    "supportedQueryFormats": "JSON",
    "supportsVCSProjection": false,
    "supportedExportFormats": "csv,shapefile,sqlite,geoPackage,filegdb,featureCollection,geojson,excel",
    "capabilities": "Query,ChangeTracking",
    "description": "",
    "copyrightText": "",
    "spatialReference": {
        "wkid": 102100,
        "latestWkid": 3857
    },
    "initialExtent": {
        "xmin": -13240129.679701095,
        "ymin": 3994281.9887753138,
        "xmax": -13106722.92583799,
        "ymax": 4101417.5063218847,
        "spatialReference": {
            "wkid": 102100,
            "latestWkid": 3857
        }
    },
    "fullExtent": {
        "xmin": -13240129.679701095,
        "ymin": 3994281.9887753138,
        "xmax": -13106722.92583799,
        "ymax": 4101417.5063218847,
        "spatialReference": {
            "wkid": 102100,
            "latestWkid": 3857
        }
    },
    "allowGeometryUpdates": true,
    "units": "esriMeters",
    "supportsAppend": true,
    "supportsSharedDomains": true,
    "supportsWebHooks": true,
    "supportsTemporalLayers": true,
    "layerOverridesEnabled": true,
    "size": 319488,
    "syncEnabled": false,
    "extractChangesCapabilities": {
        "supportsReturnIdsOnly": true,
        "supportsReturnExtentOnly": true,
        "supportsReturnAttachments": true,
        "supportsLayerQueries": true,
        "supportsGeometry": true,
        "supportsFeatureReturn": true,
        "supportsReturnHasGeometryUpdates": false,
        "supportsReturnDeletedFeatures": true,
        "supportsServerGens": true,
        "supportsFieldsToCompare": true
    },
    "supportsApplyEditsWithGlobalIds": true,
    "supportsReturnDeleteResults": true,
    "supportsLayerOverrides": true,
    "supportsTilesAndBasicQueriesMode": true,
    "supportsQueryContingentValues": true,
    "supportedContingentValuesFormats": "JSON, PBF",
    "supportsContingentValuesJson": 2,
    "advancedEditingCapabilities": {
        "supportsSplit": false,
        "supportsReturnServiceEditsInSourceSR": false,
        "supportsAsyncApplyEdits": true,
        "supportsReturnEditResults": true,
        "supportsApplyEditsbyUploadID": true,
        "supportedApplyEditsUploadIDFormats": "JSON"
    },
    "editorTrackingInfo": {
        "enableEditorTracking": false,
        "enableOwnershipAccessControl": false,
        "allowOthersToQuery": true,
        "allowOthersToUpdate": true,
        "allowOthersToDelete": false,
        "allowAnonymousToQuery": true,
        "allowAnonymousToUpdate": true,
        "allowAnonymousToDelete": true
    },
    "changeTrackingInfo": {
        "lastSyncDate": 1603131158295,
        "layerServerGens": [
            {
                "id": 0,
                "minServerGen": 318897,
                "serverGen": 649144
            }
        ]
    },
    "xssPreventionInfo": {
        "xssPreventionEnabled": true,
        "xssPreventionRule": "InputOnly",
        "xssInputRule": "rejectInvalid"
    },
    "layers": [{
        "id": 0,
        "name": "Trailheads",
        "parentLayerId": -1,
        "defaultVisibility": true,
        "subLayerIds": null,
        "minScale": 2311163,
        "maxScale": 0,
        "type": "Feature Layer",
        "geometryType": "esriGeometryPoint"
    }],
    "tables": []
}

Curl request

Use dark colors for code blocksCopy
1
2
3
curl -X POST "https://{host}/rest/services/{service_name}/FeatureServer" \
    -d f=json \
    -d token={access_token}

Set edit capabilities

The example below uses the updateDefinition admin operation to modify the current editing settings. You can pass in the types of editing you would like to enable using the capabilities parameter.

Request

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST https://{host}/rest/admin/services/{service_name}/FeatureServer/updateDefinition HTTP/1.1

f=json
&token={access_token}
&updateDefinition={
    "hasStaticData": false,
    "capabilities": "Query,Editing,Create,Update,Delete",
    "layerOverridesEnabled": true,
    "editorTrackingInfo": {
        "enableEditorTracking": false,
        "enableOwnershipAccessControl": false,
        "allowOthersToUpdate": true,
        "allowOthersToQuery": true,
        "allowAnonymousToQuery": true,
        "allowAnonymousToDelete": true
    }
}

Response (JSON)

Use dark colors for code blocksCopy
1
{"success":true}

Curl request (enable editing capabilities)

Use dark colors for code blocksCopy
1
2
3
4
curl -X POST "https://{host}/rest/admin/services/{service_name}/FeatureServer/updateDefinition" \
    -d f=json \
    -d token={access_token} \
    -d 'updateDefinition={"hasStaticData":false,"capabilities":"Query,Editing,Create,Update,Delete","layerOverridesEnabled":true,"editorTrackingInfo":{"enableEditorTracking":false,"enableOwnershipAccessControl":false,"allowOthersToUpdate":true,"allowOthersToQuery":true,"allowAnonymousToQuery":true,"allowAnonymousToDelete":true}}'

Enable sync and editor tracking

The following example enables Sync, Change Tracking, and Editor Tracking together. Sync depends on change tracking to compute deltas. Ownership access control is enabled so only creators can modify their own features (adjust the allowOthers* flags as needed). This operation is typically sent to the service root; if targeting a specific layer use .../FeatureServer/0/updateDefinition.

Request

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
POST https://{host}/rest/admin/services/{service_name}/FeatureServer/updateDefinition HTTP/1.1

f=json
&token={access_token}
&updateDefinition={
    "hasStaticData": false,
    "syncEnabled": true,
    "capabilities": "Query,ChangeTracking,Editing,Create,Update,Delete,Sync",
    "editorTrackingInfo": {
        "enableEditorTracking": true,
        "enableOwnershipAccessControl": true,
        "allowOthersToQuery": true,
        "allowOthersToUpdate": false,
        "allowOthersToDelete": false,
        "allowAnonymousToQuery": true,
        "allowAnonymousToUpdate": false,
        "allowAnonymousToDelete": false
    }
}

Response (JSON)

Use dark colors for code blocksCopy
1
{"success":true}

Curl request (enable sync + editor tracking)

Use dark colors for code blocksCopy
1
2
3
4
curl -X POST "https://{host}/rest/admin/services/{service_name}/FeatureServer/updateDefinition" \
    -d f=json \
    -d token={access_token} \
    -d 'updateDefinition={"hasStaticData":false,"syncEnabled":true,"capabilities":"Query,ChangeTracking,Editing,Create,Update,Delete,Sync","editorTrackingInfo":{"enableEditorTracking":true,"enableOwnershipAccessControl":true,"allowOthersToQuery":true,"allowOthersToUpdate":false,"allowOthersToDelete":false,"allowAnonymousToQuery":true,"allowAnonymousToUpdate":false,"allowAnonymousToDelete":false}}'

Tutorials

Workflows

Services

API support

Use data management tools or Client APIs to create, manage, and access data services. The table below outlines the level of support for each API.

CreateManageAccess
ArcGIS Maps SDK for JavaScript1
ArcGIS Maps SDK for Kotlin1
ArcGIS Maps SDK for Swift1
ArcGIS Maps SDK for Flutter1
ArcGIS Maps SDK for Java1
ArcGIS Maps SDK for .NET1
ArcGIS Maps SDK for Qt1
ArcGIS API for Python
ArcGIS REST JS
Leaflet2
MapLibre GL JS23
OpenLayers23
CesiumJS23
Full supportPartial supportNo support
  • 1. Use portal class and direct REST API requests
  • 2. Access via ArcGIS REST JS
  • 3. Requires manually setting styles for renderers

Tools

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.