DEV Community

Seif El Shinnawy
Seif El Shinnawy

Posted on

How to Display a PDF Inside Your Adalo App (iOS, Android & Web)

If you've tried to show a PDF in Adalo and ended up frustrated, this is the article I wish existed when I started.


The Problem Every Adalo Developer Hits

You're building an Adalo app. Users need to view a PDF — a contract, a report, a certificate, an e-book, a manual. You open the Adalo editor expecting a simple solution.

There isn't one.

What follows is usually an hour (or several) of trying every workaround, each with its own fatal flaw.


Why the Existing Approaches All Fall Short

Approach 1: Web View Component + Magic Text URL

The most common suggestion on the Adalo forum. You add a Web View component, connect it to a File field via Magic Text, and expect the PDF to render inline.

What actually happens: On the Adalo web preview it sometimes works. On a real installed iOS or Android build, it either shows a blank white box or opens the PDF in the device's external browser — completely outside your app. The URL of your file is also exposed in the browser's address bar.

Approach 2: External Link Action

You add a button with an External Link action pointing to the PDF URL.

What actually happens: This opens the system browser (Safari on iOS, Chrome on Android). The user leaves your app entirely. There's no back button. The experience is broken, the URL is visible, and you've lost control of the interface.

Approach 3: In-App Browser

Adalo's in-app browser keeps the user inside the app shell while loading a URL.

What actually happens: Still uses a web engine under the hood. PDFs rendered through a web engine on mobile are inconsistent — some devices render them, some don't. Pinch-to-zoom often doesn't work. There's no native share or download capability.

Approach 4: Third-Party Marketplace Components

There are a handful of third-party PDF components in the Adalo Marketplace. As of 2025, the community experience with these has been:

  • One is no longer actively maintained
  • Another has stability issues on iOS builds
  • Support response times are slow when things break

What a Native PDF Viewer Actually Needs to Do

After going through all of the above, here's what "working properly" means for a PDF viewer in a no-code mobile app:

  1. Render inline — the PDF opens inside the app, not in an external browser
  2. Use the native PDF engine — on iOS this is PDFKit, on Android it's PdfRenderer. These are battle-tested, fast, and handle edge cases correctly
  3. Support pinch-to-zoom — standard gesture, must work
  4. Expose share and download — users should be able to AirDrop, email, or save the PDF via the native share sheet
  5. Work with dynamic URLs — connect to a database File field or Magic Text, not just hardcoded URLs
  6. Work on Web too — Adalo apps often run on web as well; the component should handle that context gracefully

None of the current solutions check all six boxes.


The Solution: A Dedicated Native PDF Viewer for Adalo

A native PDF Viewer component is being built specifically for the Adalo Marketplace to address all of these gaps.

What it does:

  • Opens PDFs fully inline — users never leave the app
  • Uses PDFKit on iOS and PdfRenderer on Android — the platform's own native engine
  • Works on Adalo Web too, using an embedded PDF rendering library
  • Supports pinch-to-zoom, smooth scrolling, page navigation
  • Includes a floating search bar for full-text search inside the document
  • Exposes the native share sheet — users can AirDrop, save to Files, or email the PDF
  • Takes a single URL property — wire it to any File field, Magic Text, or external URL
  • Works with Adalo database File fields out of the box

Who it's for:

  • Adalo developers building document-heavy apps (contracts, certificates, reports, manuals, e-books)
  • Apps where users need to view user-specific PDFs from a database
  • Teams who've tried the WebView approach and hit the blank-box problem on iOS builds

How to Set It Up

Setup takes under 5 minutes:

  1. Install the PDF Viewer component from the Adalo Marketplace
  2. Drag it onto your screen like any other component
  3. Set the PDF URL property — either a static URL or Magic Text pointing to a File field
  4. Done. It renders inline on iOS, Android, and Web.

No backend required. No external service. No API key. Just a URL.


Frequently Asked Questions

Can it display PDFs stored in my Adalo database?
Yes. If you have a File property in a collection, connect it via Magic Text and it will load that user's specific document.

Does it work on Adalo Web?
Yes. The component handles the web context separately and renders correctly in Adalo's web output.

What about PDFs stored in Google Drive or Dropbox?
Any publicly accessible PDF URL works — Google Drive direct-download links, Dropbox, AWS S3, or your own CDN.

Does pinch-to-zoom work?
Yes. Because it uses the native PDF engine (not a WebView), standard touch gestures work exactly as they do in Files or Safari's PDF reader.

Can users download or share the PDF?
Yes. A share button opens the native iOS share sheet or Android sharing intent — users can AirDrop, save to Files, email, or print.

Does it expose the PDF URL to users?
No. The URL never appears in a browser address bar.

Is it a WebView under the hood?
No. On iOS it uses Apple's PDFKit. On Android it uses Android's PdfRenderer API. Neither are WebView wrappers.


Get Notified When It Launches

The component is currently under review for the Adalo Marketplace. Sign up to be first to know:

👉 https://adalo-pdfviewer.pages.dev


Summary

Approach Inline? Native engine? Zoom? Share? Works on iOS builds?
WebView + Magic Text
External Link ✅ (leaves app)
In-App Browser Partial Inconsistent Partial
Third-party marketplace Partial Partial Unstable
Native PDF Viewer (coming soon)

Built by an Adalo developer who hit every one of these walls. Questions or feedback welcome.

Top comments (0)