---
title: "iOS PSPDFKit 8 migration guide"
canonical_url: "https://www.nutrient.io/guides/ios/migration-guides/pspdfkit-8-migration-guide/"
md_url: "https://www.nutrient.io/guides/ios/migration-guides/pspdfkit-8-migration-guide.md"
last_updated: "2026-06-19T09:21:00.285Z"
description: "Update your iOS project from PSPDFKit 7.x to 8 with ease. This step-by-step guide ensures a smooth transition and access to new features."
---

# PSPDFKit 8 migration guide for iOS developers

This guide covers updating an iOS project from PSPDFKit&nbsp;7.x to PSPDFKit&nbsp;8. Despite the major version change, the version 8 update should be relatively straightforward, so we encourage you to update as soon as possible, in order to take advantage of future new features and fixes.

PSPDFKit 8.0.0 for iOS fully supports iOS 10, 11, and 12. iOS 10 support will be removed later during the PSPDFKit 8 lifecycle. Xcode 10 or later is required to use this version of the SDK. Learn more in our [version support](https://www.nutrient.io/../../announcements/version-support) guide.

## Sharing Architecture Changes

Up until now, invoking the share action in PSPDFKit directly presented a `UIActivityViewController`. We then had to identify the activity that was selected from the share sheet to see if we could inject our customization logic. This allowed the user to decide if they wanted to embed, flatten, or ignore annotations, along with other customization options.

One major downside this approach had is that we couldn’t offer customization options for every item in the share sheet, which resulted in a less than optimal experience: Sharing a document to `Mail.app` would let the user decide whether or not they wanted to embed or flatten the annotations into the shared document, but sharing to WhatsApp or Messenger wouldn’t.

In PSPDFKit 8 for iOS, the way documents are shared was revamped to offer a significantly improved experience that allows the user to pick their desired sharing options while being flexible enough to offer customization options that allow developers to adjust the experience to their liking.

As a consequence, the API related to sharing changed a bit:

- `PSPDFDocumentSharingCoordinator` and its subclasses (Mail, Messages, OpenIn) were removed.

- All sharing-related properties in `PSPDFConfiguration` were removed. They were replaced with a new [`sharingConfigurations`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfconfiguration/sharingconfigurations) property that holds an array of [`PSPDFDocumentSharingConfiguration`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/documentsharingconfiguration) objects.

To learn more about the new document sharing flow and customization options, refer to our dedicated [document sharing](https://www.nutrient.io/../../miscellaneous/document-sharing) guide.

Note that, as part of this architecture revamp, a lot of code that hadn’t previously been deprecated has been removed, so you’re likely to see compilation errors if you’re upgrading from an earlier version and have been using sharing-related APIs.

As a concrete example, if you were using `PSPDFDocumentActionExecutor` before and you wish to replicate that behavior, you can do so by creating a `PSPDFNamedAction` and passing it to [`-executePDFAction:targetRect:pageIndex:animated:actionContainer:`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfviewcontroller/execute(_:targetrect:pageindex:animated:actioncontainer:)):

### SWIFT

```swift

let action = PSPDFNamedAction(namedActionType:.print)
controller.execute(action, targetRect:.zero, pageIndex: controller.pageIndex, animated: true, actionContainer: nil)

```

### OBJECTIVE-C

```objc

PSPDFNamedAction *action = [[PSPDFNamedAction alloc] initWithNamedActionType:PSPDFNamedActionTypePrint];
[controller executePDFAction:action targetRect:CGRectZero pageIndex:controller.pageIndex animated:YES actionContainer:nil];

```

The table below shows all APIs that were removed (and hadn’t been previously deprecated) as part of this change.

| Removed API                                                                                                                       | Migration Strategy                                                                                                                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PSPDFDocumentActionExecutor`                                                                                                     | The document action executor is no longer needed.                                                                                                                                                                                        |
| `-[PSPDFViewController documentActionExecutor]`                                                                                   | The document action executor is no longer needed.                                                                                                                                                                                        |
| `PSPDFActivityTypeBookmarks`                                                                                                      | Use `-[PSDPFViewController bookmarkButtonItem]` to show the bookmark view controller                                                                                                                                                     |
| `PSPDFActivityTypeSearch`                                                                                                         | Use `-[PSPDFViewController searchButtonItem]` to start a search on the document.                                                                                                                                                         |
| `PSPDFActivityTypeOutline`                                                                                                        | Use `-[PSPDFViewController outlineButtonItem]` to show the outline view controller.                                                                                                                                                      |
| `PSPDFActivityGoToPage`                                                                                                           | Create a `PSPDFNamedAction` for `PSPDFNamedActionTypeGoToPage` and use `-[PSPDFViewController executePDFAction:targetRect:pageIndex:animated:actionContainer:]`.                                                                         |
| `-[PSPDFViewController activityViewControllerWithSender:]`                                                                        | Subclass `PSPDFDocumentSharingViewController` and override `- activityViewControllerForSharingItems:sender:`.                                                                                                                            |
| `PSPDFDocumentSharingCoordinator`                                                                                                 | The sharing coordinators have been removed in favor of the new `PSPDFDocumentSharingConfiguration` strategy.                                                                                                                             |
| `PSPDFMailCoordinator`                                                                                                            | Use `+[PSPDFDocumentSharingConfiguration defaultConfigurationForDestination:]` to share documents via `PSPDFDocumentSharingViewController`.                                                                                              |
| `PSPDFMessageCoordinator`                                                                                                         | Use `+[PSPDFDocumentSharingConfiguration defaultConfigurationForDestination:]` to share documents via `PSPDFDocumentSharingViewController`.                                                                                              |
| `PSPDFOpenInCoordinator`                                                                                                          | Use `+[PSPDFDocumentSharingConfiguration defaultConfigurationForDestination:]` to share documents via `PSPDFDocumentSharingViewController`.                                                                                              |
| `PSPDFPrintCoordinator`                                                                                                           | Use `+[PSPDFDocumentSharingConfiguration defaultConfigurationForDestination:]` to share documents via `PSPDFDocumentSharingViewController`.                                                                                              |
| `PSPDFDocumentSharingOptions`                                                                                                     | Use `PSPDFDocumentSharingFileFormatOptions`, `PSPDFDocumentSharingPagesOptions`, and `PSPDFDocumentSharingAnnotationOptions` instead.                                                                                                    |
| `-[PSPDFConfiguration applicationActivities]`                                                                                     | Use `-[PSPDFDocumentSharingConfiguration applicationActivities]`.                                                                                                                                                                        |
| `-[PSPDFConfiguration excludedActivityTypes]`                                                                                     | Use `-[PSPDFDocumentSharingConfiguration excludedActivityTypes]`.                                                                                                                                                                        |
| `-[PSPDFConfiguration printSharingOptions]`                                                                                       | Modify `fileFormatOptions`, `pageSelectionOptions`, and `annotationOptions` on a `PSPDFDocumentSharingConfiguration` instance created with the print destination.                                                                        |
| `-[PSPDFConfiguration openInSharingOptions]`                                                                                      | Modify `fileFormatOptions`, `pageSelectionOptions`, and `annotationOptions` on a `PSPDFDocumentSharingConfiguration` instance created with the activity destination.                                                                     |
| `-[PSPDFConfiguration mailSharingOptions]`                                                                                        | Modify `fileFormatOptions`, `pageSelectionOptions`, and `annotationOptions` on a `PSPDFDocumentSharingConfiguration` instance created with the mail destination.                                                                         |
| `-[PSPDFConfiguration messageSharingOptions]`                                                                                     | Modify `fileFormatOptions`, `pageSelectionOptions`, and `annotationOptions` on a `PSPDFDocumentSharingConfiguration` instance created with the message destination.                                                                      |
| `-[PSPDFDocumentSharingViewControllerDelegate didFinishWithSelectedOptions:files:annotationSummary:error:]`                       | Use `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:didFinishSharingWithConfiguration:userInfo:error:]`.                                                                                                     |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewControllerDidCancel]`                                            | Use `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:didCancelSharingAtStep:withConfiguration:]`.                                                                                                             |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:shouldPrepareWithSelectedOptions:selectedPageRange:]` | Use `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:shouldProcessForSharingWithState:]`.                                                                                                                     |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:titleForOption:]`                                     | Subclass `PSPDFDocumentSharingViewController` and override `- titleForAnnotationOptions:`.                                                                                                                                               |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:subtitleForOption:]`                                  | Subclass `PSPDFDocumentSharingViewController` and override `- subtitleForAnnotationsOptions:sharingConfiguration:`.                                                                                                                      |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSharingViewController:configureCustomProcessorConfigurationOptions:]`       | Subclass `PSPDFDocumentSharingViewController` and override `- configureProcessorConfigurationOptions:`.                                                                                                                                  |
| `-[PSPDFDocumentSharingViewControllerDelegate documentSecurityOptionsForDocumentSharingViewController:]`                          | Subclass `PSPDFDocumentSharingViewController` and override `- documentSecurityOptions`.                                                                                                                                                  |
| `-[PSPDFDocumentSharingViewControllerDelegate temporaryDirectoryForDocumentSharingViewController:]`                               | Subclass `PSPDFDocumentSharingViewController` and override `- temporaryDirectoryForSharingToDestination:`.                                                                                                                               |
| `-[PSPDFDocumentSharingViewController initWithDocuments:visiblePageRange:allowedSharingOptions:]`                                 | Use `- [PSPDFDocumentSharingViewController initWithDocuments:]` and set its properties.                                                                                                                                                  |
| `-[PSPDFDocumentSharingViewController commitWithCurrentSettings]`                                                                 | Use `-[PSPDFDocumentSharingViewController commitWithCurrentConfiguration]`.                                                                                                                                                              |
| `-[PSPDFDocumentSharingViewController sharingOptions]`                                                                            | Use the `sharingConfigurations` property to get the entire list of available configurations, or use `-[PSPDFDocumentSharingViewController currentSharingConfigurationForDestination:]` to get the configuration for a given destination. |
| `-[PSPDFDocumentSharingViewController selectedOptions]`                                                                           | Use the `selectedAnnotationOption`, `selectedPageSelectionOption`, and `selectedFileFormatOption` properties.                                                                                                                            |
| `-[PSPDFDocumentSharingViewController delegateDocumentSecurityOptions]`                                                           | Subclass `PSPDFDocumentSharingViewController` and override `- documentSecurityOptions`.                                                                                                                                                  |
| `-[PSPDFDocumentSharingViewController delegateConfigureCustomProcessorConfigurationOptions:]`                                     | Subclass `PSPDFDocumentSharingViewController` and override `- configureProcessorConfigurationOptions:`.                                                                                                                                  |

## Page Coordinate System Normalization

Each page in a PDF document has its own Cartesian coordinate space, which is used to define the location of the page contents, annotations, and more. Usually, the origin of such a coordinate space is the bottom-left corner of the page. However, pages can be displayed rotated from how the coordinates are stored, and there can also be a crop box set on a page, which cuts down the displayed area. These are achieved by setting the `Rotation` or `CropBox` properties on the page dictionary in the PDF. This makes performing these changes very easy: You don’t need to change the content stream or any of the annotations on the page. Unfortunately, this can also be confusing to work with.

Versions before PSPDFKit&nbsp;8 for iOS used the raw PDF coordinate space in the API, while our newer SDKs — PSPDFKit for Android, Windows, and Web — expose a normalized coordinate system where the origin is always in a consistent corner of the onscreen page. PSPDFKit for iOS has been updated to match this: The origin of each page coordinate space is now always in the bottom-left corner of what you see.

This is a breaking change. The API has been simplified accordingly, so compiler errors should guide you in updating. We anticipate that in most cases, you can simplify your code by deleting any handling of page rotation or offset.

If you need the bounding rectangle of the page, similar to a `UIView`’s `bounds`, you may have used `PSPDFPageInfo`’s `rect` or `rotatedRect` before. Instead, create a rectangle with an origin of zero and a size equal to the page info’s `size`:

```swift

let pageRect = CGRect(origin:.zero, size: pageInfo.size)

```

If you had specific code paths for each rotation value so that something appeared consistent regardless of page rotation, then you can just keep the zero case and delete the other paths:

```swift

switch pageInfo.rotation {
case rotation0:
    // This is the only code path that needs keeping....
case rotation90:...
case rotation180:...
case rotation270:...
}

```

The normalization applies to [`PSPDFRenderDrawBlock`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfrenderdrawblock) too. The block signature can’t be changed without causing silent breaking changes. However, the page rectangle parameter now always has an origin of zero. The integer that previously passed the page rotation is no longer used and should be ignored.

The parameters of the coordinate space conversion functions have changed. [`PSPDFConvertViewPointToPDFPoint`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pspdfconvertviewpointtopdfpoint(_:_:_:)), [`PSPDFConvertPDFPointToViewPoint`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pspdfconvertpdfpointtoviewpoint(_:_:_:)), [`PSPDFConvertPDFRectToViewRect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pspdfconvertpdfrecttoviewrect(_:_:_:)), [`PSPDFConvertViewRectToPDFRect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pspdfconvertviewrecttopdfrect(_:_:_:)), [`PSPDFConvertViewLinesToPDFLines`](https://www.nutrient.io/api/ios/documentation/pspdfkit/convertviewlines(pdflines:pageinfo:viewbounds:)), [`PSPDFConvertViewLineToPDFLines`](https://www.nutrient.io/api/ios/documentation/pspdfkit/convertviewline(pdfline:pageinfo:viewbounds:)), and [`PSPDFConvertPDFLinesToViewLines`](https://www.nutrient.io/api/ios/documentation/pspdfkit/convertpdflines(viewlines:pageinfo:viewbounds:)) used to require a page rectangle and rotation. These two parameters have been replaced by `PSPDFPageInfo`. The other values were probably being obtained from a page info instance anyway. The conversion methods on `PSPDFPageView` are still preferred over these functions.

| Removed API                                                              | Migration Strategy                                                                                                                                                                                                                            |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-[PSPDFPageInfo rect]`                                                  | If you want the displayed page size, use `size`. If you want the frame of the page in the raw PDF coordinate space, use `cropBox`, and if that’s not set, fall back to `mediaBox`.                                                            |
| `-[PSPDFPageInfo rotatedRect]`                                           | Same as `rect` above. Note that `rotatedRect` could have had a non-zero origin.                                                                                                                                                               |
| `-[PSPDFPageInfo rotationTransform]`                                     | The best equivalent is `transform`, but note that the old property only considered page rotation, while the new one considers both page rotation and crop box offset.                                                                         |
| `-[PSPDFPageInfo rotation]`                                              | This has been separated into `savedRotation` and `rotationOffset`, so the exact equivalent is `(savedRotation + rotationOffset) % 360`. These properties now use the `PSPDFRotation` type to make the requirement of 90-degree steps clearer. |
| `-[PSPDFDocumentProvider setRotation:forPageAtIndex:]`                   | This has been renamed to `setRotationOffset:forPageAtIndex:`. The behavior when used on already rotated pages has changed.                                                                                                                    |
| `-[PSPDFMarkupAnnotation textOverlayAnnotationWithGlyphs:pageRotation:]` | Replaced with `-[PSPDFTextMarkupAnnotation textOverlayAnnotationWithGlyphs:]` since the page rotation is no longer required (and this class has been renamed).                                                                                |

## Render Options

More APIs expecting rendering options use `PSPDFRenderOption` instead of `NSString`, which makes expectations clearer. This reduces the need to use `rawValue` in Swift.

## Removal of Deprecated APIs

All previously deprecated APIs have been removed.

### PSPDFKitUI

| Removed API                                                                                          | Migration Strategy                                                                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `+[PSPDFNewPageConfiguration newPageConfigurationWithEmptyPageBuilder:]`                             | Use `PSPDFPageTemplate.blankTemplate` to generate a blank page configuration.                                                                                                                                                              |
| `+[PSPDFNewPageConfiguration newPageConfiguration`<wbr>`WithTiledPattern:builderBlock:]`             | Use `+newPageConfiguration`<wbr>`WithPageTemplate:builderBlock:`.                                                                                                                                                                          |
| `+[PSPDFNewPageConfiguration newPageConfiguration`<wbr>`WithDocument:sourcePageIndex:builderBlock:]` | Use `+newPageConfigurationW`<wbr>`ithPageTemplate:builderBlock:` and provide a `PSPDFPageTemplate` built with a document.                                                                                                                  |
| `-[PSPDFDocumentViewLayout pagingEnabled]`                                                           | Paging is automatically enabled if `spreadBasedZooming` is enabled.                                                                                                                                                                        |
| `-[PSPDFNoteAnnotationViewController borderColor]`                                                   | The items in the option view no longer have a border.                                                                                                                                                                                      |
| `-[PSPDFNoteAnnotationViewController beginEditing]`                                                  | Consider building a custom UI to display an annotation’s contents instead.                                                                                                                                                                 |
| `-[PSPDFNoteAnnotationViewController deleteAnnotationActionTitle]`                                   | Consider building a custom UI to display an annotation’s contents instead.                                                                                                                                                                 |
| `-[PSPDFNoteAnnotationViewController deleteOrClearAnnotationWithoutConfirmation]`                    | Consider building a custom UI to display an annotation’s contents instead.                                                                                                                                                                 |
| `-[PSPDFNoteAnnotationViewController deleteAnnotation:]`                                             | Consider building a custom UI to display an annotation’s contents instead.                                                                                                                                                                 |
| `-[PSPDFNoteAnnotationViewController shouldBeginEditModeWhenPresented]`                              | The decision of starting to edit when presented is now made automatically based on heuristics that determine how likely it is for the user to want to start editing.                                                                       |
| `-[PSPDFNoteAnnotationViewController showCopyButton]`                                                | This is not recommend because copying text by selecting it is easy.                                                                                                                                                                        |
| `-[PSPDFNoteAnnotationViewController allowEditing]`                                                  | Use `PSPDFAnnotation.isEditable` or `PSPDFConfiguration.editableAnnotationTypes` instead.                                                                                                                                                  |
| `PSPDFPageTransitionScrollPerPage`                                                                   | Use `PSPDFPageTransitionScrollPerSpread` instead, as it properly illustrates what this mode does.                                                                                                                                          |
| `-[PSPDFScrubberBar updatePageMarker]`                                                               | This method no longer updates the page index. Instead, the page index is set internally when it changes.                                                                                                                                   |
| `-[PSPDFPageView insertAnnotations:]`                                                                | This method is no longer used to insert annotations. To know when annotations are inserted, listen for `PSPDFAnnotationCreateActionDidInsertNotification` instead. To add annotations, use `- addAnnotations:options:` on `PSPDFDocument`. |
| `-[PSPDFPageLabelView updateLabelWithDocument:pageRange:]`                                           | The page label is automatically updated internally.                                                                                                                                                                                        |
| `-[PSPDFDrawView currentDrawLayer]`                                                                  | Sublayers can be accessed by querying the `UIView.layer` property.                                                                                                                                                                         |
| `-[PSPDFDrawView drawLayers]`                                                                        | Sublayers can be accessed by querying the `UIView.layer` property.                                                                                                                                                                         |
| `-[PSPDFDrawView clearAllLayers]`                                                                    | Use the `-clear` method instead.                                                                                                                                                                                                           |
| `-[PSPDFDrawView updateActionsForAnnotations:]`                                                      | Use the `- updateForAnnotations:` method instead.                                                                                                                                                                                          |
| `-[PSPDFPageView showNoteControllerForAnnotation:showKeyboard:animated:]`                            | Use `showNoteControllerForAnnotation:animated:` instead. The handling of showing the keyboard is now done automatically based on heuristics that determine how likely it is for the user to want to start editing.                         |
| `-[PSPDFPageView showSignatureControllerAtRect:withTitle:options:animated:]`                         | Use `showSignatureControllerAtRect:signatureFormElement:options:animated:` instead.                                                                                                                                                        |
| `enum PSPDFThumbnailFlowLayoutAttributesType`                                                        | Use `PSPDFDocumentViewLayoutPageMode` instead.                                                                                                                                                                                             |
| `-[PSPDFThumbnailFlowLayoutAttributes type]`                                                         | Use `pageType` instead.                                                                                                                                                                                                                    |
| `-[PSPDFThumbnailFlowLayout typeForIndexPath:usingDoublePageMode:]`                                  | The layout now uses its delegate to determine page modes.                                                                                                                                                                                  |
| `-[PSPDFThumbnailFlowLayout doublePageModeDisabled]`                                                 | The layout now uses its delegate to determine page modes.                                                                                                                                                                                  |
| `-[PSPDFThumbnailFlowLayout doublePageMode]`                                                         | The layout now uses its delegate to determine page modes.                                                                                                                                                                                  |
| `-[PSPDFThumbnailFlowLayout presentationContext]`                                                    | The layout now uses its delegate to determine page modes.                                                                                                                                                                                  |
| `-[PSPDFThumbnailFlowLayout indexPathForDoublePage:]`                                                | The layout now uses its delegate to determine page modes.                                                                                                                                                                                  |
| `-[PSPDFNewPageViewControllerDelegate newPageController:didFinishSelectingConfiguration:]`           | Use `-[PSPDFNewPageViewControllerDelegate newPageController:didFinishSelecting`<wbr>`Configuration:pageCount:]`.                                                                                                                           |
| `-[PSPDFViewControllerDelegate pdfViewControllerDidChangeControllerState:]`                          | Use `-[PSPDFViewControllerDelegate pdfViewController:`<wbr>`didChangeControllerState:error:]` instead.                                                                                                                                     |
| `-[PSPDFViewController brightnessManager]`                                                           | Use `PSPDFKitGlobal.sharedInstance.brightnessManager` instead.                                                                                                                                                                             |
| `-[PSPDFThumbnailViewController updateEmptyView]`                                                    | Use `-[PSPDFThumbnailViewController refreshLoadingView`<wbr>`WithLoadingState:]`.                                                                                                                                                          |
| `-[PSPDFThumbnailViewController updateFilter`<wbr>`AndVisibleCellsAnimated:]`                        | Use `-[PSPDFThumbnailViewController refreshResults`<wbr>`ForCurrentFilter]`.                                                                                                                                                               |
| `-[PSPDFThumbnailViewController pagesForFilter:]`                                                    | Use `-[PSPDFThumbnailViewController pagesForFilter:`<wbr>`groupingResultsBy:result:completion:]`.                                                                                                                                          |
| `-[PSPDFScreenController externalScreens`<wbr>`DisableScreenDimming]`                                | Use `PSPDFBrightnessManager.idleTimerManagement` instead.                                                                                                                                                                                  |
| `-[PSPDFSelectionState selectedGlyphs]`                                                              | This property has been removed in favor of the `selectedGlyphRange` field.                                                                                                                                                                 |
| `PSPDFBackButtonStyle`                                                                               | Use `PSPDFButtonStyle` instead.                                                                                                                                                                                                            |
| `-[PSPDFUserInterfaceView updatePageLabelFrameAnimated:]`                                            | The user interface view now uses Auto Layout to position the page label.                                                                                                                                                                   |

### PSPDFKit

| Removed API                                                                                                     | Migration Strategy                                                                                                                                  |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-[PSPDFFileDataProvider initWithFileURL:baseURL:progress:]`                                                    | The `baseURL` is no longer used. Always use an absolute `fileURL`.                                                                                  |
| `-[PSPDFFileDataProvider baseURL]`                                                                              | The `baseURL` is no longer used.                                                                                                                    |
| `-[PSPDFDiskCache jpegCompression]`                                                                             | Use `compression` instead.                                                                                                                          |
| `-[PSPDFDocumentEditor addPageAt:withConfiguration:]`                                                           | Use `-[PSPDFDocumentEditor addPagesInRange:withConfiguration:]`.                                                                                    |
| `PSPDFSignatureHashAlgorithmSHA386`                                                                             | Use `PSPDFSignatureHashAlgorithmSHA384` instead.                                                                                                    |
| `-[PSPDFSignatureStatus wasModified]`                                                                           | Use `coversEntireDocument` instead.                                                                                                                 |
| `PSPDFPageRenderer`                                                                                             | `PSPDFPageRenderer` is no longer needed.                                                                                                            |
| `-[PSPDFDocumentSecurityOptions initWithOwnerPassword:userPassword:]`                                           | Use `-initWithOwnerPassword:userPassword:error:` instead.                                                                                           |
| `-[PSPDFDocumentSecurityOptions initWithOwnerPassword:userPassword:keyLength:]`                                 | Use `initWithOwnerPassword:userPassword:keyLength:permissions:error:` instead.                                                                      |
| `-[PSPDFDocumentSecurityOptions initWithOwnerPassword:userPassword:keyLength:permissions:encryptionAlgorithm:]` | Use `-initWithOwnerPassword:userPassword:keyLength:permissions:encryptionAlgorithm:error:` instead.                                                 |
| `+[PSPDFProcessor generatePDFFromConfiguration:securityOptions:outputFileURL:progressBlock:error:]`             | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromConfiguration:securityOptions:progressBlock:error:]`                           | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromConfiguration:securityOptions:outputDataSink:progressBlock:error:]`            | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromHTMLString:outputFileURL:options:completionBlock:]`                            | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromHTMLString:options:completionBlock:]`                                          | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromURL:outputFileURL:options:completionBlock:]`                                   | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `+[PSPDFProcessor generatePDFFromURL:options:completionBlock:]`                                                 | Create a `PSPDFProcessor` instance by passing a `PSPDFProcessorConfiguration` and calling the appropriate instance methods.                         |
| `-[PSPDFDocument isJavaScriptEnabled]`                                                                          | Use `javaScriptStatus` instead.                                                                                                                     |
| `-[PSPDFPrivateKey encryptionAlgorithm]`                                                                        | Use `signatureEncryptionAlgorithm` instead.                                                                                                         |
| `-[PSPDFAnnotationStateManager toggleStampController:includeSavedAnnotations:presentationOptions:]`             | Showing saved annotations in the same view controller as stamps is no longer supported. Use `- toggleStampController:presentationOptions:` instead. |
| `PSPDFAnnotationChangedNotificationAnimatedKey`                                                                 | Use `PSPDFAnnotationOptionAnimateViewKey` instead.                                                                                                  |
| `PSPDFAnnotationOptionUserCreatedKey`                                                                           | Wrap annotation creation code invoked by your users with `PSPDFUsernameHelper` to prompt for the author name when needed.                           |
| `PSPDFAnnotationTriggerEventLooseFocus`                                                                         | Use `PSPDFAnnotationTriggerEventLoseFocus` instead.                                                                                                 |
| `-[PSPDFAnnotation rotation]`                                                                                   | Use the `rotation` properties `PSPDFStampAnnotation` and `PSPDFFreeTextAnnotation` instead.                                                         |
| `+[PSPDFAnnotation annotationFromJSONDictionary:documentProvider:error:]`                                       | `PSPDFJSONSerializing` has been removed in favor of using InstantJSON.                                                                              |
| `PSPDFJSONSerializing`                                                                                          | Use InstantJSON.                                                                                                                                    |
| `PSPDFJSONAdapter`                                                                                              | Use InstantJSON.                                                                                                                                    |
| `-[PSPDFFileAnnotation appearanceName]`                                                                         | Use `-iconName` instead.                                                                                                                            |
| `-[PSPDFSoundAnnotation initRecorderWithOptions:]`                                                              | Use `-initWithRecorderOptions:`.                                                                                                                    |
| `-[PSPDFSoundAnnotation initRecorder]`                                                                          | Use `-initWithRecorder`.                                                                                                                            |
| `PSPDFStyleManagerLastUsedKey`                                                                                  | Use `PSPDFAnnotationStyleTypeLastUsed`.                                                                                                             |
| `PSPDFStyleManagerGenericStylesKey`                                                                             | Use `PSPDFAnnotationStyleTypeGeneric`.                                                                                                              |
| `PSPDFStyleManagerColorPresetKey`                                                                               | Use `PSPDFAnnotationStyleTypeColorPreset`.                                                                                                          |
| `-[PSPDFWord initWithGlyphs:pageRotation:]`                                                                     | Use `-[PSPDFWord initWithGlyphs:frame:]` instead.                                                                                                   |
| `-[PSPDFWord initWithFrame:pageRotation:]`                                                                      | Use `-[PSPDFWord initWithGlyphs:frame:]` instead.                                                                                                   |
| `-[PSPDFWord pageRotation]`                                                                                     | The page’s rotation should be retrieved from the page rather than from its text.                                                                    |
| `-[PSPDFWord glyphs]`                                                                                           | Use `range` to get appropriate glyphs from `PSPDFTextParser`.                                                                                       |
| `-[PSPDFTextBlock pageRotation]`                                                                                | The page’s rotation should be retrieved from the page rather than from its text.                                                                    |
| `-[PSPDFTextBlock glyphs]`                                                                                      | Use `range` to get appropriate glyphs from `PSPDFTextParser`.                                                                                       |
| `-[PSPDFTextBlock initWithGlyphs:pageRotation:]`                                                                | Use `-[PSPDFTextBlock initWithGlyphs:frame:]` instead.                                                                                              |
| `-[PSPDFTextBlock initWithFrame:pageRotation:]`                                                                 | Use `-[PSPDFTextBlock initWithGlyphs:frame:]` instead.                                                                                              |
| `PSPDFMarkupAnnotation`                                                                                         | Use `PSPDFTextMarkupAnnotation` instead.                                                                                                            |
| `-[PSPDFMarkupAnnotation highlightedString]`                                                                    | Use `-[PSPDFTextMarkupAnnotation markedUpString]` instead.                                                                                          |
| `PSPDFAnnotationTypeRedact`                                                                                     | Use `PSPDFAnnotationTypeRedaction` instead.                                                                                                         |
| `PSPDFAnnotationStringRedact`                                                                                   | Use `PSPDFAnnotationStringRedaction` instead.                                                                                                       |

### Instant

| Removed API                                                                                        | Migration Strategy                                                          |
| -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `-[PSPDFInstantClientDelegate instantClient:didFinishDownloadForDocument:]`                        | Use `- instantClient:didFinishDownloadForDocumentDescriptor:`.              |
| `-[PSPDFInstantClientDelegate instantClient:didFailDownloadForDocument:error:]`                    | Use `- instantClient:documentDescriptor:didFailDownloadWithError:`.         |
| `-[PSPDFInstantClientDelegate instantClient:didFailAuthenticationForDocument:]`                    | Use `- instantClient:didFailAuthenticationForDocumentDescriptor:`.          |
| `-[PSPDFInstantClientDelegate instantClient:didFailUpdatingAuthenticationTokenForDocument:error:]` | Use `- instantClient:documentDescriptor:didFailReauthenticationWithError:`. |
| `-[PSPDFInstantClientDelegate instantClient:didUpdateAuthenticationToken:forDocument:]`            | Use `- instantClient:documentDescriptor:didFinishReauthenticationWithJWT:`. |
| `-[PSPDFInstantClientDelegate instantClient:didBeginSyncingDocument:]`                             | Use `- instantClient:didBeginSyncForDocumentDescriptor:`.                   |
| `-[PSPDFInstantClientDelegate instantClient:didChangeSyncStateForDocument:]`                       | Use `- instantClient:didChangeSyncStateForDocumentDescriptor:`.             |
| `-[PSPDFInstantClientDelegate instantClient:didFailSyncingDocument:error:]`                        | Use `- instantClient:documentDescriptor:didFailSyncWithError:`.             |
| `-[PSPDFInstantClientDelegate instantClient:didFinishSyncingDocument:]`                            | Use `- instantClient:didFinishSyncForDocumentDescriptor:`.                  |
| `-[PSPDFInstantClient initWithServerURL:]`                                                         | Migrate to `- initWithServerURL:error:`.                                    |
| `-[PSPDFInstantClient documentDescriptorWithIdentifier:error:]`                                    | Migrate to `- documentDescriptorForJWT:error:`.                             |
| `-[PSPDFInstantDocumentDescriptor updateAuthenticationToken:]`                                     | Use `- reauthenticateWithJWT:` instead.                                     |
| `-[PSPDFInstantDocumentDescriptor downloadDocumentUsingAuthenticationToken:error:]`                | Migrate to `- downloadUsingJWT:error:`.                                     |
| `PSPDFInstantAuthenticationTokenKey`                                                               | Use `PSPDFInstantJWTKey` instead.                                           |
| `PSPDFInstantDidUpdateAuthenticationTokenNotification`                                             | Use `PSPDFInstantDidFinishReauthenticationNotification` instead.            |
| `PSPDFInstantDidFailUpdatingAuthenticationTokenNotification`                                       | Use `PSPDFInstantDidFailReauthenticationNotification` instead.              |
---

## Related pages

- [14 9 Migration Guide](/guides/ios/migration-guides/14-9-migration-guide.md)
- [Pspdfkit 10 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-4-migration-guide.md)
- [14 2 Migration Guide](/guides/ios/migration-guides/14-2-migration-guide.md)
- [Migrate to electronic signatures](/guides/ios/migration-guides/migrating-to-electronic-signatures.md)
- [Pspdfkit 11 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-5-migration-guide.md)
- [Migrating From Apple Pdfkit](/guides/ios/migration-guides/migrating-from-apple-pdfkit.md)
- [Pspdfkit 10 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-migration-guide.md)
- [Migrating To Advanced Digital Signatures Api](/guides/ios/migration-guides/migrating-to-advanced-digital-signatures-api.md)
- [Pspdfkit 10 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-10-3-migration-guide.md)
- [Pspdfkit 11 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-3-migration-guide.md)
- [Pspdfkit 12 2 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-2-migration-guide.md)
- [Pspdfkit 13 Migration Guide](/guides/ios/migration-guides/pspdfkit-13-migration-guide.md)
- [Pspdfkit 13 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-13-3-migration-guide.md)
- [Pspdfkit 12 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-3-migration-guide.md)
- [Pspdfkit 12 Migration Guide](/guides/ios/migration-guides/pspdfkit-12-migration-guide.md)
- [Pspdfkit 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-5-migration-guide.md)
- [Pspdfkit 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-3-migration-guide.md)
- [Pspdfkit 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-4-migration-guide.md)
- [Pspdfkit 11 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-11-4-migration-guide.md)
- [Pspdfkit 6 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-6-5-migration-guide.md)
- [Pspdfkit 7 6 Migration Guide](/guides/ios/migration-guides/pspdfkit-7-6-migration-guide.md)
- [Pspdfkit 9 2 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-2-migration-guide.md)
- [Pspdfkit 6 Migration Guide](/guides/ios/migration-guides/pspdfkit-6-migration-guide.md)
- [Pspdfkit 9 4 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-4-migration-guide.md)
- [Pspdfkit 9 3 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-3-migration-guide.md)
- [Upgrading](/guides/ios/getting-started/upgrading.md)
- [Pspdfkit 9 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-migration-guide.md)
- [Pspdfkit 9 5 Migration Guide](/guides/ios/migration-guides/pspdfkit-9-5-migration-guide.md)
- [Migrate to PSPDFKit 7 with ease](/guides/ios/migration-guides/pspdfkit-7-migration-guide.md)

