What "website app" means and which route fits your situation
A website app is a web page that users can install on their phone or computer like a native app, even though it runs in a browser. You are not building a separate iOS or Android app — you are making your existing website installable. The browser handles the installation and runs the code you already have.
There are two practical routes: a Progressive Web App (PWA), which works on any device and any browser, and a web wrapper, which packages your website inside a native app shell. PWAs are faster to build and cost nothing extra. Web wrappers give you an app store listing and more control over how the app behaves offline, but they require separate builds for iOS and Android.
Most small businesses and content sites use PWAs. Web wrappers make sense if you need an App Store or Google Play presence, or if your users expect offline functionality that a PWA cannot provide.
Key Takeaways
- A Progressive Web App lets users install your website from the browser without building a separate native app, and works on phones, tablets, and desktops.
- You need three things to make a PWA: a manifest file that describes your app, a service worker that handles offline behavior, and HTTPS encryption on your domain.
- Web wrappers like Capacitor or React Native let you submit to the App Store or Google Play, but require separate code for iOS and Android.
- PWAs cost nothing to host beyond your regular website hosting, while app store submissions may have one-time or annual fees.
Building a Progressive Web App with a manifest file
The first step is creating a manifest.json file in your website's root directory. This file tells the browser what your app is called, what icon to display, what color the browser bar should be, and whether it should open in fullscreen or windowed mode. Here is a minimal example:
Save this as manifest.json in your root folder, then link it in the <head> of every page with <link rel="manifest" href="/manifest.json">. The browser reads this file when a user tries to install your app and uses the name, icons, and display settings you provide. Icons should be at least 192×192 pixels; 512×512 is better for high-resolution displays.
The "start_url" tells the browser which page to load when the user opens the installed app. The "display" field controls how it looks — "standalone" hides the browser address bar and makes it feel like a native app, while "browser" keeps the full browser interface.
Adding a service worker for offline support
A service worker is a JavaScript file that runs in the background and intercepts network requests. It lets your app work offline by caching pages and assets the first time a user visits them. Without a service worker, your PWA will still install, but it will not work if the user loses internet connection.
Create a file called service-worker.js in your root directory. A basic service worker caches your home page and key assets on first visit, then serves them from cache if the network is down. Register it in your main HTML with a script tag in the <head> or <body>:
This code tells the browser to register your service worker when the page loads. The service worker itself listens for install events (cache files), activate events (clean up old caches), and fetch events (serve from cache if offline). For most websites, caching the home page, CSS, and JavaScript is enough. Do not cache user data or frequently changing content.
Enabling HTTPS and testing installation
Your website must use HTTPS (not HTTP) for a PWA to work. This is a security requirement — browsers will not let users install an app from an unencrypted connection. If your site is still on HTTP, contact your hosting provider or use a free SSL certificate from Let's Encrypt.
Once HTTPS is live and your manifest and service worker are in place, open your website in Chrome, Edge, or Firefox on a phone or desktop. You should see an install prompt — usually a button in the address bar or a menu option. Click it to install. If you do not see a prompt, open Developer Tools (F12), go to the Application tab, and check the Manifest section for errors.
Test the offline behavior by opening Developer Tools, going to the Network tab, and checking "Offline". Reload the page. If your service worker is working, the page should load from cache. If it goes blank, your service worker is not caching correctly — check the console for errors.
Using a web wrapper to reach the App Store or Google Play
If you need an app store listing, use a web wrapper like Capacitor (made by Ionic) or React Native Web. These tools package your website inside a native app shell, which you can then submit to Apple and Google.
Capacitor is the easiest route for existing websites. Install it with npm, point it to your website URL, and it generates iOS and Android projects. You then submit those projects to the App Store and Google Play using Xcode (for iOS) and Android Studio (for Android). Each store has its own submission process and may charge a fee — Apple charges $99 per year for a developer account, Google charges $25 once.
The downside is that you now maintain three versions of your app: the website, the iOS build, and the Android build. If you change your website, you have to rebuild and resubmit to both stores, which can take days or weeks for approval. For this reason, web wrappers make sense only if you need the app store presence or if your users expect offline functionality that a PWA cannot provide.
Choosing between PWA and web wrapper
Use a PWA if your users have modern phones and browsers, your app does not need to work offline, and you do not need an app store listing. PWAs are free to host, install instantly, and update automatically when you change your website. They work on Android, iOS, Windows, and Mac.
Use a web wrapper if you need an App Store or Google Play listing, your users have older devices that do not support PWAs well, or your app must work fully offline. Web wrappers cost money to submit and maintain, but they give you an official app store presence and more control over offline behavior.
A common approach is to build a PWA first, then add a web wrapper later if your users ask for it. Start with the manifest and service worker — they take a few hours and cost nothing. If you find that users want an app store listing, you can wrap your existing website without rewriting it.
Common mistakes and how to avoid them
The most common mistake is forgetting HTTPS. Your PWA will not install without it, and browsers will not show an install prompt. Check your hosting control panel or SSL certificate settings before you start.
The second mistake is a service worker that caches too much. If you cache your entire website, users will see stale content even after you update it. Cache only static assets like CSS and JavaScript, and let the service worker fetch fresh HTML and data from the network on every visit.
The third mistake is not testing on real devices. The install prompt looks different on Chrome, Firefox, Safari, and Edge, and some older phones do not support PWAs at all. Test on at least one Android phone and one iOS device before you launch.
The fourth mistake is submitting a web wrapper to the app store without testing it first. App store review takes time, and if your wrapper has bugs, you will have to fix them and resubmit. Use Android Studio and Xcode to test your app on a simulator before you submit.
Frequently Asked Questions
Can I make a PWA if my website is built with WordPress or Shopify?
Yes. You can add a manifest file and service worker to any website, regardless of the platform. If your hosting does not let you upload files to the root directory, contact support — most hosts allow it. Some platforms like Shopify have PWA plugins that do this for you automatically.
Will my PWA work on iPhone?
Yes, but with limits. iOS 16.4 and later support PWA installation and offline caching. Older iPhones will not show an install prompt. Users on iOS 16.4+ can add your PWA to their home screen, but it runs in a limited browser environment and cannot access some device features like the camera or microphone.
Do I need to know how to code to make a PWA?
You need to be comfortable editing JSON and JavaScript files, or you need a developer to do it for you. If you use a website builder like Wix or Squarespace, check whether they offer PWA features built in — many do. If your site is custom-built, a developer can add PWA support in a few hours.
How much does it cost to submit an app to the App Store or Google Play?
Google Play charges a one-time $25 fee to register as a developer. Apple charges $99 per year for a developer account. Both charge nothing per app submission, but Apple reviews each submission and may reject it if it does not meet their guidelines. Resubmission is free.
Can users uninstall a PWA the same way they uninstall a native app?
Yes. On Android, PWAs appear in the app drawer and can be uninstalled like any other app. On iOS, they appear on the home screen and can be removed by long-pressing and selecting "Remove App". The process is the same as removing a native app.