<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Seif El Shinnawy</title>
    <description>The latest articles on DEV Community by Seif El Shinnawy (@shinnawy).</description>
    <link>https://dev.to/shinnawy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4034528%2F3e977eaa-0a79-43b4-891e-8edd5b301cd9.png</url>
      <title>DEV Community: Seif El Shinnawy</title>
      <link>https://dev.to/shinnawy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shinnawy"/>
    <language>en</language>
    <item>
      <title>How to Display a PDF Inside Your Adalo App (iOS, Android &amp; Web)</title>
      <dc:creator>Seif El Shinnawy</dc:creator>
      <pubDate>Fri, 17 Jul 2026 23:36:12 +0000</pubDate>
      <link>https://dev.to/shinnawy/how-to-display-a-pdf-inside-your-adalo-app-ios-android-web-31l</link>
      <guid>https://dev.to/shinnawy/how-to-display-a-pdf-inside-your-adalo-app-ios-android-web-31l</guid>
      <description>&lt;p&gt;&lt;em&gt;If you've tried to show a PDF in Adalo and ended up frustrated, this is the article I wish existed when I started.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Every Adalo Developer Hits
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;There isn't one.&lt;/p&gt;

&lt;p&gt;What follows is usually an hour (or several) of trying every workaround, each with its own fatal flaw.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the Existing Approaches All Fall Short
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Approach 1: Web View Component + Magic Text URL
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually happens:&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 2: External Link Action
&lt;/h3&gt;

&lt;p&gt;You add a button with an External Link action pointing to the PDF URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually happens:&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 3: In-App Browser
&lt;/h3&gt;

&lt;p&gt;Adalo's in-app browser keeps the user inside the app shell while loading a URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually happens:&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 4: Third-Party Marketplace Components
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;One is no longer actively maintained&lt;/li&gt;
&lt;li&gt;Another has stability issues on iOS builds&lt;/li&gt;
&lt;li&gt;Support response times are slow when things break&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What a Native PDF Viewer Actually Needs to Do
&lt;/h2&gt;

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

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

&lt;p&gt;None of the current solutions check all six boxes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: A Dedicated Native PDF Viewer for Adalo
&lt;/h2&gt;

&lt;p&gt;A native PDF Viewer component is being built specifically for the Adalo Marketplace to address all of these gaps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Who it's for:&lt;/strong&gt;&lt;/p&gt;

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




&lt;h2&gt;
  
  
  How to Set It Up
&lt;/h2&gt;

&lt;p&gt;Setup takes under 5 minutes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the PDF Viewer component from the Adalo Marketplace&lt;/li&gt;
&lt;li&gt;Drag it onto your screen like any other component&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;PDF URL&lt;/strong&gt; property — either a static URL or Magic Text pointing to a File field&lt;/li&gt;
&lt;li&gt;Done. It renders inline on iOS, Android, and Web.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No backend required. No external service. No API key. Just a URL.&lt;/p&gt;




&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;Does it work on Adalo Web?&lt;/strong&gt;&lt;br&gt;
Yes. The component handles the web context separately and renders correctly in Adalo's web output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about PDFs stored in Google Drive or Dropbox?&lt;/strong&gt;&lt;br&gt;
Any publicly accessible PDF URL works — Google Drive direct-download links, Dropbox, AWS S3, or your own CDN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does pinch-to-zoom work?&lt;/strong&gt;&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can users download or share the PDF?&lt;/strong&gt;&lt;br&gt;
Yes. A share button opens the native iOS share sheet or Android sharing intent — users can AirDrop, save to Files, email, or print.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it expose the PDF URL to users?&lt;/strong&gt;&lt;br&gt;
No. The URL never appears in a browser address bar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it a WebView under the hood?&lt;/strong&gt;&lt;br&gt;
No. On iOS it uses Apple's PDFKit. On Android it uses Android's PdfRenderer API. Neither are WebView wrappers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Notified When It Launches
&lt;/h2&gt;

&lt;p&gt;The component is currently under review for the Adalo Marketplace. Sign up to be first to know:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://adalo-pdfviewer.pages.dev" rel="noopener noreferrer"&gt;https://adalo-pdfviewer.pages.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Inline?&lt;/th&gt;
&lt;th&gt;Native engine?&lt;/th&gt;
&lt;th&gt;Zoom?&lt;/th&gt;
&lt;th&gt;Share?&lt;/th&gt;
&lt;th&gt;Works on iOS builds?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WebView + Magic Text&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External Link&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✅ (leaves app)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In-App Browser&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Inconsistent&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party marketplace&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Unstable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Native PDF Viewer (coming soon)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✅&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Built by an Adalo developer who hit every one of these walls. Questions or feedback welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>adalo</category>
      <category>nocode</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
