---
title: "Sync PDF annotations easily on iOS"
canonical_url: "https://www.nutrient.io/guides/ios/pspdfkit-instant/syncing/"
md_url: "https://www.nutrient.io/guides/ios/pspdfkit-instant/syncing.md"
last_updated: "2026-06-18T03:06:48.927Z"
description: "Learn how to efficiently sync PDF annotations on iOS using Instant, with options for real-time and manual synchronization."
---

# Streamline PDF annotation syncing on iOS

By default, Nutrient Instant automatically synchronizes annotations with your Document Engine instance in real time. This is configurable, and you can instead choose for it to sync manually when your app requests it.

Using a network, especially a cellular network, is one of the most energy-intensive tasks on mobile devices. While we do our best to minimize the energy impact of Instant, it can be reduced further by disabling listening for changes from the server or by syncing less often after local changes are made.

Syncing after making local changes and listening for server changes can be configured separately. However, syncing always sends all local changes and fetches all changes from the server. It isn’t possible to fetch remote changes without pushing local changes or to push local changes without fetching remote changes.

## Automatic syncing

By default, when you show a document managed by Instant in an [`InstantViewController`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller), real-time syncing of annotations is fully automatic: Instant will push local changes to the server as they happen and listen for changes from the server.
If you don’t show the document in an [`InstantPdfFragment`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.instant.ui/-instant-pdf-fragment/index.html)an [`InstantViewController`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller), you can enable listening for changes using [`startListeningForServerChanges()`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/startlisteningforserverchanges()) and [`stopListeningForServerChanges()`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/stoplisteningforserverchanges()) on the [`InstantDocumentDescriptor`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor).

Instant uses the network efficiently by coalescing changes with a one-second delay. You can reduce energy consumption at the cost of less immediate syncing by increasing the [`delayForSyncingLocalChanges`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/delayforsyncinglocalchanges) property of a document descriptor. Unless syncing after local changes is disabled entirely (see below), if the app enters the background and there are local changes that haven’t been synced, Instant will immediately attempt to sync.

## Disabling listening for server changes

If your app doesn’t require real-time syncing, it may be better to manually fetch changes from the server to reduce energy consumption — for example, when the view showing the document appears, or with a button the user can tap.

If you show the document in  a native module an [`InstantViewController`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller), you can disable listening by using the [`shouldListenForServerChangesWhenVisible`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller/shouldlistenforserverchangeswhenvisible) property. Then, sync manually whenever you want to by calling [`syncChanges(_:)`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller/syncchanges(_:)). This method is marked with `IBAction` for easy setup in the Interface Builder.
If you use a custom view controller or something else, you don’t have to do anything: Just sync manually when required by calling [`sync()`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/sync()) on the document descriptor.

## Disabling syncing after local changes

In addition to disabling listening for changes from the server (see above), you can disable syncing after local changes are made by setting a document descriptor’s [`delayForSyncingLocalChanges`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/delayforsyncinglocalchanges) property to the special [`InstantSyncingLocalChangesDisabled`](https://www.nutrient.io/api/ios/documentation/instant/instantsyncinglocalchangesdisabled) constant. This means that Instant will never sync annotations with the server unless your app requests this by calling [`sync()`](https://www.nutrient.io/api/ios/documentation/instant/instantdocumentdescriptor/sync()) (on the document descriptor) or [`syncChanges(_:)`](https://www.nutrient.io/api/ios/documentation/instant/instantviewcontroller/syncchanges(_:)) (on the Instant view controller) — these do the same thing, so use whichever is more convenient for you.

It’s possible to configure Instant to not sync after local changes are made but to listen for changes. However, this combination makes little sense and isn’t recommended, as the local changes would be pushed at seemingly random times when changes are received from the server.
---

## Related pages

- [Client authentication in Nutrient Instant](/guides/ios/instant-synchronization/authentication.md)
- [Nutrient Instant and iOS data protection](/guides/ios/pspdfkit-instant/data-protection.md)
- [Adding comments to PDFs on iOS](/guides/ios/comments/introduction-to-instant-comments.md)
- [Frequently asked questions](/guides/ios/instant-synchronization/faq.md)
- [Nutrient Instant and the document state](/guides/ios/pspdfkit-instant/instant-document-state.md)
- [Integrating real-time collaboration into your iOS application](/guides/ios/pspdfkit-instant/getting-started.md)
- [PDF collaboration library for iOS](/guides/ios/instant-synchronization.md)
- [Create PDF annotation layers on iOS](/guides/ios/pspdfkit-instant/instant-layers.md)
- [Seamless offline PDF annotation and synchronization](/guides/ios/pspdfkit-instant/offline-support.md)
- [Nutrient Instant usage](/guides/ios/pspdfkit-instant/usage.md)

