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 pageClaude Code
Each prompt below fixes one thing reviewers reject web-based apps for. They are written for Claude Code working in your repository, assume the app will run inside WebViewGold, and tell the agent exactly which native URL scheme to call. Paste one, review the diff, deploy, next.
From $109 one-time per platform, or let our team do it all from $698.
Run them in order the first time; later you will only need one at a time. Each prompt asks the agent to commit separately and to report what still needs a human decision. Two conventions keep the prompts short: the native apps identify themselves with a custom user agent that contains the token WebViewGoldApp (set in Config.swift via useragent_iphone / useragent_ipad and in Config.java via USER_AGENT), and native features are called by assigning a URL scheme to window.location.href, as documented in the WebViewGold docs.
If the agent cannot find something it needs (an auth provider, a payment table), it will ask. Answer with specifics; vague answers produce vague code. For the context file that makes all of this automatic, see the CLAUDE.md template.
After the prompts: deploy, open the deployed URL in the WebViewGold app (or the Cloud Builder preview) and click through every screen on a real device. The agent can fix code; it cannot see that a button is covered by the keyboard. Then run the readiness check and the Play Store check on your URL.
Audit this web app for use inside a native iOS and Android WebView app and fix what you find. Check: viewport meta tag; no horizontal overflow from 320 px to 1024 px; tap targets at least 44 x 44 px; fixed headers, footers and bottom navigation padded with env(safe-area-inset-top) and env(safe-area-inset-bottom) so nothing hides behind the notch or the home indicator; no hover-only menus; font sizes of at least 16 px in inputs so iOS does not zoom; no desktop-only sidebars; no element that relies on a mouse. Also make the first paint fast: lazy-load heavy components and show a skeleton instead of a blank screen. Report every file you changed and anything you could not fix automatically.
Create /privacy and /terms pages for this app. First inspect the codebase and list every category of personal data we actually collect or process: auth provider and what it stores, database tables with user data, analytics or error tracking SDKs, payment providers, push notification services, third-party APIs that receive user content. Write the privacy policy from that list in plain English with sections for data collected, purpose, third parties, retention, user rights, account deletion (link to /delete-account), contact email, and a note that the iOS and Android apps load this same service. Do not invent practices we do not have. Link both pages from the footer and the settings screen, make them readable on a 320 px screen, and mark any statement you are unsure about with TODO so I can confirm it.

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 :-)
Apple guideline 5.1.1 and Google Play require that users who can create an account can also delete it inside the app. Implement this: a Delete account button in settings with a confirmation dialog that explains the consequences; a server-side function (edge function, API route or cloud function using the admin or service-role credentials only on the server) that deletes all rows belonging to the authenticated user and then the auth user itself; after success, sign the user out and show a confirmation screen; a public /delete-account page that explains the steps for users who no longer have the app installed and offers an email contact. If subscriptions exist, explain in the dialog that the store subscription must be cancelled separately in the App Store or Google Play settings. Add tests for the server function if the project has a test setup.
Reviewers reject apps that show blank screens or raw errors (Apple 2.1, Google Play broken functionality). Go through every data fetch and every route in this app and make sure each has: a loading state (skeleton or spinner), an empty state with a helpful sentence and a primary action, and an error state with a readable message and a Retry button. Add a global error boundary with a friendly fallback. Handle network failures explicitly: when fetch fails because the device is offline, show a message that says so instead of a generic error. Remove console errors and unhandled promise rejections. List the routes you touched.
Our native iOS and Android apps load this web app with a custom user agent that contains the token WebViewGoldApp. Add a small utility isNativeApp() that checks navigator.userAgent for that token, and a data attribute or class on the html element (for example data-native-app) that CSS can target. Then, only when running inside the native app: hide the cookie banner if it is not legally required for app users, hide any Download our app or Open in app promotion, hide the top website header and footer links to marketing pages, hide external social media links or open them with target=_blank so the wrapper can route them to the system browser, and show the bottom tab navigation instead of the desktop menu. Keep the normal website behavior unchanged for browsers.
This app offers Google login (and possibly other third-party logins). Apple guideline 4.8 requires an equivalent privacy-focused option, and Sign in with Apple is the standard answer. Add it using the Apple provider of our auth library (Supabase Auth, Firebase Auth, Auth.js or Clerk: detect which one we use and follow its documented Apple provider setup). Place the Apple button with the same size and prominence as the Google button, following Apple's button guidelines. Handle the case where Apple returns the name only on the first login by storing it on first sign-in. Write down the dashboard steps I must complete in the Apple Developer portal (Services ID, key, return URL) as a checklist in SETUP-APPLE-LOGIN.md. Note: inside the native app, the WebViewGold wrapper detects appleid.apple.com automatically and handles the popup, so no app-specific code is needed for the flow itself.
Inside the iOS and Android apps, digital products and subscriptions must be sold through in-app purchase (Apple 3.1.1, Google Play billing), not through our Stripe checkout. The WebViewGold wrapper integrates RevenueCat and starts a purchase when the page navigates to revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID (the product ID as shown in the RevenueCat console; external_id is our user ID so RevenueCat can attribute the purchase). Implement: when isNativeApp() is true, the Upgrade and Buy buttons set window.location.href to that scheme with the current user ID and the matching product; in browsers keep Stripe. Add a server endpoint that receives RevenueCat webhooks, verifies the authorization header, and updates the user's entitlement in our database so the web app can unlock features on the next load. Add a Restore purchases link and a Manage subscription link that explains subscriptions are managed in the App Store or Google Play settings. Do not show Stripe prices or external payment links inside the native app.
The native apps support push notifications through WebViewGold. The system permission prompt is triggered when the page navigates to registerpush://, and the current status can be read by navigating to checkNativePushPermissions:// which injects a JavaScript variable nativePushEnabled (true or false) a moment later. Build an opt-in screen that appears once after onboarding or first login, only when isNativeApp() is true: it explains in one sentence what we will send (for example order updates and replies), with an Enable notifications button that navigates to registerpush:// and a Not now link that remembers the choice in localStorage for 30 days. In settings, add a Notifications row that checks nativePushEnabled and, if notifications are off, shows a link that navigates to settingsapp:// to open the system settings. Never trigger registerpush:// on the very first screen of the app.
Prompts 5, 7 and 8 rely on detecting the app. Set useragent_iphone and useragent_ipad in Config.swift and USER_AGENT in Config.java to your usual browser user agent string plus the token WebViewGoldApp, and the detection works on both platforms.
Yes, but commit between them. Separate commits make it easy to revert one change if a reviewer or a user hits a problem.
You can: the custom.css file in both projects is injected into every page. User agent detection in your own code is more flexible (it can change logic, not only styles) and ships with your deploys instead of a new app build.
Skip prompt 7. The in-app purchase rules only apply to digital goods and subscriptions used inside the app. Physical goods and services consumed outside the app may keep their web checkout.
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.