Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

Gemini CLI

From Gemini CLI to the App Store and Google Play: GEMINI.md, Firebase Hosting and WebViewGold

Gemini CLI can build and deploy your web app from the terminal; WebViewGold turns the deployed URL into native iOS and Android apps. This guide gives you a GEMINI.md that keeps every change store-safe, a Firebase Hosting deploy path, a paste-ready readiness prompt and the settings for Config.swift and Config.java. One 2026 change comes first: Google moved consumer accounts from Gemini CLI to Antigravity CLI, so check which tool you are actually running.

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

What you are building

A WebViewGold app is a native iOS or Android project whose main screen is a WebView pointed at your production URL. Gemini CLI never has to produce Swift or Kotlin for this: it keeps working on the web project, you deploy, and both store apps show the new version on the next launch. The native side is a short list of documented options in Config.swift and Config.java, plus your icon, name and signing.

Gemini CLI is a good fit because it already lives where the work happens. It reads your files, proposes edits and runs shell commands (with your approval, or directly through ! shell mode), so the same session can fix a layout bug, run the build and call the Firebase CLI. When you also want it to see the WebViewGold projects, add their folder with /directory add or start with --include-directories, and keep signing out of its reach.

If you started in Firebase Studio (which Google is winding down: no new workspaces since June 22, 2026, shutdown on March 22, 2027) or exported a prototype from Google AI Studio, export the code to a local folder or GitHub and continue here. Your Firebase Auth, Firestore and App Hosting backends keep running independently of those editors. Comparing tools first? The AI coding agents overview covers every agent we have guides for.

A GEMINI.md that keeps the agent store-aware

Gemini CLI loads ~/.gemini/GEMINI.md plus every GEMINI.md in your workspace and its parent folders, concatenates them and sends them with each prompt (documentation). Run /init to draft one from your code, then add a section like this. /memory show displays exactly what was loaded.

markdown
# Project context

## Native app context (WebViewGold)
- This web app also ships as iOS and Android apps built with WebViewGold. The apps
  load https://app.example.com in a WKWebView / Android WebView. Every deploy is live
  in both apps; only changes in ios/ or android/ need a new store build.
- Hosting: Firebase Hosting, static build in dist/. Deploy only when I ask, with
  `npm run build && firebase deploy --only hosting`.
- The apps send a custom user agent containing the token WebViewGoldApp.
  Branch on isNativeApp() in src/lib/native.ts, never on generic WebView sniffing.
- Native features are URL schemes handled by the wrapper (registerpush://,
  getonesignalplayerid://, shareapp:// ...). Use only schemes documented in
  https://www.webviewgold.com/llms-full.txt and keep a browser fallback.

## Store rules every change must respect
- Layout works from 320 px wide; fixed bars use env(safe-area-inset-*);
  tap targets at least 44 x 44 px; no hover-only controls.
- /privacy, /terms, /delete-account and the in-app Delete account action keep working.
- Sign in with Apple stays next to any other social login (Apple 4.8).
- No new web checkout for digital goods without asking me (Apple 3.1.1).
- No popup windows for sign-in or payment inside the app.
- Only publishable keys in client code. A Gemini API key, Stripe secret key or
  service account never goes into a VITE_ variable or into src/.

## Out of bounds
- Do not edit ios/ or android/ unless the task says so.
- Never touch signing, provisioning, keystores or the WebViewGold purchase code.

@./docs/store-checklist.md

I am very happy I bought this app! Extremely easy and great documentation. Was in contact with the customer service, they replied very quickly and very friendly. They solved my question within a day. 10/10 would recommend.

Nelis Geiger · CodeCanyon

Using AGENTS.md and the Firebase MCP server

Already have an AGENTS.md for Codex or other agents, or planning to move to Antigravity CLI? Keep one file and tell Gemini CLI to read it via context.fileName in the project's .gemini/settings.json. The same file can register the Firebase MCP server, which gives the agent Firebase tools (including a deploy tool) on top of plain shell commands. The AGENTS.md template and the CLAUDE.md template contain longer rule sets you can merge in.

json
{
  "context": {
    "fileName": ["AGENTS.md", "GEMINI.md"]
  },
  "mcpServers": {
    "firebase": {
      "command": "npx",
      "args": ["-y", "firebase-tools@latest", "mcp"]
    }
  }
}

From terminal to store: the workflow

Plan for a day of work; accounts and store reviews are the slow part.

  1. Finish the web app locally

    Let Gemini CLI build features as usual, but test every screen at a phone width (375 px in your browser's device toolbar) from the start. Ask it to add the isNativeApp() helper early so later prompts can rely on it.

  2. Deploy to Firebase Hosting

    Run the one-time setup below yourself (firebase login opens a browser), then let the agent run builds and deploys with your approval. Your site is served at PROJECT_ID.web.app; connect a custom domain in the Firebase console before you build the apps, because the URL is compiled into them. Server-rendered Next.js or Angular apps belong on Firebase App Hosting instead (Blaze plan required).

  3. Run the store-readiness prompt

    Paste the prompt below. Start in Plan Mode (/plan) if your version offers it, read the plan, then let it implement. Enable checkpointing in settings so /restore can undo a bad edit.

  4. Add native value

    Reviewers apply Guideline 4.2 to web-based apps. Push notifications are the usual answer: on iOS set askforpushpermissionatfirstrun to false and call registerpush:// after onboarding, then store the subscription ID from getonesignalplayerid:// (or getfirebaseplayerid://) on the user profile.

  5. Configure WebViewGold

    iOS (Config.swift): host, webviewurl, useragent_iphone, useragent_ipad, push switches. Android (Config.java): HOST, HOME_URL, USER_AGENT, PUSH_ENABLED or FIREBASE_PUSH_ENABLED. The table further down maps each setting.

  6. Build and submit

    Xcode and Android Studio if you have them; otherwise the Cloud Builder builds both apps in the browser and uploads them to App Store Connect and the Play Console. Ask Gemini CLI to draft the privacy answers and review notes from the real code, then submit.

Firebase Hosting commands the agent can run

In firebase init hosting, choose your build folder (dist for Vite, build for Create React App) and answer yes to the single-page app rewrite if you use client-side routing.

bash
# one-time setup (run the login yourself, it opens a browser)
npm install -g firebase-tools
firebase login
firebase init hosting

# every release
npm run build
firebase deploy --only hosting

# temporary preview URL, e.g. for a test build of the app
firebase hosting:channel:deploy store-check --expires 7d

The store-readiness prompt for Gemini CLI

It asks for a plan first, because several items (auth, payments) need your decision before code changes.

Paste into Gemini CLI in your project root
Read GEMINI.md first. This web app will also ship as native iOS and Android apps through WebViewGold, which loads our Firebase Hosting URL in a WebView. Audit the project and give me a numbered plan before you change anything. Wait for my OK.

Audit:
1. Mobile: viewport meta tag, no horizontal scroll from 320 px, safe-area padding on the fixed header and tab bar, 44 px tap targets, no hover-only menus.
2. Firebase Auth: list every sign-in method and every signInWithPopup call (popups are unreliable inside an embedded WebView). Explain the WebView-safe options; do not switch flows yet. Remind me to add our custom domain under Authentication > Settings > Authorized domains.
3. Sign in with Apple: if Google or another social login exists, plan the Apple provider as an equal option.
4. Account deletion: a Delete account action in settings backed by a callable Cloud Function or server route that deletes the user's Firestore documents, Storage files and Auth record, then signs out. Plus a public /delete-account page.
5. Privacy: /privacy and /terms routes written from what the code actually collects (Analytics, Crashlytics, Firestore fields, third-party SDKs).
6. Security rules: report Firestore or Storage rules that allow access without request.auth or across users.
7. Secrets: list every key in src/, env files and firebase config. The Firebase web config is expected; a Gemini API key, Stripe secret key or service account file in client code must move server-side.
8. States: loading, empty and error states with retry on every screen that fetches data.
9. App-only UI: add isNativeApp() (user agent contains WebViewGoldApp) and hide download-our-app banners, builder badges and cookie walls inside the app.
10. firebase.json: confirm the SPA rewrite and that /privacy and /delete-account load directly with HTTP 200.

After I approve: implement in small commits, run npm run build after each, never deploy, and finish with a list of what I must do by hand in the Firebase console, App Store Connect and the Play Console.

Where each setting lives

WhatWeb project (Gemini CLI)WebViewGold iOSWebViewGold Android
Start URLFirebase Hosting + custom domainhost, webviewurlHOST, HOME_URL
App detectionisNativeApp() checks for the tokenuseragent_iphone, useragent_ipadUSER_AGENT
Push via OneSignalCall registerpush:// (iOS), save onesignalplayeridkPushEnabled, oneSignalIDPUSH_ENABLED, OneSignal IDs in build.gradle
Push via Firebase Cloud MessagingSave the ID from getfirebaseplayerid://kFirebasePushEnabled + your GoogleService-Info.plistFIREBASE_PUSH_ENABLED + your google-services.json
Injected variablesRead IDs without calling a scheme firstautoInjectVariableAUTO_INJECT_VARIABLES

Pitfalls specific to Gemini CLI projects

  • YOLO mode during a store pass. With every action auto-approved, the agent can run firebase deploy against production halfway through a refactor. Keep approvals on for shell commands and deploy yourself.
  • A forgotten GEMINI.md higher up. A file in a parent folder or in ~/.gemini/ is concatenated too and may contradict your project rules. Check /memory show once per project.
  • A Gemini API key in the browser bundle, typical for prototypes exported from Google AI Studio. Anyone can read it from your site. Route Gemini calls through a Cloud Function; the secrets guide explains which keys may ship.
  • Building the app with the web.app address and switching to your own domain later. That is a new store build; attach the domain first.
  • Sign-in that works on the custom domain in Safari but fails in the app because the domain is missing from Firebase Auth's authorized domains, or because Google sign-in opens a popup. The Firebase checklist walks through the options.
  • Scripts and CI jobs that call gemini with a consumer login. They stopped working on June 18, 2026; switch them to a paid API key or to Antigravity CLI.

Checklist before you submit

  • /memory show lists only the context files you expect.
  • The production build is on your custom domain, and /privacy and /delete-account open directly without a redirect to the home page.
  • Firebase Auth authorized domains include the custom domain; sign-in works inside a test build of the app.
  • No Firestore or Storage rule allows read, write: if true.
  • Airplane mode shows the WebViewGold offline screen instead of a blank page.
  • Push permission appears after onboarding, not on the first screen.
  • The free App Store readiness check passes for your URL.

Frequently asked questions

Is Gemini CLI still available in November 2026?

Yes, for Gemini Code Assist Standard and Enterprise customers and with paid Gemini API keys or Gemini Enterprise Agent Platform credentials, according to Google. Free individual accounts and Google AI Pro and Ultra subscribers were moved to Antigravity CLI on June 18, 2026. The workflow and context files in this guide work with both.

Should I name the context file GEMINI.md or AGENTS.md?

Both work. GEMINI.md is the Gemini CLI default; AGENTS.md is read by Antigravity, Codex, Cline, Kiro and others. If more than one agent touches the repository, write AGENTS.md and add it to context.fileName in .gemini/settings.json.

Do I have to host on Firebase?

No. WebViewGold loads any HTTPS URL, so Vercel, Netlify, Cloud Run or your own server work the same way. Firebase Hosting is simply convenient when your app already uses Firebase Auth and Firestore.

Can Gemini CLI edit Config.swift and Config.java?

Yes. Add the WebViewGold folder with /directory add, ask it to read the configuration files first and to change values only. Keep signing, keystores and bundle identifiers for yourself in Xcode and Android Studio.

Will Apple reject an app because an AI agent wrote it?

No. Review looks at behavior, completeness, privacy and payments. Which tool wrote the code is neither visible nor relevant.

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.

See plans on the main page

Cloud Builder

$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

Full Service

$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 by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your app?

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.