> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/web/changelogs/version-5/v5-0-0.md).

# Version 5.0.0 Changelog (2019-03-06)

World's #1 PDF SDK Library for Web, Mobile, Server, Desktop

## Breaking changes

* If WebViewer is not able to determine the type of file being loaded from the URL it will assume it is a PDF. Previously it would assume it was a XOD file.
* Changed the default cache hinting for XOD files to NO\_HINT so no extra query parameters will be added to request URLs.
* Initial state for [StatefulButton](/web/ui-customization/legacy-ui/customizing-header.md#StatefulButton) is determined by the value of the initialState property. Previously it was determined by the return value of the mount function.
* Passing the annotation constructor function to [registerTool](https://sdk.apryse.com/api/web/WebViewerInstance.html#registerTool__anchor) as the second argument is required if the tool is used to create a custom annotation.

## New

* [AnnotationManager.applyRedactions](https://sdk.apryse.com/api/web/Core.AnnotationManager.html#applyRedactions__anchor)
* [DocumentViewer.snapToNearest](https://sdk.apryse.com/api/web/Core.DocumentViewer.html#snapToNearest__anchor)
* [FieldManager.setAlertHandler](https://sdk.apryse.com/api/web/Core.Annotations.Forms.FieldManager.html#setAlertHandler__anchor)
* [Annotation.isClickableOutsideRect](https://sdk.apryse.com/api/web/Core.Annotations.Annotation.html#Annotation__anchor)
* [SignatureWidgetAnnotation.isSignedInitially](https://sdk.apryse.com/api/web/Core.Annotations.SignatureWidgetAnnotation.html#isSignedInitially__anchor)
* [SignatureWidgetAnnotation.createSignHereElement](https://sdk.apryse.com/api/web/Core.Annotations.SignatureWidgetAnnotation.html#SignatureWidgetAnnotation__anchor)
* [setMaxZoomLevel](https://sdk.apryse.com/api/web/WebViewerInstance.html#setMaxZoomLevel__anchor)
* [setMinZoomLevel](https://sdk.apryse.com/api/web/WebViewerInstance.html#setMinZoomLevel__anchor)
* [enableRedaction](https://sdk.apryse.com/api/web/WebViewerInstance.html#enableRedaction__anchor)
* [disableRedaction](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableRedaction__anchor)
* [setIconColor](https://sdk.apryse.com/api/web/WebViewerInstance.html#setIconColor__anchor)
* [enableMeasurement](https://sdk.apryse.com/api/web/WebViewerInstance.html#enableMeasurement__anchor)
* [disableMeasurement](https://sdk.apryse.com/api/web/WebViewerInstance.html#disableMeasurement__anchor)
* [setSwipeOrientation](https://sdk.apryse.com/api/web/WebViewerInstance.html#setSwipeOrientation__anchor)
* [setCustomNoteFilter](https://sdk.apryse.com/api/web/WebViewerInstance.html#setCustomNoteFilter__anchor)

## Updates

* Redaction support has been greatly improved. When `enableRedaction: true` is passed to the WebViewer constructor the new built in redaction tool will be visible as well as a button to permanently apply the redactions. See the [redaction sample](https://sdk.apryse.com/samples/web/samples/advanced/redaction/) to try it out.
* Measurement annotations according to the PDF specification are now supported. Use the `enableMeasurement: true` construction option to display built in tool buttons. Line, polyline and polygon annotations can be added with associated measure information that will automatically recalculate when they are changed. When the document is downloaded these annotations will continue to update correctly in other viewers. See the [measurement sample](https://sdk.apryse.com/samples/web/samples/advanced/measurement/) to try it out.
* Signature annotations have been improved. Clicking on a signature widget will display the signature dialog. Multiple signatures are remembered in the UI and the selected signature to add will appear over the document when hovering.
* Added support for the display of line annotation captions, leader lines and reversed arrow ending style.
* Added various full API samples: [LogicalStructureTest](https://sdk.apryse.com/samples/web/samples/full-apis/LogicalStructureTest/), [PDFDiffTest](https://sdk.apryse.com/samples/web/samples/full-apis/ViewerPDFDiffTest/), [SnapToNearestTest](https://sdk.apryse.com/samples/web/samples/full-apis/ViewerSnapToNearestTest/).
* Updated [build optimization script](/web/best-practices/optimizing-lib-folder.md) to generate a build that works when deploying to Salesforce.
* The [loadDocument](https://sdk.apryse.com/api/web/WebViewerInstance.html#loadDocument__anchor) function now accepts document blobs to be loaded.
* Added a synced three panel pixel [diff sample](https://sdk.apryse.com/samples/web/samples/advanced/diff/).
* Added the ability to print comments in the new UI.
* The download button is now enabled for iOS devices and will open the document in a new tab, allowing it to be shared.
* Added Dutch translation for the UI.
* Added data-element property for the reply button in the notes panel so that it can be hidden programmatically.
* Allow resizing of the left panel in the UI.
* Added a zoom dropdown that allows changing the fit modes as well as a number of common zoom levels.
* Added a marquee zoom tool that allows you to zoom into a selected rectangle.

## Fixes

* Fixed issue with calculation of auto font size for FreeText annotations.
* Fixed issue with blurry form fields in Safari.
* Fixed issue where the file name when downloading from WebViewer Server wasn't being set correctly.
* Fixed issue where strikeout annotations with stroke thickness zero weren't visible.
* Fixed issue rendering cloud polygon annotations without the intensity specified.
* Fixed issue with the proper support of opacity for stamp annotations.
* Fixed issue where Safari and Firefox don't scale down radio and checkbox size.
* Fixed issue with setting the initial value for some list and choice widgets.
* Fixed issue where the pageComplete event didn't always include the canvas in the event handler.
* Fixed issues with loading XFDF that includes apref entries but the document doesn't have that appearance information.
* Fixed issue where annotations might have an extra `IT` property in XFDF.
* Fixed issue where it was possible for pages to be removed from the DOM even though they were still visible.
* Fixed issue with scaling radio and checkboxes on Safari and iOS devices.
* Fixed issue where pressing escape doesn't remove the annotation being drawn.
* Fixed issue loading local PDF files in Cordova apps.
* Fixed issue with header items remounting more than necessary.
* Fixed issue with setting navigating between pages after setting page labels.
* Fixed issue where the current page number is cut off on the side in Edge.
* Fixed issue where button groups with null or empty string were showing up in the ToolsOverlay.
* Fixed issue where capitalized file extensions were causing an error.
* Fixed issue where the pdftronServer option wasn't being respected if the documentType option was also set.
* Fixed issue where text copied in the clipboard would be pasted into a copied FreeText annotation.
* Fixed issue where swiping to the left does not go to the previous page on iOS devices.
* Fixed issue with updateAnnotationPermission events triggering when document is unloaded and annotation was previously selected
* Fixed issue where annotations that were added on the same date but a different month/year were being grouped together.
* Fixed issue with document flickering when zoomed to the edge on iOS devices.
* Fixed issue with positioning annotation popup.
* Fixed issue where double tapping wouldn't finish drawing some annotations.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/web/changelogs/version-5/v5-0-0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
