This guide walks through building an iOS-capable PWA, packaging it for the App Store with PWA Builder, and handling common OAuth needs.
Prepare a web manifest
- Generate via Progressier’s PWA Manifest Generator: https://progressier.com/pwa-manifest-generator
- Or follow MDN docs: https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest
- Place the resulting
manifest.json
in your site’sstatic
folder and link it in your HTML head:<link rel="manifest" href="/manifest.json" />
Create an Apple App ID
- Go to Apple Developer portal → Certificates, Identifiers & Profiles
- Create a new Identifier (App ID)
Prepare your site for PWA Builder
- When the application is ready, open PWA Builder (web or desktop)
- Paste your website URL in the field to analyze PWA readiness
Build the iOS package
- After the checks complete, choose “Package for store”
- Select the iOS platform
Configure app properties
- Set all app metadata (name, icons, display mode, etc.) as prompted
- Set all app metadata (name, icons, display mode, etc.) as prompted
Bundle ID
- Use the Bundle ID value from the App ID you created in step 2
Configure OAuth domains (important for sign-in)
- Most apps use OAuth 2.0; define permitted URLs in PWA Builder
- For Apple Sign in: add
appleid.apple.com
- Google auth is not fully supported for iOS (per PWA Builder), but you can try adding:
accounts.google.com
oauth2.googleapis.com
accounts.youtube.com
Install CocoaPods dependencies
- Download and extract the iOS archive
- Open
src
in Terminal and run:pod install
Open the project in Xcode
- Go to
src
and open the.xcworkspace
- Log in to Xcode with your Apple ID
- Signing & Capabilities: enable “Automatically manage signing” and select your team (e.g., “better integration”)
- General tab: set your custom values (version, build, display name, etc.)
- Replace app assets with your own. You can generate icons at https://icon.kitchen
- Go to
Enable Google auth navigation (if needed)
- Continuing step 7: open the WebView file
- Set
config.limitsNavigationsToAppBoundDomains = false
Archive and distribute
- Product → Archive, then Distribute your archive
Submit via App Store Connect
- Create a new app, fill in all required fields
- In the Build section, select the archived build you uploaded
- Submit for review
Notes
- Apple login should work with the allowed domain. Google sign-in may still have limitations on iOS PWAs; the above domain list and WebView setting improve the chances.
- Validate your PWA’s manifest, icons, and service worker before packaging to reduce store rejection risk.
- Android PWA: Build and Publication Guide