An iOS Wrapper application to create a native iOS App from an offline-capable Progressive Web App.
Looking for Android or Desktop?
Check out my other projects:
For bringing offline-capabilities to your Web App on Safari and iOS' embedded WebKit browser, you have to use AppCache. Service Worker API is not yet supported in WebKit, so you might want to use something like Appcache Webpack Plugin to make your PWA offline-accessible on iOS in a somewhat easy way.
Why would I use a wrapper?
I know, using a Wrapper-App to display a Website can feel a bit odd. But there are a few good reasons why you'd package your Web App like this.
- If you've got a very sophisticated UI already, it might make sense not to rebuild it from scratch for multiple platforms, especally if it's a Single Page Application already, that doesn't "feel" like a Website.
- There might be as well less competition for a given niche on App Stores, in comparison to Google directly. With leasingrechnen.at, I've got easily into the Top 10 Apps on Google Play for my country, whereas Google Search put me on page 9 as the Site is relatively new.
What it does
- Provides a native iOS navigation header.
- Sets up a WKWebView instance just the way PWAs/SPAs like it.
- Provided your Web App is Offline-capable, it only needs an Internet connection on the first startup. If this fails, it shows a native refresh widget.
- Opens all external URLs in the device's Browser / 3rd party apps instead.
- Automatically fetches updates of your Web App.
How to build your own
- Clone/fork repository and open in Xcode
- Head over to
- add your app's name and the main URL to fetch
- set the host you want to restrict your app to
- customize the colors
- tweak the other options as you prefer
- Put your own App icons in place in
- Remember, 1pt equals 1px on 1x-size. E.g., if you have to provide a 20pt icon of 3x-size, it has to be 60x60px.
- iOS doesn't like transparency, use background colors on your icons.
- I like using App Icon Maker, but any other similar service will do it as well.
- Don't forget the
- In the Project Overview
- change Bundle Identifier and Display Name
- add your Certificates and tweak the rest as you wish
- a Deployment Target of iOS 10.0 is set by default, as the offline cache isn't preserved after closing the app in earlier versions. Therefore, the wrapper is only tested on iOS 10+ and there's no official support for earlier versions for now.
- Build App in Xcode
I don't accept Feature Requests, only Pull Requests :)
GNU General Public License v3.0 - if you use it, we wanna see it! Other licensing options are available on inquiry.
Help us keep the lights on
v1.0 - Nov 5, 2017
All the desired functionality is there and working.
- Web App is fetched upon first start (shows Progress Bar and Activity Indicator Spinner)
- Refresh widget if user is offline upon first run
- The App is cached on the device (if it's using AppCache) and is available offline