---
title: Replicated File Provider extension
framework: fileprovider
role: collectionGroup
role_heading: API Collection
path: fileprovider/replicated-file-provider-extension
---

# Replicated File Provider extension

Build a File Provider extension that syncs the local copies of your files with your remote storage.

## Overview

Overview When creating a replicated File Provider extension, the system takes responsibility for managing and storing the local copies of your documents and folders. Your extension syncs data between the local copy and the remote storage, providing the local system with the metadata and contents of the items in your remote storage. It also alerts the system to any remote changes to those items and uploads any local changes back to the remote storage. For more information, see Synchronizing the File Provider Extension. At a minimum, the File Provider extension needs to perform the following: Adopt both the NSFileProviderReplicatedExtension and the NSFileProviderEnumerating protocols. You can add additional features by implementing the other protocols listed in the File Provider protocols listed below. Implement an object that adopts the NSFileProviderEnumerator protocol to enumerate the items from your remote storage when the system calls your enumerator(for:request:) method. Implement a class that adopts the NSFileProviderItemVersion protocol to represent the items (directories and files) enumerated by your file provider. note: The system uses two different enumerators. The first lets the system enumerate items from your remote storage. The second lets your app enumerate the items stored locally by the system. You must implement the first enumerator, returning it when the system calls your enumerator(for:request:) method. The system provides the second enumerator when you call methods like the NSFileProviderManager class’s enumeratorForMaterializedItems() method. Your File Provider extension can add custom actions to the file browser’s context menu using the File Provider UI framework. You can also define custom services to communicate with the host app using NSFileProviderService. Use these interfaces to add features that aren’t provided by the base API.

## Topics

### Essentials

- [Synchronizing the File Provider Extension](fileprovider/synchronizing-the-file-provider-extension.md)
- [Synchronizing files using file provider extensions](fileprovider/synchronizing-files-using-file-provider-extensions.md)
- [Setting the Finder Sidebar Icon](fileprovider/setting-the-finder-sidebar-icon.md)

### File Provider protocols

- [NSFileProviderReplicatedExtension](fileprovider/nsfileproviderreplicatedextension.md)
- [NSFileProviderEnumerating](fileprovider/nsfileproviderenumerating.md)
- [NSFileProviderIncrementalContentFetching](fileprovider/nsfileproviderincrementalcontentfetching.md)
- [NSFileProviderPartialContentFetching](fileprovider/nsfileproviderpartialcontentfetching.md)
- [NSFileProviderServicing](fileprovider/nsfileproviderservicing.md)
- [NSFileProviderCustomAction](fileprovider/nsfileprovidercustomaction.md)
- [NSFileProviderExtensionActionIdentifier](fileprovider/nsfileproviderextensionactionidentifier.md)
- [NSFileProviderThumbnailing](fileprovider/nsfileproviderthumbnailing.md)
- [NSFileProviderPendingSetEnumerator](fileprovider/nsfileproviderpendingsetenumerator.md)

### Items and metadata

- [NSFileProviderItemFields](fileprovider/nsfileprovideritemfields.md)
- [NSFileProviderItemVersion](fileprovider/nsfileprovideritemversion.md)
- [NSFileProviderRequest](fileprovider/nsfileproviderrequest.md)
- [NSFileProviderItemDecorating](fileprovider/nsfileprovideritemdecorating.md)
- [NSFileProviderItemDecorationIdentifier](fileprovider/nsfileprovideritemdecorationidentifier.md)

### Domains

- [NSFileProviderDomainVersion](fileprovider/nsfileproviderdomainversion.md)
- [NSFileProviderDomainState](fileprovider/nsfileproviderdomainstate.md)

### Testing protocols

- [NSFileProviderTestingChildrenEnumeration](fileprovider/nsfileprovidertestingchildrenenumeration.md)
- [NSFileProviderTestingCollisionResolution](fileprovider/nsfileprovidertestingcollisionresolution.md)
- [NSFileProviderTestingContentFetch](fileprovider/nsfileprovidertestingcontentfetch.md)
- [NSFileProviderTestingCreation](fileprovider/nsfileprovidertestingcreation.md)
- [NSFileProviderTestingDeletion](fileprovider/nsfileprovidertestingdeletion.md)
- [NSFileProviderTestingIngestion](fileprovider/nsfileprovidertestingingestion.md)
- [NSFileProviderTestingLookup](fileprovider/nsfileprovidertestinglookup.md)
- [NSFileProviderTestingModification](fileprovider/nsfileprovidertestingmodification.md)
- [NSFileProviderTestingOperation](fileprovider/nsfileprovidertestingoperation.md)
- [NSFileProviderUserInteractionSuppressing](fileprovider/nsfileprovideruserinteractionsuppressing.md)
- [NSFileProviderTestingOperationSide](fileprovider/nsfileprovidertestingoperationside.md)
- [NSFileProviderTestingOperationType](fileprovider/nsfileprovidertestingoperationtype.md)
- [com.apple.developer.fileprovider.testing-mode](bundleresources/entitlements/com.apple.developer.fileprovider.testing-mode.md)

### Information property list keys

- [NSDownloadsUbiquitousContents](bundleresources/information-property-list/nsdownloadsubiquitouscontents.md)
- [com.apple.developer.fileprovider.testing-mode](bundleresources/entitlements/com.apple.developer.fileprovider.testing-mode.md)
- [CFBundleSymbolName](bundleresources/information-property-list/cfbundleicons/cfbundleprimaryicon/cfbundlesymbolname.md)

## See Also

### Extension types

- [Nonreplicated File Provider extension](fileprovider/nonreplicated-file-provider-extension.md)
