Nutrient iOS SDK 14.2

We recently released Nutrient iOS SDK 14.2. This was an ambitious release for our three-person iOS team, and it was exciting seeing this all come together! Here are a few interesting details from the technical side.

A new name for a longstanding product

Nutrient iOS SDK is the new name for PSPDFKit for iOS, our SDK for viewing and editing PDF documents. The 14 in the version number reflects the 14-year history of our product.

In 14.2, we started the rename from PSPDFKit to Nutrient. Nothing changed on the technical front; we just switched to the new name in documentation. We want to make this a smooth transition.

System text selection with UITextInteraction

Peter originally added text selection in PSPDFKit 2 back in September 2012. Seven years later, the iOS 13 SDK added UITextInteraction for native text selection and editing behaviours, while using your own rendering.

Our fully-custom text selection implementation improved over the years and was a very good replica of the system UI, but it required effort to maintain — especially now we support iOS, macOS and visionOS. UITextInteraction was clearly the way forward. In version 14.2, we’ve made the switch, completly overhauling our implementation of text selection in PDFs.

This read-only implementation is our second time using UITextInteraction: We already use it for editable text in our Content Editor. Read more in Stefan’s earlier post: Adopting UITextInteraction.

The huge benefit of system text selection is that it provides many built-in menu items:

I hope we can share more about what we learned as we’re now experts with this advanced API!

Big cleanup

For the last couple of years, we’ve supported two separate APIs for customising menus shown in our UI, with two separate implementations:

Our new release drops support for iOS 15, so we were able to remove our old menu customisation APIs. Adrian had set this up with clear separation, making this an easy clean up. It was so satisfying to say goodbye to thousands of lines of code! 👋

There are more details for customers in our migration guide.