<!--
{
  "documentType" : "article",
  "framework" : "FileProvider",
  "identifier" : "/documentation/FileProvider/tracking-your-file-provider-s-changes",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Tracking Your File Provider’s Changes"
}
-->

# Tracking Your File Provider’s Changes

Create an enumerator to track changes to your file provider’s content.

## Discussion

While an enumerator is active, it also tracks any changes to its contents. The system only tracks changes to a document or folder while it has an active enumerator for that item (for example, while a document is open or a folder is being browsed).

> Note:
> The system always tracks changes to the working set. If it doesn’t have an active enumerator for the working set, it creates a new one.

![The flow of information between your File Provider and the system. ](images/com.apple.fileprovider/media-2910269@2x.png)

When your file provider app or extension identifies a change to its content:

- Call the [`NSFileProviderManager`](/documentation/FileProvider/NSFileProviderManager) class’s [`signalEnumerator(for:completionHandler:)`](/documentation/FileProvider/NSFileProviderManager/signalEnumerator(for:completionHandler:)) method to notify the system of the change. Pass the item’s identifier as the `containerItemIdentifier` property.
- If the change affects the working set, call [`signalEnumerator(for:completionHandler:)`](/documentation/FileProvider/NSFileProviderManager/signalEnumerator(for:completionHandler:)) a second time. Pass the [`workingSet`](/documentation/FileProvider/NSFileProviderItemIdentifier/workingSet) constant as the `containerItemIdentifier` property. This tells the system to update the working set.

After the system is alerted to the change, it calls [`enumerateChanges(for:from:)`](/documentation/FileProvider/NSFileProviderEnumerator/enumerateChanges(for:from:)) on any affected, active enumerations and updates the browser’s user interface as needed. This method is asynchronous. When it’s called, the enumerator gathers information about the items (perhaps from a remote server) in the background, and returns the results to the specified observer (an object that adopts the [`NSFileProviderChangeObserver`](/documentation/FileProvider/NSFileProviderChangeObserver) protocol).

## Topics

### Tracking Document Changes

[Tracking Changes to Documents](/documentation/FileProvider/tracking-changes-to-documents)

Track and report changes to open documents.

### Signaling Changes with Push Notifications

[Using push notifications to signal changes](/documentation/FileProvider/using-push-notifications-to-signal-changes)

Send push notifications to a device to signal changes from your server.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)