Do it yourself
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main pageApp Store rejection
The WebViewGold Xcode project supports dozens of native features, so it ships with permission texts for all of them. Apple expects an app to declare only what it uses. Fifteen minutes in Info.plist and the Capabilities tab turn a 2.5 rejection into an approval.
From $109 one-time per platform, or let our team do it all from $698.
Section 2.5 covers software requirements. 2.5.1 asks apps to use only public APIs and to use them for their intended purpose; reviewers extend this to capabilities and permissions an app declares but never exercises. 2.5.4 says background modes may only be enabled for the purpose they are meant for (audio, location, VoIP and so on). 2.5.6 requires apps that browse the web to use WebKit, which is exactly what WebViewGold's WKWebView does, so that rule is on your side.
The rejection reads like "Your app includes a usage description for Contacts but we could not find a feature that uses it". Apple's automated checks and the reviewer both look at Info.plist and the entitlements; a recipe app that asks for NFC looks suspicious to both.
| Permission (Info.plist purpose string) | Used by | Keep it if |
|---|---|---|
| Tracking usage description | App Tracking Transparency, AdMob | Always. The docs state this key is required and that removing it crashes the app. Keep it even without ads. |
| Camera | File uploads from camera, qrcode:// and barcodescanner:// scanners, document scanner, flashlight | Your web app has a camera upload, a scanner or a flashlight button. |
| Photo library (read / add) | Image uploads from the gallery, the file downloader saving images | Users upload or save pictures in your app. |
| Location when in use | HTML5 geolocation with native permission | Your web app calls the geolocation API. Set purpose text that names the feature ("to find gyms near you"). |
| Location always + Background Modes: Location updates | backgroundlocation option | Only with backgroundlocation set to true and a real background use case. Otherwise delete both. |
| Face ID | enableBioMetricAuth or the bioauth:// API | You use biometric login. The biometric docs show the required key. |
| Contacts, Calendars, NFC | Contacts API, iCal API, NFC plugin | You enabled that specific API. Delete otherwise. |
| Background Modes: Audio | HTML background audio | Your app plays audio while minimized (radio, podcasts). Delete otherwise. |
Open Info.plist in Xcode, look at every "Privacy - ... Usage Description" entry and remove the ones for features not on your list. Keep the Tracking Usage Description. The publishing docs describe this step.
Replace the template text with the purpose in your words: "Scan the QR code on your gym card to check in", not "This app needs camera access". Specific text helps with Guideline 5.1.1 as well.
Background Modes should list only what you use: Remote notifications for push, Location updates only with backgroundlocation, Audio only for background playback. Remove capabilities you added while experimenting.
If you do not use push, set askforpushpermissionatfirstrun to false so no notification dialog appears. If you use push but want to ask later, keep it false and call registerpush:// after onboarding.
Each remaining permission should pop up at the moment the related feature is used and nowhere else. Then upload the new build and reply in Resolution Center with the list of removed keys.

With a good optimized version of your web app you can have a stunning mobile app within a couple of minutes. Additionally to that the customer service is very nice and very helpful! I can just recommend WebViewGold :-)
bioauth:// and enableBioMetricAuth use.Audit this WebViewGold iOS project for unused permissions. 1) Read Config.swift and list every native feature that is enabled (push, biometrics, geolocation, scanners, AdMob, file downloads, contacts, NFC, background audio, background location). 2) Read Info.plist and list every Privacy usage description key. 3) For each key, tell me whether an enabled feature needs it. 4) Produce the edited Info.plist with the unneeded keys removed, but keep NSUserTrackingUsageDescription in all cases. 5) Rewrite the remaining purpose strings so each names the concrete feature in my app: [describe your app]. 6) Tell me which Background Modes entries in Signing and Capabilities I should remove. Do not change anything else in the project.
Only the feature tied to that key. If you enable the QR scanner in a future update, add the camera usage description back in the same update. Removing the tracking key is the one change that breaks the app itself.
Check Signing and Capabilities in Xcode. A background mode may have been enabled while following a tutorial for push or location. Remove it there, rebuild and resubmit.
The Cloud Builder produces the app from the features you enable in the browser, so you do not edit Info.plist yourself. Enable only the features you use and write purpose texts for them.
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
$109 per platform, one-time
The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.
See plans on the main page$349 per license, one-time add-on
No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.
How the Cloud Builder works Try the free demo$698 per platform $798
Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.
Full Service details Powered byWinter Sale prices valid until December 31, 2026.
App Store & Google Play approval guarantee – or your money back within 14 days
Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.
Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.