Beyond iPhone: Developing across Apple platforms
A quick overview of the available options for codebases that work across Apple platforms and how a pragmatism-over-polish mindset is the way forward. Based on a lightning talk at Swift Craft 2025.
IOS PDF SDK
Give your users a premium experience with an iOS PDF viewer SDK that has dozens of out-of-the-box features for document viewing, annotation, redaction, built-in AI, and much more.
THE BEST USER EXPERIENCE
Render your first PDF in minutes with drop-in components and autogenerated Swift samples.
Reduce the overhead costs associated with building, customizing, and maintaining robust document technology internally.
Call one method to summarize, translate, and query multiple documents — AI is baked into the SDK.
PDFium-based engine and SOC 2 Type II compliance keep data safe in finance-grade deployments.
Nutrient iOS SDK delivers modular Swift frameworks you can embed in minutes — bringing native viewing, annotation, signing, and AI-powered features to any iPhone or iPad app, online or offline.
Render large PDFs instantly, layer on markups and threaded comments, and watch feedback appear live.
Add, reorder, or rewrite pages, and build dynamic forms.
Apply tamper‑proof eSignatures, compare documents, and scrub sensitive data before release.
Ask a document anything, translate or classify content, and convert file formats.
FREE 30-DAY TRIAL
CODE EXAMPLES
Add high-performance PDF viewing, annotation, and editing to your iOS app in minutes — with just a few lines of Swift or Objective‑C.
Basic Examples
import PSPDFKitimport PSPDFKitUI
// Create the `Document`.// This is the container for your PDF file. It can also manage multiple files.let fileURL = Bundle.main.url(forResource: "Document", withExtension: "pdf")!let document = Document(url: fileURL)
// Create the PDF view controller.// The configuration object is optional and allows additional customization.let pdfController = PDFViewController(document: document) { $0.thumbnailBarMode = .scrollable $0.isPageLabelEnabled = false}
// Present the PDF view controller within a `UINavigationController` to enable the toolbar.present(UINavigationController(rootViewController: pdfController), animated: true)
@import PSPDFKit;@import PSPDFKitUI;
// Create the `PSPDFDocument`.// This is the container for your PDF file. It can also manage multiple files.NSURL *documentURL = [NSBundle.mainBundle URLForResource:@"Document" withExtension:@"pdf"];PSPDFDocument *document = [[PSPDFDocument alloc] initWithURL:documentURL];
// Create the PDF view controller.// The configuration object is optional and allows additional customization.PSPDFViewController *pdfController = [[PSPDFViewController alloc] initWithDocument:document configuration:[PSPDFConfiguration configurationWithBuilder:^(PSPDFConfigurationBuilder *builder) { builder.thumbnailBarMode = PSPDFThumbnailBarModeScrollable; builder.pageLabelEnabled = NO;}]];
// Present the PDF view controller within a `UINavigationController` to enable the toolbar.UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:pdfController];[self presentViewController:navController animated:YES completion:NULL];
Custom Toolbar
// First clean up the buttons on the right.controller.navigationItem.setRightBarButtonItems([], for: .document, animated: false)
// Then set the left buttons.let leftButtons = [controller.settingsButtonItem, controller.outlineButtonItem]controller.navigationItem.setLeftBarButtonItems(leftButtons, for: .document, animated: false)
// First clean up the buttons on the right.[controller.navigationItem setRightBarButtonItems:@[] forViewMode:PSPDFViewModeDocument animated:NO];
// Then set the left buttons.NSArray *leftButtons = @[controller.settingsButtonItem, controller.outlineButtonItem];[controller.navigationItem setLeftBarButtonItems:leftButtons forViewMode:PSPDFViewModeDocument animated:NO];
Create Annotation
// Create `Document`.let document = Document(url: documentURL)
// Create a new free text annotation by defining its contents.let freeTextAnnotation = FreeTextAnnotation(contents: "PSPDFKit")
// Define where you want to place the annotation in the document.let boundingBox = CGRect(x: 200, y: 400, width: 50, height: 300)freeTextAnnotation.boundingBox = boundingBox
// Add the newly created annotation to the document.document.add(annotations: [freeTextAnnotation])
// Create `PSPDFDocument`.PSPDFDocument *document = [[PSPDFDocument alloc] initWithURL:documentURL];
// Create a new free text annotation by defining its contents.PSPDFFreeTextAnnotation *freeTextAnnotation = [[PSPDFFreeTextAnnotation alloc] initWithContents:@"PSPDFKit"];
// Define where you want to place the annotation in the document.CGRect boundingBox = { .origin.x = 200.f, .origin.y = 400.f, .size.height = 50.f, .size.width = 300.f };freeTextAnnotation.boundingBox = boundingBox;
// Add the newly created annotation to the document.[document addAnnotations:@[freeTextAnnotation] options:nil];
Nutrient SDKs and Cloud APIs add full document lifecycle support to any platform, tech stack, or infrastructure in minutes. The same technology meets Fortune 500 requirements while helping startups ship fast.
Clean documentation, drop-in code, and MCP hooks for both hands-on developers and AI agents.
Web, mobile, desktop, server, or Nutrient Cloud — with no lock-in.
SOC 2 Type II and WCAG 2.2-compliant workflows with PDF/UA-accessible documents.
Built-in document AI with support for leading LLMs and their private implementations.
PROVEN AT SCALE
Integrated the Nutrient PDF SDK to deliver high‑fidelity previews and editing in its mobile apps, shipping customer‑requested features to 115,000 organizations months ahead of schedule.
Renders multipage PDFs and signature tags with Nutrient, keeping 200 million users in 188 countries moving at the speed of eSignature.
Empowers 34,000 pilots to view, annotate, and sign 90‑page flight releases on iPad using Nutrient iOS SDK, saving minutes — and money — on every flight.
FREE TRIAL
Start building with Nutrient iOS SDK today. No credit card required.
Integrating PDF functionality into your iOS application can significantly enhance document management and user engagement. This section will explore the essentials of iOS PDF SDKs to guide you through this integration.
An iOS PDF SDK (software development kit) is a collection of tools and APIs that enables developers to embed PDF viewing, editing, and management capabilities into iOS applications. This allows for seamless interaction with PDF documents directly within the app, enhancing user experience and productivity.
Choosing Nutrient (formerly PSPDFKit) offers several advantages:
Consider the following factors when choosing the best iOS PDF SDK for your project:
Various iOS PDF SDKs are available, each offering distinct features:
How do I integrate Nutrient’s iOS PDF SDK into my application?
To integrate Nutrient’s iOS PDF SDK, you can use Swift Package Manager, CocoaPods, or manual installation methods. Each approach is detailed in our getting started guide, providing step-by-step instructions to ensure a smooth setup.
How can I customize the PDF viewer’s user interface?
Nutrient’s iOS PDF SDK offers a highly customizable UI, allowing you to hide or add buttons, adjust themes, and match the look and feel of your application. Detailed guidance on UI customization is available in our viewer guide.
What licensing options are available for Nutrient’s iOS PDF SDK?
Our SDK is licensed on a subscription basis, tailored to accommodate various project sizes and requirements. Licenses are issued per explicit bundle ID, with provisions for additional bundle IDs for beta testing.