Projet
Stack, hébergement et commandes. L'agent utilise les commandes pour vérifier son propre travail ; incluez celle qui lance vos tests.
Claude Code
Claude Code lit CLAUDE.md au début de chaque session : c'est donc le bon endroit pour expliquer que votre web app tourne aussi dans des apps natives iOS et Android. Avec ce fichier en place, l'agent cesse de casser les safe areas, garde une page de confidentialité honnête et appelle correctement le pont WebViewGold sans que vous ayez à vous répéter.
Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.
Sans contexte, un agent optimise pour le navigateur qu'il connaît. Il ajoute un mur de cookies, place un bouton Stripe sur la page des tarifs, oublie que le pied de page fixe recouvre l'indicateur d'accueil de l'iPhone et supprime allègrement la route Supprimer le compte pendant un refactoring. Chacun de ces points est un refus en store. Un fichier CLAUDE.md règle le problème à la source : il explique à Claude Code ce qu'est le wrapper natif, quels schémas d'URL existent, quelles règles des stores ne se négocient pas et quelles routes doivent continuer de fonctionner.
Copiez le modèle, remplacez les valeurs d'exemple, committez-le à la racine du dépôt. Claude Code le prend en compte automatiquement dans ce projet, tout comme chaque membre de votre équipe qui lance l'agent.
Remplacez la stack, le domaine et la liste des routes. Supprimez les lignes du pont que vous n'utilisez pas : le fichier doit décrire votre app, pas toutes les fonctionnalités de WebViewGold.
# CLAUDE.md
## Project
- Next.js (App Router), TypeScript, Tailwind. Supabase for auth and Postgres. Stripe for web checkout.
- Deployed on Vercel at https://app.example.com. Every production deploy is live in the native apps immediately.
- Commands: npm run dev, npm run lint, npm run test, npm run build. Run lint and tests before reporting done.
## Native app context (read this first)
- This web app is also published as iOS and Android apps built with WebViewGold, a native WebView wrapper.
The apps load https://app.example.com in a WKWebView / Android WebView. There is no separate mobile codebase.
- The apps send a custom user agent that contains the token WebViewGoldApp.
Use isNativeApp() from src/lib/native.ts to branch. Never duplicate the user agent check.
- Native features are triggered by navigating to a URL scheme: window.location.href = "scheme://...".
Results come back as injected global JavaScript variables or as calls to global functions.
Full reference: https://www.webviewgold.com/llms-full.txt. Read the relevant section before adding a feature.
- Only call a scheme when isNativeApp() is true. In browsers use the web equivalent or hide the control.
- On iOS, several scheme calls in one script run must be combined: multiapicall://getonesignalplayerid,getappversion
## WebViewGold bridge used in this project
- Push permission: registerpush:// (shows the system prompt). Status: checkNativePushPermissions:// then read
window.nativePushEnabled after a short delay. System settings: settingsapp://
- Push user ID: getonesignalplayerid:// then read window.onesignalplayerid; store it on the user profile.
- Local notification: sendlocalpushmsg://push.send?s=SECONDS=msg!MESSAGE&!#TITLE&!#URL
Cancel all: sendlocalpushmsg://push.send.cancel
- Biometrics: bioauth:// then the wrapper calls window.onBioAuthSuccess(), window.onBioAuthFailure(code, message)
or window.onBioAuthUnavailable(). Treat success as a UI gate only; the server session stays the source of truth.
- Scanner: qrcode:// opens the native scanner and loads the scanned URL in the app.
barcodescanner:// then read window.barcodescanresult.
- Share sheet: shareapp://message?=TEXT&url=URL (URL-encode both values).
- Haptics: lighthaptic://, heavyhaptic://, successhaptic://, warninghaptic://, errorhaptic:// (mediumhaptic:// is iOS only).
- Downloads: savethisimage://?url=IMAGE_URL saves to the photo library; links ending in .pdf, .docx, .xlsx or .mp3
download natively.
- Purchases: revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID. Entitlements arrive through the
RevenueCat webhook at /api/webhooks/revenuecat and are stored in the subscriptions table.
- App version: getappversion:// then read window.versionNumber. Rating prompt: rateapp://
## Store rules (never break these)
- Apple 4.2: the app must do more than the website. Push, offline handling and the share sheet must keep working.
- Apple 4.8: a third-party login exists, so Sign in with Apple stays available and equally prominent.
- Apple 5.1.1 and Google Play: /privacy must describe real data practices; Delete account stays in settings and works.
- Apple 3.1.1 and Google Play billing: inside the native app, digital goods go through revenuecat://, never Stripe.
Never render external payment links or web prices when isNativeApp() is true.
- Apple 2.3: no beta labels, no coming-soon screens, no placeholder content in production.
- Apple 4.0: safe-area padding on fixed bars, 44 px tap targets, no horizontal overflow at 320 px width.
- Never add Download our app banners, builder badges or cookie walls.
## Conventions
- Mobile first. Verify every UI change at 320 px, 390 px and at iPad width.
- Every data fetch has loading, empty and error states with a retry action.
- Secrets stay server-side. The client bundle must never contain a service-role key or a webhook secret.
- Routes the native apps and store listings depend on: /, /login, /privacy, /terms, /delete-account, /settings.
Changing or removing one of them requires a note in docs/native-app.md.Stack, hébergement et commandes. L'agent utilise les commandes pour vérifier son propre travail ; incluez celle qui lance vos tests.
Le bloc le plus important. Il explique qu'il y a une WebView, comment la détecter, que les fonctionnalités natives sont des schémas d'URL et où se trouve la documentation. Le lien vers llms-full.txt permet à l'agent de chercher lui-même les détails au lieu de deviner.
Uniquement les schémas que vous utilisez réellement, avec leurs variables de retour. Cela évite les noms d'API inventés, l'erreur la plus courante d'un agent face à n'importe quel pont.
Chaque ligne renvoie à un numéro de guideline, pour que l'agent puisse justifier ses décisions dans le résumé d'un diff. Gardez la liste courte : une longue liste de règles est lue en diagonale.
Breakpoints, gestion des états, secrets et routes protégées. C'est la ligne des routes protégées qui vous sauve d'un refactoring qui supprimerait discrètement /delete-account.

Excellente façon de convertir son app web en app native ! Un délai très court, et un super moyen de mettre ses apps dans les stores sans devoir développer une app native complète !
Le modèle part du principe que les apps s'identifient. Dans Config.swift, renseignez useragent_iphone et useragent_ipad, dans Config.java USER_AGENT, chacun avec une chaîne user agent mobile normale suivie d'un espace et de WebViewGoldApp. Si vous les laissez vides, c'est le user agent système par défaut qui est utilisé, et votre code ne peut pas le distinguer de Safari ou de Chrome.
Demandez à Claude Code : « Créez src/lib/native.ts avec isNativeApp() comme décrit dans CLAUDE.md et une fonction callNative(scheme) qui définit window.location.href uniquement quand isNativeApp() vaut true. » Tout le reste peut s'appuyer sur ces deux fonctions.
Supprimez les lignes des fonctionnalités que vous n'avez pas activées dans les projets WebViewGold. Un schéma listé mais non activé dans Config.swift (par exemple le push sans service push) ne fait rien à l'exécution et complique le débogage.
Quand vous activez une nouvelle fonctionnalité native ou modifiez une route protégée, mettez le fichier à jour dans le même commit. Claude Code peut s'en charger si vous lui demandez de « mettre à jour CLAUDE.md pour refléter ce changement ».
| Fonctionnalité | Appel | Résultat |
|---|---|---|
| Autorisation push | registerpush:// | Demande du système ; ensuite checkNativePushPermissions:// définit nativePushEnabled |
| Vérification biométrique | bioauth:// | Appelle onBioAuthSuccess(), onBioAuthFailure(code, message) ou onBioAuthUnavailable() |
| Scanner QR | qrcode:// | L'URL scannée est chargée dans l'app |
| Feuille de partage | shareapp://message?=TEXT&url=URL | Boîte de dialogue de partage native |
| Achat | revenuecat://purchase?external_id=…&product=… | Feuille d'achat du store ; droits via RevenueCat |
| ID utilisateur push | getonesignalplayerid:// | Définit onesignalplayerid |
Oui. Cursor lit des fichiers de règles de projet et Codex lit AGENTS.md. Le contenu est le même ; seuls le nom et l'emplacement du fichier changent. Consultez les modèles de règles Cursor et d'AGENTS.md dans cette section.
Non. Mettez un lien vers llms-full.txt et listez uniquement les schémas que vous utilisez. Un énorme fichier de contexte dilue les règles importantes, et l'agent peut récupérer les détails à la demande.
Dans le modèle lui-même, sous forme de courte note à côté du schéma (par exemple, que mediumhaptic:// est réservé à iOS). Pour des différences plus importantes, ajoutez un fichier docs/native-app.md et référencez-le depuis CLAUDE.md.
Il peut en rédiger un à partir du code, mais il ne connaît pas le wrapper natif tant que vous ne lui en parlez pas. Partez de ce modèle, puis demandez à l'agent de compléter les détails sur la stack et les routes.
Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.
$109 par plateforme, paiement unique
La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.
Voir les offres sur la page principale$349 par licence, extension en paiement unique
Ni Mac, ni Xcode, ni Android Studio : configurez dans le navigateur, nous compilons les deux apps dans le cloud et les transmettons à App Store Connect et à la Play Console.
Comment fonctionne le Cloud Builder Essayer la démo gratuite$698 par plateforme $798
Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.
Détails du Full Service Propulsé parPrix Soldes d'hiver valables jusqu'au 31 décembre 2026.
Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours
Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.
Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.