AUTHOR

おじゃち

    What PWAs Can and Cannot Do on iOS in 2026: A Complete Practical Guide

    How much can a PWA actually do on an iPhone in 2026? PWAs on iOS have changed significantly over the last few years. Some features that once felt unreliable now work well, while other behaviors still differ from Android. After repeatedly testing PWAs on real iPhones, my conclusion is simple: PWAs work well on iOS in 2026, but you should design them as iOS web apps rather than expecting Android Chrome behavior. Home Screen installation, standalone display, start_url, scope, custom icons, Service Workers, Web Push, and modern Web APIs are all usable on iPhone. But install UX, display modes, icon handling, storage behavior, and some manifest features still behave differently from Android. This guide explains what PWAs can and cannot realistically do on iOS in 2026, based on real-device testing. Quick answer: What can PWAs do on iOS in 2026? Feature iOS support Practical note Add to Home Screen Yes Available through Safari’s Share menu Standalone app-like display Yes Works well for Home Screen web apps Web App Manifest Yes Supported, but some behavior differs from Android start_url Yes Controls […]

      Is display: fullscreen Practical for PWAs? Comparing iPhone and Android Behavior

      Is display: fullscreen Practical for PWAs? Comparing iPhone and Android Behavior In a PWA manifest, there is a setting called display. This setting controls how the PWA appears when it is opened from the home screen. The most common value is usually standalone, but there is also a value called fullscreen. Just from the name, it sounds powerful. If the browser UI disappears and the page looks completely like an app, it sounds perfect for a PWA. But after testing it in PWA LAB, I found a pretty realistic difference between platforms. In short: on Android, it can feel very app-like. On iPhone, you should not expect much from it. What is display? display is the display mode setting inside manifest.json. For example, you can write it like this: { "name": "OJapp PWA LAB", "start_url": ".", "display": "fullscreen", "background_color": "#f5f7fb", "theme_color": "#2dd7ff" } Changing this display value changes how the PWA looks when opened. The main values are: standalone: the standard app-like PWA display fullscreen: displays the app as full-screen as possible minimal-ui: keeps a minimal browser UI browser: opens […]

        The manifest.json id Trap: How to Avoid Duplicate PWA Install Problems

        The manifest.json id Trap: How to Avoid Duplicate PWA Install Problems In a PWA manifest, there is a field called id. When you first start building PWAs, you usually focus on name, start_url, display, and icons. To be honest, because a PWA can work without id, it is easy to think, “Do I really need this?” But when you want to handle multiple PWAs on the same domain, or generate app-like entries for each user, this id field can suddenly become a huge wall. After a lot of rough testing in PWA LAB, I ended up with one very simple pattern: remove id and use start_url: ".". This article explains why that can help when you want multiple PWA-style icons from the same domain. What is the manifest.json id? id is the value used to identify a PWA. The browser uses it to decide whether the app being installed is the same app as one already installed, or a completely new app. In other words, it is like a name tag for the PWA. If the browser thinks the PWA […]

          Why start_url: “.” May Be the Best Choice for PWAs That Should Reopen the Same Page

          Why start_url: “.” May Be the Best Choice for PWAs That Should Reopen the Same Page In a PWA manifest, there is a setting called start_url. This setting tells the browser which URL should open first when the PWA is launched from the home screen. At first, it feels natural to write a fixed URL like "/lab" or "/app". But after testing different patterns in PWA LAB, I started to feel this: If there is no special reason to force a fixed page, start_url: "." may be the most natural choice. What is start_url? start_url is the URL that opens when the PWA is launched from the home screen. For example, if your manifest contains this: "start_url": "/lab" then opening the home screen icon will usually take the user to /lab. This is easy to understand. If your PWA is a top page or a fixed app-style entry point, this works fine. But there are more complicated cases. The problem: the page the user added and the page that opens can be different Imagine a user is viewing a page […]

            Why I Built PWA LAB: A Simple Place to Test Real PWA Behavior

            Why I Built PWA LAB: A Simple Place to Test Real PWA Behavior Why I built PWA LAB While working with PWA behavior and home screen support in OJapp, I kept thinking the same thing. Reading the specification is not enough to understand how it actually behaves. Write a manifest.json, register a Service Worker, set display to standalone, and the site should open like an app. As an explanation, that sounds correct. But when I actually tested it on iPhone and Android, it was not that simple. That is why I built OJapp PWA LAB. PWA LAB is an experiment page for testing PWA settings and status while actually seeing what is happening. Even if you write it by the book, it may not behave the same way A PWA can be made with HTML, manifest.json, and a Service Worker. But in real use, the behavior changes a lot depending on the browser and OS. Something may work well in Android Chrome but not behave as expected in iPhone Safari. Something may look fine on desktop Chrome but appear differently […]

              How to Check PWA Status: Mode, Service Worker, Push, and Installable Explained

              How to Check PWA Status: Mode, Service Worker, Push, and Installable Explained A PWA can be hard to understand if you only look at the page When you build a PWA, it can be surprisingly hard to tell whether it is actually working as a PWA. You may have written manifest.json, registered a Service Worker, and made the site addable to the home screen. But then you still wonder: is this really running as a PWA? Is the page opened as a normal website? Is it opened from the home screen in standalone mode? Is the Service Worker active? Is the browser treating it as installable? These things are not always obvious from the visual appearance alone. That is why I made a page called PWA LAB in OJapp. It is a simple experiment page for checking PWA status directly. In this article, I will use the status items shown in PWA LAB as examples and explain what to check when testing a PWA. MODE: is the page currently opened as a PWA? MODE shows whether the page is currently […]

                How PWA Offline Support Works: Service Workers, Cache API, and Files to Cache

                How PWA Offline Support Works: Service Workers, Cache API, and Files to Cache Conclusion: PWA offline support works by saving required files in advance To make a PWA work offline, you usually use a Service Worker. In simple terms, the browser saves files such as HTML, CSS, JavaScript, and images in advance. Then, when there is no network connection, the app can display the page using those saved files. So PWA offline support is not magic. It works because the files needed to run the app have already been cached. What you need for offline support When you add offline support to a PWA, there are three main things to think about. Service Worker Cache API A list of files to cache A Service Worker works like a background layer between the page and the network. When the page tries to load a file, the Service Worker can decide whether to fetch it from the network or return a saved version from the cache. What does a Service Worker actually do? A Service Worker is different from regular JavaScript. It […]

                  Why the PWA Install Button Does Not Appear: Common Causes and Fixes

                  Why the PWA Install Button Does Not Appear: Common Causes and Fixes Conclusion: the PWA install button only appears when the right conditions are met You may build what looks like a PWA, open it on a phone or PC, and still not see an install button. In most cases, this is not exactly a bug. It usually means the browser does not yet recognize the site as an installable web app. The common causes are a missing or incorrect manifest.json, an unregistered Service Worker, a non-HTTPS environment, or browser-specific install requirements that are not being met. A problem I ran into more than once While testing PWA behavior myself, I often hit the same confusing situation: the manifest was there, the page worked, but the browser still would not offer installation. That is what makes this problem annoying. From the outside, the site may look perfectly fine. But a PWA is not complete just because the HTML page works. The browser has to decide, “this is an installable web app.” If one required piece is missing, the install prompt […]

                    Why Can’t I Save Images on iPhone? Fix Long Press Not Working (2026 Guide)

                    Why Can’t I Save Images on iPhone? Fix Long Press Not Working (2026 Guide) “Why can’t I save images on my iPhone?” If you’ve ever tried to save an image from a website and it didn’t work, you’re not alone. Nothing happens when you long press No “Save Image” option appears The image is saved, but you can’t find it The truth is simple: There isn’t just one reason. There are multiple causes—and each requires a different fix. This guide will help you identify the problem and fix it step by step. First: What’s Your Situation? Before trying random fixes, find the situation that matches yours: A: Long press does nothing B: No “Save Image” option appears C: Image is saved but not found D: You’re using an in-app browser (Twitter/X, Instagram, etc.) Jump to the section that matches your issue. A: Long Press Not Working If nothing happens when you press and hold an image, here are the common reasons: 1. The website blocks image saving Some websites intentionally disable long press to prevent copying or downloading images. In […]

                      Is PWA Dead? The Reality in 2026 and How to Use It Correctly

                      Is PWA Dead? The Reality in 2026 and How to Use It Correctly “Is PWA dead?” A few years ago, Progressive Web Apps were expected to replace native apps. The idea was simple: build once on the web, and deliver an app-like experience everywhere. But in 2026, the situation looks very different. PWA is not dead. But the assumptions behind it have completely changed. 1. Why PWA Was So Promising PWA was designed to bring app-like capabilities to the web. No installation required Distributed via URL Offline support Push notifications In theory, this meant you could replace native apps with a single web-based solution. At the time, many believed that app stores might eventually become unnecessary. 2. The Reality in 2026: A Split Ecosystem Today, PWA behaves very differently depending on the platform. iOS (iPhone) Limited PWA support Unstable Service Worker behavior Offline features are not reliable Push notifications are restricted As a result, PWA does not fully work as an app replacement on iOS. Android Stable Service Worker support Reliable offline capabilities Working push notifications Near-native app experience On […]

                      OJapp Tips  -  PWA・ホーム画面追加の実機検証ブログ

                      OJapp Tips - Practical PWA & Home Screen UX Lab

                      OJapp Tips is a technical blog documenting real-world PWA behavior, iPhone Safari quirks, home screen installation, manifest.json, Service Worker, Web App Manifest, WebClip, icon cache issues, and practical web development tips based on actual testing with iPhone, Android, and PC.

                      The articles are based on hands-on experiments from PWA LAB and real development experience with OJapp, Petal, and OJ-Pass. Instead of only repeating official documentation, OJapp Tips focuses on the details developers actually get stuck on.