---
title: "2020.1 release notes"
canonical_url: "https://www.nutrient.io/guides/web/release-notes/2020-1/"
md_url: "https://www.nutrient.io/guides/web/release-notes/2020-1.md"
last_updated: "2026-05-26T12:37:25.563Z"
description: "Explore the significant updates in PSPDFKit Web 2020.1, including localization changes and deprecated features for seamless migration."
---

# Key changes in PSPDFKit for Web 2020.1

[PSPDFKit for Web 2020.1](https://www.nutrient.io/blog/pspdfkit-web-2020-1/) comes with a few improvements that might require an ad hoc migration.

### Notable changes

- `NutrientViewer.I18n#localeData` has been deprecated because we have adopted [React Intl](https://github.com/formatjs/react-intl) version `3.x.x` changes. This version has dropped support for providing custom localization data in favor of using the [standard `Intl` Web API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) for pluralization and other localization rules, which means that you no longer need to provide these rules if you want to support additional locales.

  This also means you will no longer be able to provide localization rules for locales not supported by the browser, but considering the large number of locales supported by modern browsers, this should not pose a problem.

  Browsers that do not support the `Intl` API (like IE11 and Safari < 13) will include a polyfill for `Intl.PluralRules`, as well as an individual polyfill for each of the supported locales. If you want to continue supporting these browsers when providing additional locales, you can do so by including the corresponding locale polyfill:

  ```js

  // Add the locale to the locales list (Wolof language).
  NutrientViewer.I18n.locales.push("wo");
  // Is this browser using the `Intl.PluralRules` polyfill?
  if (Intl.PluralRules.polyfilled) {
    // Then include the plural rules locale data polyfill.
    await import("@formatjs/intl-pluralrules/dist/locale-data/wo");
  }
  // Add Wolof translations for messages.
  NutrientViewer.I18n.messages["wo"] = wolofMessages;
  // Change current language to Wolof
  instance.setLocale("wo");
  ```

Internet Explorer 11 is no longer supported in our Web SDK [as of version 2022.5.](/blog/pspdfkit-web-2022-5-content-editor-and-measurement-tools/) Edge 18 is no longer supported in our Web SDK [as of version 2023.2.](/blog/pspdfkit-web-2023-2-comment-mentions-notifications/)

Add the locale data polyfills to your local `node_modules` folder by installing them using either `npm` or `yarn`:

### YARN

```yarn

  yarn add @formatjs/intl-pluralrules

```

### NPM

```npm

  npm i @formatjs/intl-pluralrules

```

- We reworked the font sizing for the entire application, and this might result in some UI differences. In particular, if you use custom CSS for your UI, check your application to ensure the new setup doesn’t affect your integration negatively.

- [`NutrientViewer.Annotations.RectangleAnnotation#cloudyBorderInsetRect`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.RectangleAnnotation.html#cloudyborderinsetrect) and [`NutrientViewer.Annotations.EllipseAnnotation#cloudyBorderInsetRect`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.EllipseAnnotation.html#cloudyborderinsetrect) are now deprecated, and they have been replaced by the new [`NutrientViewer.Annotations.RectangleAnnotation#cloudyBorderInset`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.RectangleAnnotation.html#cloudyborderinset) and [`NutrientViewer.Annotations.EllipseAnnotation#cloudyBorderInset`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.EllipseAnnotation.html#cloudyborderinset) properties, which use a new [`NutrientViewer.Geometry.Inset`](https://www.nutrient.io/api/web/classes/NutrientViewer.Geometry.Inset.html) type instead of [`NutrientViewer.Geometry.Rect`](https://www.nutrient.io/api/web/classes/NutrientViewer.Geometry.Rect.html). Thanks to this change, you will not need to update the annotation whenever the bounding box changes, as was the case with the now deprecated `cloudyBorderInsetRect` property.

  It will still be possible to use [`NutrientViewer.Annotations.RectangleAnnotation#cloudyBorderInsetRect`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.RectangleAnnotation.html#cloudyborderinsetrect) in the constructor, where it will be transformed into a [`NutrientViewer.Geometry.Inset`](https://www.nutrient.io/api/web/classes/NutrientViewer.Geometry.Inset.html) and used to set [`NutrientViewer.Annotations.RectangleAnnotation#cloudyBorderInset`](https://www.nutrient.io/api/web/classes/NutrientViewer.Annotations.RectangleAnnotation.html#cloudyborderinset) instead. `cloudyBorderInsetRect` can still be read too, in which case a snapshot value will be returned, which is the result of adding the inset values from `cloudyBorderInset` to the current bounding box.

A deprecation warning will be shown each time `cloudyBorderInsetRect` is used. In the next major version, `cloudyBorderInsetRect` will finally be removed.

If you use the `cloudyBorderInsetRect` property in your code, you will have to update it so it does not break once the property is removed in the next major version.

Also, when you create a new rectangle or ellipse annotation with the `cloudyBorderIntensity` property set and there is no `cloudyBorderInset` or `cloudyBorderInsetRect` defined, a default `cloudyBorderInset` will be applied with values following this formula:

```js

const inset = 4.5 * cloudyBorderIntensity + strokeWidth / 2;

```

This default `cloudyBorderInset` value ensures that the cloudy border is not cropped and that it’s just wide enough for the cloudy border to fit in it. If you wish to set a `cloudyBorderInset` with `0` values, do it explicitly instead, using the following:

```js

const inset = new NutrientViewer.Geometry.Inset({
  left: 0,
  top: 0,
  right: 0,
  bottom: 0
});

```

Or, to make it less verbose, use the utility static class method [`NutrientViewer.Geometry.Inset#fromValue`](https://www.nutrient.io/api/web/classes/NutrientViewer.Geometry.Inset.html#fromvalue):

```js

const inset = NutrientViewer.Geometry.Inset.fromValue(0);

```

- `event.formField` has been removed from the documentation of `NutrientViewer.AnnotationsFocusEvent` and `NutrientViewer.AnnotationsBlurEvent`. It has never been part of the event payload, and this change only affects the aforementioned documentation, so it cannot break your implementation in any way. However, if you were relying on this, you may need to review your event listener logic in case the absence of this `event.formField` object may have been affecting its behavior. If you think you still need this object, you can easily get the `formField` associated with a particular annotation by using the following code:

  ```javascript

  instance.addEventListener("annotations.blur", event => {
    instance.getFormFields().then(formFields => {
      const formField = formFields.find(
        formField => formField.name === event.annotation.formFieldName
      );
      console.log(formField);
    });
  });
  ```

  If you are using `event.formField`, here is the change you need to make:

  **Before**

  ```javascript

  instance.addEventListener("annotations.focus", event => {
    console.log(event.formField);
  });

  instance.addEventListener("annotations.blur", event => {
    console.log(event.formField);
  });
  ```

  **After**

  ```javascript

  instance.addEventListener("annotations.focus", event => {
    instance.getFormFields().then(formFields => {
      const formField = formFields.find(
        formField => formField.name === event.annotation.formFieldName
      );
      console.log(formField);
    });
  });

  instance.addEventListener("annotations.blur", event => {
    instance.getFormFields().then(formFields => {
      const formField = formFields.find(
        formField => formField.name === event.annotation.formFieldName
      );
      console.log(formField);
    });
  });
  ```

- When the Digital Signatures component is included in the license, [`NutrientViewer.Instance#exportPDF`](https://www.nutrient.io/api/web/classes/NutrientViewer.Instance.html#exportpdf) will export signed documents as incrementally saved by default so as to prevent modifying signed data, which would invalidate the document’s digital signatures. However, setting the `incremental` flag to `false` will override this behavior.

  If the Digital Signatures component is not included in the license, the former behavior will be followed and signed documents will be exported as fully saved by default. In order to prevent signed data corruption in this case, the `incremental` flag should be explicitly set:

  ```js

  instance.exportPDF({ incremental: true });
  ```

- Previously, the object returned by [`NutrientViewer.ViewState#viewportPadding`](https://www.nutrient.io/api/web/classes/NutrientViewer.ViewState.html#viewportpadding) had the `vertical` value under the `horizontal` property and vice versa. This has been now fixed. If you were relying on the previous returned value, you will need to adjust your implementation accordingly.

- The order in which annotations are rendered has been modified. In previous versions, annotations of the same type would be rendered in the same layer, in the following order from back to front:
  - Text markup
  - Link
  - Text
  - Widget
  - Stamp
  - Image
  - Ink
  - Shape
  - Note

  Beginning with the current release, annotations will be rendered in the same order they are in the document, regardless of their type. New annotations will always be rendered on top of the last one that has been added.

  If your implementation relies on the former annotation rendering order, you may need to rearrange the order in which annotations are created so as to continue obtaining the same result.

  You would need to first create the annotations that you want to be rendered in the background, followed by the ones that you want to be rendered in the foreground. For example: First create text annotations, then stamp annotations, then ink and shape annotations, in that order. This way, your annotations will keep rendering in the order they had with the former behavior.

  If your annotations never overlap, this change will probably not affect your implementation at all.

- The note annotation icon in the main toolbar has been updated.

If you use PSPDFKit Server, make sure you read the [2020.1 migration guide](https://www.nutrient.io/guides/product-archives-and-deprecated-solutions.md).

For a full list of changes, check out the [changelog](https://www.nutrient.io/guides/web/changelog.md#2020.1).
---

## Related pages

- [1 10](/guides/web/release-notes/1-10.md)
- [1 1](/guides/web/release-notes/1-1.md)
- [1 13 1](/guides/web/release-notes/1-13-1.md)
- [1 0](/guides/web/release-notes/1-0.md)
- [1 12](/guides/web/release-notes/1-12.md)
- [1 11](/guides/web/release-notes/1-11.md)
- [1 15](/guides/web/release-notes/1-15.md)
- [1 13](/guides/web/release-notes/1-13.md)
- [1 14](/guides/web/release-notes/1-14.md)
- [1 3](/guides/web/release-notes/1-3.md)
- [1 2](/guides/web/release-notes/1-2.md)
- [1 5](/guides/web/release-notes/1-5.md)
- [1 4](/guides/web/release-notes/1-4.md)
- [1 8](/guides/web/release-notes/1-8.md)
- [1 6](/guides/web/release-notes/1-6.md)
- [1 7](/guides/web/release-notes/1-7.md)
- [Update your PSPDFKit for Web to version 2017.7](/guides/web/release-notes/2017-7.md)
- [1 9](/guides/web/release-notes/1-9.md)
- [2017 6](/guides/web/release-notes/2017-6.md)
- [New features in the 2018.1 migration guide](/guides/web/release-notes/2018-1.md)
- [2017 3](/guides/web/release-notes/2017-3.md)
- [Explore PSPDFKit for Web 2018.4 features](/guides/web/release-notes/2018-4.md)
- [Upgrade annotations in PSPDFKit Web 2017.8](/guides/web/release-notes/2017-8.md)
- [Discover the new features in PSPDFKit for Web 2018.3](/guides/web/release-notes/2018-3.md)
- [Explore new features in PSPDFKit for Web 2017.9](/guides/web/release-notes/2017-9.md)
- [PSPDFKit for Web 2018.2 migration insights](/guides/web/release-notes/2018-2.md)
- [Explore PSPDFKit for Web 2018.6 enhancements](/guides/web/release-notes/2018-6.md)
- [Key updates in PSPDFKit for Web 2019.1](/guides/web/release-notes/2019-1.md)
- [Explore the new features in PSPDFKit 2018.7](/guides/web/release-notes/2018-7.md)
- [2019 2](/guides/web/release-notes/2019-2.md)
- [Explore new features in PSPDFKit 2018.5](/guides/web/release-notes/2018-5.md)
- [PSPDFKit for Web 2019.5 migration insights](/guides/web/release-notes/2019-5.md)
- [PSPDFKit for Web 2019.3 migration highlights](/guides/web/release-notes/2019-3.md)
- [Seamless migration to PSPDFKit for Web 2020.2](/guides/web/release-notes/2020-2.md)
- [Upgrade to PSPDFKit Web 2020.3 seamlessly](/guides/web/release-notes/2020-3.md)
- [Essential updates in PSPDFKit for Web 2019.4](/guides/web/release-notes/2019-4.md)
- [PSPDFKit Web and Server 2020.4 migration update](/guides/web/release-notes/2020-4.md)
- [PSPDFKit Web 2020.6 migration insights](/guides/web/release-notes/2020-6.md)
- [Migration guide for PSPDFKit 2021.5](/guides/web/release-notes/2021-5.md)
- [Unified CRUD API enhancements for easy migration](/guides/web/release-notes/2020-5.md)
- [Upgrade to PSPDFKit for Web 2021.1 with ease](/guides/web/release-notes/2021-1.md)
- [2021 3](/guides/web/release-notes/2021-3.md)
- [PSPDFKit 2022.1.1 migration changes](/guides/web/release-notes/2022-1.md)
- [Enhancements in PSPDFKit for Web 2022.2](/guides/web/release-notes/2022-2.md)
- [Seamlessly migrate to PSPDFKit for Web 2021.2](/guides/web/release-notes/2021-2.md)
- [2021 6](/guides/web/release-notes/2021-6.md)
- [PSPDFKit 2021.4 migration guide for seamless updates](/guides/web/release-notes/2021-4.md)
- [Explore the new features of PSPDFKit for Web 2022.3](/guides/web/release-notes/2022-3.md)
- [Discover the key updates in PSPDFKit for Web 2023.1](/guides/web/release-notes/2023-1.md)
- [PSPDFKit for Web 2022.4 migration overview](/guides/web/release-notes/2022-4.md)
- [Explore key updates in PSPDFKit for Web 2023.4](/guides/web/release-notes/2023-4.md)
- [Key improvements in PSPDFKit for Web 2022.5](/guides/web/release-notes/2022-5.md)
- [PSPDFKit 2023.2 migration and updates](/guides/web/release-notes/2023-2.md)
- [Essential Nutrient Web SDK 2024.1 migration tips](/guides/web/release-notes/2024-1.md)
- [Key updates in PSPDFKit for Web 2023.3](/guides/web/release-notes/2023-3.md)
- [Key updates in PSPDFKit for Web 2023.5](/guides/web/release-notes/2023-5.md)
- [2024 2](/guides/web/release-notes/2024-2.md)
- [2024 4](/guides/web/release-notes/2024-4.md)
- [2024 5](/guides/web/release-notes/2024-5.md)
- [2024 7](/guides/web/release-notes/2024-7.md)
- [2024 3](/guides/web/release-notes/2024-3.md)
- [Upgrading Nutrient Web SDK](/guides/web/release-notes/upgrading.md)
- [2024 8](/guides/web/release-notes/2024-8.md)

