From a Codex-built web app to the App Store and Google Play with WebViewGold
Codex writes the web app; the stores want an app. The gap is smaller than it looks: a public HTTPS URL, a handful of store rules your agent can fix in one session, and a WebViewGold project that turns the URL into a native iOS and Android app. Here is the complete workflow in the order that avoids rework.
From $109 one-time per platform, or let our team do it all from $698.
Approval guarantee – or money back within 14 days
No coding needed
One-time payment, free updates
24/7 human support
Made in Germany since 2014 · ISO 27001
9:41
Your app
Your appNow live in your pocket
App Store · Google Play Approved
Which Codex are we talking about?
OpenAI Codex is the agentic coding tool behind this guide: the Codex CLI in your terminal, the Codex extension inside VS Code or Cursor, and Codex in the cloud, which runs tasks in a sandboxed container connected to your GitHub repository and hands back pull requests. All three read the same AGENTS.md file in your repository, and all three can do the store-readiness pass below. If you built the app in ChatGPT itself (Canvas, or by pasting code back and forth), the workflow is identical once the code lives in a repository.
What Codex cannot do is sign an iOS binary or fill out App Store Connect. That part is WebViewGold plus the two developer consoles, and it is mostly forms. Deploy first, fix the store rules second, configure the native project third: it only needs your final URL.
The workflow
Six steps; the technical ones take an afternoon, the rest is waiting for accounts and reviews.
Deploy to a permanent HTTPS URL
Push the repository to GitHub and deploy with Vercel, Netlify, Cloudflare Pages, Render or your own server. localhost, tunnels and Canvas previews are not acceptable app URLs: the reviewer opens the app days later from a different network. Use your own domain if you can (why a custom domain pays off).
Run the store-readiness pass with Codex
Paste the prompt below into a Codex session in the repository. It audits the mobile layout, adds the legal pages, account deletion, error states and the app-only tweaks, and reports every change. Review the diff, deploy, and run the free App Store readiness check on the URL.
Configure WebViewGold
iOS: set webviewurl and host in Config.swift. Android: set HOME_URL and HOST in Config.java. Then switch on what your app uses: push (OneSignal, Firebase or Pushwoosh), the offline screen, Social Login Helper triggers for Google or Facebook login, RevenueCat keys if you sell digital goods. Name, icon and splash screen live in the same projects; the Cloud Builder offers the same options as a form in the browser.
Build
Xcode: archive and upload to App Store Connect. Android Studio: generate a signed App Bundle and keep the keystore safe; every future update must be signed with it. No Mac or IDE? The Cloud Builder compiles both apps in the browser and uploads them to both consoles.
Create the listings
Screenshots from the real app (not the website), a description that matches what the reviewer will see, the privacy policy URL, Apple's App Privacy answers, Google's Data safety form, the content rating, and review notes with a demo account. ChatGPT drafts most of it well; see ChatGPT for the privacy policy and listing.
Submit, and start the Play test on day one
Submit the iOS build; Apple usually answers within 24 to 48 hours. On Google Play, a personal developer account created after 13 November 2023 must first run a closed test with 12 testers for 14 days, so upload to a closed testing track immediately and recruit testers while Apple reviews. Google's own review takes a few days.
The store-readiness prompt for Codex
Run it in the repository root. Codex works through the list, edits the files and summarizes the changes; you review the diff before deploying. Replace MYAPPNATIVE with the user agent marker you will set in WebViewGold.
Paste into Codex (CLI, IDE extension or cloud task)
You are preparing this web app for publication as native iOS and Android apps. It will run inside a native WebView wrapper (WebViewGold) that loads our production URL. Work through every item, edit the code, and finish with a list of all changes and anything you could not do.
1. Mobile layout: meta viewport with width=device-width and viewport-fit=cover; no horizontal overflow from 320px to 1024px; tap targets of at least 44x44px; fixed headers, footers and bottom sheets padded with env(safe-area-inset-top) and env(safe-area-inset-bottom); no hover-only interactions; inputs with a font-size of at least 16px.
2. Legal pages: add /privacy and /terms as real routes (not modals), linked from the footer and the settings screen. Use square-bracket placeholders for company name, address and email, and list every third-party service this codebase actually calls (check package.json and the API routes).
3. Account deletion: if users can sign up, add a Delete account action in settings with a confirmation dialog, backed by a server-side function that deletes the user record and related data, plus a public /delete-account page.
4. Error and offline states: every data fetch needs loading, empty, error and retry states. No white screens, no raw error objects.
5. App-only UI: when navigator.userAgent contains the marker MYAPPNATIVE, hide Download our app banners, cookie banners that are not legally required, the desktop header and external promotional links. Put the detection in one helper function.
6. Login: if Google, Facebook or another third-party login exists, add Sign in with Apple as an equal option, or report what the auth provider needs. Keep email or magic-link login working.
7. Payments: list every place where a digital product, subscription or credits can be bought. Do not change payment code yet; we will route it through in-app purchases.
8. Hygiene: no placeholder text, no dead links, no console errors on the main flows, page title set to the app name, meta description present, no mixed content.
Do not add native SDKs or build tooling; the native side is handled by the wrapper. Keep all existing functionality working.
Great work! Never coded anything but managed to work with this. Easy and fast! Also with great help from the creators!
Optional: an Enable button that opens registerpush:// at the right moment
OneSignal, Firebase or Pushwoosh keys; first-run permission prompt on or off
Push capability (iOS)
Sign in with Apple
Button and auth provider setup
Handled automatically; Social Login Helper triggers for Google and Facebook
Sign in with Apple capability
In-app purchases
Buy buttons that open revenuecat://purchase?external_id=…&product=…
RevenueCat API key and project ID
Products, prices, banking and tax forms
Native touches that make the app feel like an app
Push notifications
Enable OneSignal, Firebase or Pushwoosh in the WebViewGold project, turn off the first-run prompt, and let your web app ask after the first meaningful action with window.location.href = "registerpush://". For reviewers, push is the clearest sign of app functionality.
Offline screen
WebViewGold shows a native offline screen with a retry button when the device has no connection, and can serve a local HTML fallback. Your web app still needs error states for requests that fail mid-session.
Share sheet and haptics
Open the system share sheet with shareapp://message?=Check this out&url=https://app.example.com/item/42; confirm actions with successhaptic://. One-line calls, visible native behavior.
Face ID / fingerprint
Call bioauth:// before a sensitive screen; on iOS WebViewGold then calls onBioAuthSuccess(), onBioAuthFailure(code, message) or onBioAuthUnavailable() in your page. Keep a server-side check behind it.
Before you press Submit
The URL in Config.swift / Config.java is the production domain, not a preview or tunnel.
Demo account in the review notes works on the first try, and the reviewer can reach every screen with it.
Sign-up exists → Delete account exists. Social login exists → Sign in with Apple exists.
Digital goods inside the app go through in-app purchases; Stripe stays on the web.
Screenshots come from the built app; the description does not mention beta, Android (on iOS) or missing features.
Frequently asked questions
Do I need to know Swift or Kotlin?
No. WebViewGold is a finished Xcode project and a finished Android Studio project; you change configuration values, not native code. With the Cloud Builder you do not open an IDE at all.
Can Codex configure the WebViewGold project itself?
For the text parts, yes: Config.swift and Config.java are plain source files, so you can open the WebViewGold project in a Codex session and ask it to set the URL, host and feature flags. Signing, certificates and the store uploads stay with you (or the Cloud Builder).
Is a wrapped web app allowed in the App Store?
Yes, when it offers real functionality and behaves like an app. Apple's Guideline 4.2 targets repackaged websites with no added value; push notifications, offline handling, native sharing and a clean mobile layout are what reviewers look for. 96.4% of all WebViewGold apps get approved by the review teams on the first attempt.
Does the web app need to change when I update the native app?
No. Content and features ship by deploying the web app; the native app only needs a new build when you change native configuration (push provider, icon, name, a new WebViewGold version).
Three ways to get your app into the stores
Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.
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.
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.
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.