### Configuration Options

Here's the complete list of configuration options supported by each platform. Note that some options are only supported on a single platform — that's because of differences in the behavior of both of these platforms. Options that work on only one platform are prefixed with the appropriate platform name: `android` or `iOS`. The options, grouped roughly by category, are shown below.

#### Document Interaction Options

| Configuration Option               | Data Type | Possible Values                                                                                                                                                                                                                                                                                                                    | iOS | Android | Documentation                                                                                                                                                   |
| ---------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `scrollDirection`                  | `String`  | `horizontal`, `vertical`                                                                                                                                                                                                                                                                                                           | ✅  | ✅      | Configures the direction of page scrolling in the document view.                                                                                                |
| `pageTransition`                   | `String`  | `scrollPerSpread`, `scrollContinuous`, `curl`                                                                                                                                                                                                                                                                                      | ✅  | ✅      | Configures the page scrolling mode. Note that curl mode is only available for iOS and will be ignored on Android.                                               |
| `enableTextSelection`              | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ✅      | Allow / disallow text selection.                                                                                                                                |
| `autosaveEnabled`                  | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ✅      | Determines whether PSPDFKit should save automatically in response to [certain UI triggers][], such as the app entering the background or the view disappearing. |
| `disableAutomaticSaving`           | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ✅      | Determines whether PSPDFKit should save automatically in response to [certain UI triggers][], such as the app entering the background or the view disappearing. |
| `signatureSavingStrategy`          | `String`  | `alwaysSave`, `neverSave`, `saveIfSelected`                                                                                                                                                                                                                                                                                        | ✅  | ✅      | Determines whether signatures should be saved after creation.                                                                                                   |
| `iOSShouldScrollToChangedPage`     | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Scrolls to the affected page during an undo / redo operation.                                                                                                   |
| `iOSScrollViewInsetAdjustment`     | `String`  | `none`, `fixedElements`, `allElements`                                                                                                                                                                                                                                                                                             | ✅  | ❌      | Sets the scroll view inset adjustment mode.                                                                                                                     |
| `iOSFormElementZoomEnabled`        | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Option to automatically focus on selected form elements.                                                                                                        |
| `iOSImageSelectionEnabled`         | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Allow / disallow image selection.                                                                                                                               |
| `iOSTextSelectionShouldSnapToWord` | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Configure if text selection should snap to words.                                                                                                               |
| `iOSFreeTextAccessoryViewEnabled`  | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Shows a toolbar with text editing options above the keyboard while editing free text annotations.                                                               |
| `iOSInternalTapGesturesEnabled`    | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Enable / disable all internal gesture recognizers.                                                                                                              |
| `iOSAllowBackgroundSaving`         | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Determines whether automatic saving should happen on a background thread.                                                                                       |
| `iOSMinimumZoomScale`              | `float`   | -                                                                                                                                                                                                                                                                                                                                  | ✅  | ❌      | Minimum zoom scale for the scroll view.                                                                                                                         |
| `iOSMaximumZoomScale`              | `float`   | -                                                                                                                                                                                                                                                                                                                                  | ✅  | ❌      | Maximum zoom scale for the scroll view.                                                                                                                         |
| `iOSDoubleTapAction`               | `String`  | `none`, `zoom`, `smartZoom`                                                                                                                                                                                                                                                                                                        | ✅  | ❌      | The action that happens when the user double taps somewhere in the document.                                                                                    |
| `iOSTextSelectionMode`             | `String`  | `regular`, `simple`                                                                                                                                                                                                                                                                                                                | ✅  | ❌      | Defines how the text is selected.                                                                                                                               |
| `iOSTypesShowingColorPresets`      | `Set`     | `none`, `undefined`, `all`, `Link`, `Highlight`, `Underline`, `Squiggly`, `StrikeOut`, `Text`, `Caret`, `FreeText`, `Ink`, `Square`, `Circle`, `Line`, `Signature`, `Stamp`, `Eraser`, `Image`, `Widget`, `FileAttachment`, `Sound`, `Polygon`, `PolyLine`, `RichMedia`, `Screen`, `Popup`, `Watermark`, `TrapNet`, `3D`, `Redact` | ✅  | ❌      | Shows a custom cell with configurable color presets for the provided annotation types.                                                                          |

#### Document Presentation Options

| Configuration Option          | Data Type | Possible Values                    | iOS | Android | Documentation                                                                                   |
| ----------------------------- | --------- | ---------------------------------- | --- | ------- | ----------------------------------------------------------------------------------------------- |
| `pageMode`                    | `String`  | `single`, `double`, `automatic`    | ✅  | ✅      | Configure the page mode.                                                                        |
| `firstPageAlwaysSingle`       | `Boolean` | `true` / `false`                   | ✅  | ✅      | Option to show the first page separately.                                                       |
| `showPageLabels`              | `Boolean` | `true` / `false`                   | ✅  | ✅      | Displays the current page number.                                                               |
| `documentLabelEnabled`        | `Bool`    | `true` / `false`                   | ✅  | ✅      | Shows an overlay displaying the document name.                                                  |
| `spreadFitting`               | `String`  | `fit`, `fill`, `adaptive`          | ✅  | ✅      | Controls the page fitting mode. `adaptive` mode only works on iOS and has no effect on Android. |
| `invertColors`                | `Boolean` | `true` / `false`                   | ✅  | ✅      | Inverts the document color if `true`.                                                           |
| `androidGrayScale`            | `Boolean` | `true` / `false`                   | ❌  | ✅      | Converts the document colors to grayscale.                                                      |
| `iOSClipToPageBoundaries`     | `Boolean` | `true` / `false`                   | ✅  | ❌      | Option to clip content to page boundaries.                                                      |
| `iOSBackgroundColor`          | `UIColor` | -                                  | ✅  | ❌      | Background color behind the page view.                                                          |
| `iOSRenderAnimationEnabled`   | `Boolean` | `true` / `false`                   | ✅  | ❌      | Shows a `UIActivityIndicatorView` in the top-right corner while the page is rendering.          |
| `iOSRenderStatusViewPosition` | `String`  | `top`, `centered`                  | ✅  | ❌      | Position of the render status view.                                                             |
| `iOSAllowedAppearanceModes`   | `String`  | `default`, `sepia`, `night`, `all` | ✅  | ❌      | Allowed appearance modes for `BrightnessViewController`.                                        |

#### User Interface Options

| Configuration Option                          | Data Type      | Possible Values                                                                                                     | iOS | Android | Documentation                                                                                                                                                                                                         |
| --------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------- | --- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `userInterfaceViewMode`                       | `String`       | `automatic`, `automaticBorderPages`, `automaticNoFirstLastPage`, `always`, `alwaysVisible`, `alwaysHidden`, `never` | ✅  | ✅      | Configures the user interface visibility.                                                                                                                                                                             |
| `inlineSearch`                                | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ✅      | Sets the type of search bar to be inline or modular.                                                                                                                                                                  |
| `immersiveMode`                               | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ✅      | Hides the user interface if set to `true`.                                                                                                                                                                            |
| `toolbarTitle`                                | `String`       | -                                                                                                                   | ✅  | ✅      | Sets the title of the toolbar. Note: For iOS, you need to set `documentLabelEnabled`, `iOSUseParentNavigationBar`, and `iOSAllowToolbarTitleChange` to `false` in your configuration before setting the custom title. |
| `androidShowSearchAction`                     | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables / disables document search functionality.                                                                                                                                                                     |
| `androidShowOutlineAction`                    | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables an outline menu in the activity.                                                                                                                                                                              |
| `androidShowBookmarksAction`                  | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables the display of bookmarks.                                                                                                                                                                                     |
| `androidShowShareAction`                      | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables the display of share features.                                                                                                                                                                                |
| `androidShowPrintAction`                      | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables the printing option in the menu (if applicable) for the document and the device.                                                                                                                              |
| `androidShowDocumentInfoView`                 | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables the display of document information.                                                                                                                                                                          |
| `androidShowSettingsMenu`                     | `Boolean`      | `true` / `false`                                                                                                    | ❌  | ✅      | Enables the display of the settings menu.                                                                                                                                                                             |
| `iOSShouldHideUserInterfaceOnPageChange`      | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Option to hide / show the user interface when changing pages.                                                                                                                                                         |
| `iOSShouldShowUserInterfaceOnViewWillAppear`  | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Option to hide / show the user interface when the page appears.                                                                                                                                                       |
| `iOSShouldHideStatusBarWithUserInterface`     | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Option to hide / show the status bar with the user interface.                                                                                                                                                         |
| `iOSShouldHideNavigationBarWithUserInterface` | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Option to hide / show the navigation bar with the user interface.                                                                                                                                                     |
| `iOSSearchMode`                               | `String`       | `modal`, `inline`                                                                                                   | ✅  | ❌      | Sets the type of search bar to be inline or modal.                                                                                                                                                                    |
| `iOSScrollOnEdgeTapEnabled`                   | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Determines whether tapping on leading / trailing edges of the document view should trigger changing to the previous / next page.                                                                                      |
| `iOSScrollOnEdgeTapMargin`                    | `float`        | -                                                                                                                   | ✅  | ❌      | The margin in points from the view’s sides in which tapping should trigger scrolling to the previous / next page.                                                                                                     |
| `iOSUseParentNavigationBar`                   | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Set this to `true` to allow this controller to access the parent `navigationBar` / `navigationController` to add custom buttons.                                                                                      |
| `iOSAllowToolbarTitleChange`                  | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Allow PSPDFKit to change the title of this view controller.                                                                                                                                                           |
| `iOSShouldHideStatusBar`                      | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | If `true`, the status bar will always remain hidden (regardless of the `shouldHideStatusBarWithUserInterface` setting).                                                                                               |
| `iOSShowBackActionButton`                     | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Shows a floating back button in the lower part of the screen.                                                                                                                                                         |
| `iOSShowForwardActionButton`                  | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Shows a floating forward button in the lower part of the screen.                                                                                                                                                      |
| `iOSShowBackForwardActionButtonLabels`        | `Boolean`      | `true`/ `false`                                                                                                     | ✅  | ❌      | Adds text labels representing the destination name to the back and forward buttons.                                                                                                                                   |
| `iOSSearchResultZoomScale`                    | `float`        | -                                                                                                                   | ✅  | ❌      | Increase this to zoom to the search result.                                                                                                                                                                           |
| `iOSAdditionalScrollViewFrameInsets`          | `UIEdgeInsets` | -                                                                                                                   | ✅  | ❌      | Additional insets to apply to the document scroll view's frame.                                                                                                                                                       |
| `iOSAdditionalContentInsets`                  | `UIEdgeInsets` | -                                                                                                                   | ✅  | ❌      | Additional insets to apply to the layout's content.                                                                                                                                                                   |
| `iOSAllowedMenuActions`                       | `String`       | `none`, `search`, `define`, `wikipedia`, `speak`, `all`                                                             | ✅  | ❌      | May be used to customize other displayed menu actions when text is selected.                                                                                                                                          |
| `iOSSettingsOptions`                          | `Set`          | `scrollDirection`, `pageTransition`, `appearance`, `brightness`, `pageMode`, `spreadFitting`, `default`, `all`      | ✅  | ❌      | Options that will be presented by `PDFSettingsViewController`. Defaults to `.default`.                                                                                                                                |
| `iOSShadowEnabled`                            | `Boolean`      | `true` / `false`                                                                                                    | ✅  | ❌      | Enable / disable page shadow.                                                                                                                                                                                         |
| `iOSShadowOpacity`                            | `float`        | -                                                                                                                   | ✅  | ❌      | Set the default `shadowOpacity`.                                                                                                                                                                                      |

#### Thumbnail Options

| Configuration Option             | Data Type      | Possible Values                                                      | iOS | Android | Documentation                                                                  |
| -------------------------------- | -------------- | -------------------------------------------------------------------- | --- | ------- | ------------------------------------------------------------------------------ |
| `showThumbnailBar`               | `String`       | `none`, `default`, `floating`, `pinned`, `scrubberBar`, `scrollable` | ✅  | ✅      | Thumbnail bar mode controls the display of page thumbnails viewing a document. |
| `androidShowThumbnailGridAction` | `Boolean`      | `true` / `false`                                                     | ❌  | ✅      | Displays an action bar icon to show a grid of thumbnail pages.                 |
| `iOSScrubberBarType`             | `String`       | `horizontal`, `verticalLeft`, `verticalRight`                        | ✅  | ❌      | Controls the placement of the scrubber bar.                                    |
| `iOSThumbnailGrouping`           | `String`       | `automatic`, `never`, `always`                                       | ✅  | ❌      | Option to set the grouping of thumbnails.                                      |
| `iOSThumbnailSize`               | `CGSize`       | -                                                                    | ✅  | ❌      | Configure the size of the thumbnail.                                           |
| `iOSThumbnailInteritemSpacing`   | `float`        | -                                                                    | ✅  | ❌      | Configure the spacing between thumbnails.                                      |
| `iOSThumbnailLineSpacing`        | `float`        | -                                                                    | ✅  | ❌      | Configure the line spacing of thumbnails.                                      |
| `iOSThumbnailMargin`             | `UIEdgeInsets` | -                                                                    | ✅  | ❌      | Configure the margin for thumbnails.                                           |
| `iOSShouldCacheThumbnails`       | `Boolean`      | `true` / `false`                                                     | ✅  | ❌      | Option to enable / disable thumbnail caching.                                  |

#### Annotation, Forms, and Bookmark Options

| Configuration Option                               | Data Type | Possible Values                                                                                                                                                                                                                                                                                                                    | iOS | Android | Documentation                                                                                                                                                    |
| -------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `editableAnnotationTypes`                          | `Set`     | `none`, `undefined`, `all`, `Link`, `Highlight`, `Underline`, `Squiggly`, `StrikeOut`, `Text`, `Caret`, `FreeText`, `Ink`, `Square`, `Circle`, `Line`, `Signature`, `Stamp`, `Eraser`, `Image`, `Widget`, `FileAttachment`, `Sound`, `Polygon`, `PolyLine`, `RichMedia`, `Screen`, `Popup`, `Watermark`, `TrapNet`, `3D`, `Redact` | ✅  | ✅      | Set containing the annotation types that should be editable.                                                                                                     |
| `enableAnnotationEditing`                          | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ✅      | Configuration to enable / disable editing all annotations. To selectively enable editing for specific types of annotations, use `editableAnnotationTypes`.       |
| `enableFormEditing`                                | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ✅      | Configuration to enable / disable editing forms. This can also be accomplished by adding / removing the `Widget` annotation type from `editableAnnotationTypes`. |
| `androidShowAnnotationListAction`                  | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ❌  | ✅      | Enables the list of annotations.                                                                                                                                 |
| `iOSShouldAskForAnnotationUsername`                | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | If `true`, asks the user to specify a custom annotation user name ("author") when creating a new annotation.                                                     |
| `iOSLinkAction`                                    | `String`  | `none`, `alertView`, `openSafari`, `inlineBrowser`, `InlineWebViewController`                                                                                                                                                                                                                                                      | ✅  | ❌      | Sets the default link action for pressing on `LinkAnnotation`s.                                                                                                  |
| `iOSDrawCreateMode`                                | `String`  | `separate`, `mergeIfPossible`                                                                                                                                                                                                                                                                                                      | ✅  | ❌      | Determines whether new annotations are created when strokes end.                                                                                                 |
| `iOSAnnotationGroupingEnabled`                     | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | If set to `true`, you can group / ungroup annotations with the multi-select tool.                                                                                |
| `iOSNaturalDrawingAnnotationEnabled`               | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Enables natural drawing for ink annotations.                                                                                                                     |
| `iOSNaturalSignatureDrawingEnabled`                | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Enables natural drawing for signatures.                                                                                                                          |
| `iOSAnnotationEntersEditModeAfterSecondTapEnabled` | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | Controls if a second tap to an annotation that allows inline editing enters edit mode.                                                                           |
| `iOSCreateAnnotationMenuEnabled`                   | `Boolean` | `true` / `false`                                                                                                                                                                                                                                                                                                                   | ✅  | ❌      | If set to `true`, a long tap that ends on a page area that isn’t a text / image will show a new menu to create annotations.                                      |
| `iOSAnnotationAnimationDuration`                   | `float`   | -                                                                                                                                                                                                                                                                                                                                  | ✅  | ❌      | Overlay annotations are faded in. Set the global duration for this fade here.                                                                                    |
| `iOSSoundAnnotationTimeLimit`                      | `float`   | -                                                                                                                                                                                                                                                                                                                                  | ✅  | ❌      | Describes the time limit for recording sound annotations, in seconds.                                                                                            |
| `iOSBookmarkSortOrder`                             | `String`  | `custom`, `pageBased`                                                                                                                                                                                                                                                                                                              | ✅  | ❌      | Controls how bookmarks are displayed and managed.                                                                                                                |
