Frequently Asked Questions
Everything you need to know about Snapp
If sign-up in your app fails with "email rate limit exceeded", or new accounts can't log in, it is a setting in your own Supabase project, not a bug in your app: "Confirm email" is on, so every sign-up sends a confirmation email, and Supabase's built-in email service only sends a few per hour for the whole project (trying a different email address does not help). Fix it in your Supabase dashboard: Authentication → Sign In / Providers → Email → turn off "Confirm email" and save; sign-up then works instantly. If you want to keep email confirmation, add your own SMTP provider in Supabase so the limit no longer applies, and tell your users to click the link before signing in. Snapp now turns "Confirm email" off automatically for projects connected after this change — projects connected earlier need the one-minute fix above (or reconnect Supabase).
Snapp is available on the web (any browser, including your laptop) and as a mobile app on both the Apple App Store (iOS) and Google Play (Android). The apps you build can also be shipped to the App Store and Google Play, installed as a PWA, or shared via link.
Snapp Vault keeps your app's secret keys safe. When you connect a service like an AI model, a database or a payment provider, its secret key is stored encrypted on Snapp's servers and never goes inside your app. When your app needs the service, Snapp adds the key on our side, so nobody who downloads your app or visits your site can see it. Snapp works out which keys are secret by itself, and keys that are designed to be public stay in your app as intended. Your app's preview files are locked too: only you and the people you share your app with can open them. There is nothing to set up — add your keys in Settings → Environment as usual.
No. Snapp Vault works automatically with the keys in your app's Environment settings — there is nothing to turn on.
Any secret key you add: AI providers like OpenAI and Claude, your database's secret keys, payment keys and more. Keys that are designed to be public stay in your app, as they are meant to.
Yes. Your keys are still listed under Settings → Environment, where you can update or delete them any time.
Snapp Vault is included on every plan while you build and preview your app. For apps you publish to the App Store or Google Play, each plan includes a daily request allowance: Free 100, Starter 1,000, Popular 5,000, Pro 25,000 and Ultimate 100,000 requests a day. If an app goes over its allowance, it pauses until midnight (UTC) or you move to a higher plan.
To get a share link: on the web, click **Share Now** in the chat panel; in the Snapp mobile app, open your app's preview options and tap **Share App**. Your projects are private by default — only the people you send the link to can open it. On the Free plan a share link stays live for 24 hours from your last share (sharing again restarts the 24 hours on the same link); on Premium it is permanent. Your secret keys are protected by Snapp Vault, so they are not part of what you share: people can use your app, but they can't see your secret keys.
You can publish your app to the App Store and Google Play directly from Snapp (Starter plan and up). Open your app → App Options → Publish, add your own Apple / Google store credentials once, and Snapp builds and submits it for you. Publish can also give you an Android APK file that installs straight on a phone, no store needed. Prefer to do it yourself? Settings → Copy to Repository exports the code to your GitHub repo to build with Expo EAS Build.
You can export your app code anytime! Go to Settings → Copy to Repository to copy all your code to your own GitHub repository. This is for developers who want to own the source — it is NOT how you get the app onto a phone (for that, install it as a PWA or publish it). Note: building from GitHub requires a computer with Node.js/Expo; you cannot run those terminal commands inside Snapp.
Both the apps and websites you build with Snapp can be installed to a phone without an app store, as a Progressive Web App (PWA). Web apps/sites: just open them in the browser and add to the home screen. Mobile apps: open the app's web preview (or run it on iOS) and install it the same way — it then runs fullscreen from the home screen with its own icon, just like a native app. How to install — Android (Chrome): menu (⋮) → "Add to Home screen" (or the install prompt). iPhone (Safari): Share → "Add to Home Screen". This is a web install; for a real app from Google Play / the App Store, or an APK file, use Publish (Starter plan and up).
You can view and edit your app's code anytime! Tap the Code View icon (</>) in the top bar. From there, you can browse all files, make manual edits, and see your full project structure.
How you test your app on a phone depends on where you are using Snapp: - **In the Snapp mobile app** (your phone): your app runs right there — open your project and tap Preview to test it live on the same device. There is no QR step. - **In the web editor** (browser/laptop): use the QR icon in the top-right to scan and open a live preview on your Android phone. Either way, changes appear instantly. To keep the app on your phone permanently, install it as a PWA ("Add to Home Screen") or publish it to the store.
You can undo changes and go back to previous versions! Tap the History button to see all modifications. You can navigate between versions and restore any previous state of your app.
If you've connected a database (Supabase), you can manage it directly! Tap the Admin Panel button to view your database tables, add/edit/delete records, and manage user data. This panel shows the tables connected to your app.
Join our community! Go to Settings → Join Community to connect with other Snapp users, share your projects, get help, and stay updated on new features.
Snapp has a FREE plan to get started! You can create apps and test features. For unlimited usage, check our paid plans: Starter ($24.99/mo), Popular ($99.99/mo), Pro ($499.99/mo), Ultimate ($999.99/mo). Each plan includes credits for app generation and modifications.
**Snapp Subscription Plans:** **Monthly:** - Starter: $24.99/mo - 125 credits/month - Popular: $99.99/mo - 500 credits/month (BEST VALUE) - Pro: $499.99/mo - 2500 credits/month **Yearly (Save up to $200):** - Starter: $249.99/year - 125 credits/month (Save $50) - Popular: $999.99/year - 500 credits/month (Save $200) **Credit Usage Guide:** - 1 app creation ≈ 10 credits - 1 modification ≈ 5 credits - 1 complex feature ≈ 15 credits All plans include: Unlimited apps, live updates, GitHub export, and priority support.
Snapp uses a credit system. Credits are consumed when you create apps or make modifications. Approximate costs: 1 app ≈ 10 credits, 1 modification ≈ 5 credits, 1 complex feature ≈ 15 credits. Actual usage varies based on complexity.
Clear messages cost fewer credits, because Snapp gets it right the first time instead of guessing across several rounds. The habits that help most: say what kind of app it is before what it should do ("a dating app where people make a profile, swipe and chat"); change one thing per message; name the screen you mean ("on the Explore screen…"); describe the result you want to see rather than how to build it; and when something breaks, say what you did and what happened instead of "it doesn't work". One more big one: connect your database before asking for features that save data — otherwise the app is built with sample content and has to be rebuilt later.
To add API keys: Go to Settings → Environment → Add Key-Value pairs (e.g., OPENAI_API_KEY, GOOGLE_MAPS_API_KEY), then ask Snapp to use them — for example "Use my OpenAI key to summarize the notes". Secret keys are protected by Snapp Vault: they are stored encrypted on our servers and never go inside your app; Snapp adds them on our side when your app calls the service. Keys that are designed to be public stay in the app as intended.
To connect Supabase: Go to Settings → Environment → Click "Connect Supabase" → Authenticate with OAuth → pick a project or create a new one. Your keys (SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY) fill in automatically. For a new project Snapp also sets the database password; for a project you already had, paste its database password (Supabase → Project Settings → Database) into SUPABASE_DB_PASSWORD. Secret ones like the service role key and database password stay in Snapp Vault and never go inside your app. Then you can create tables and use them in your app.
Your app can have user accounts with Supabase auth. Email + password is the default; Google / Apple sign-in can be added on request but must be turned on in your own Supabase project (ask about "social login" for the steps). First connect Supabase (Settings → Environment → Connect Supabase), then ask Snapp to "add login" — it wires up a sign-in/sign-up screen using the built-in Supabase client and AuthModal. For user-specific data, tables should use a user_id column with Row Level Security.
Google / Apple (social) sign-in works through your Supabase project. Snapp adds the button and the code (signInWithProvider in supabase.ts), but the provider itself has to be turned ON by you, because it needs keys from your own Google Cloud or Apple Developer account: 1) Connect Supabase (Settings → Environment). 2) Google: in Google Cloud create an OAuth client (Web application) whose Authorized redirect URI is https://<your-project-ref>.supabase.co/auth/v1/callback, publish the consent screen (not "Testing"), copy Client ID + Client secret. Apple: create a Services ID and a Sign in with Apple key (.p8) in the Apple Developer portal. 3) In Supabase → Authentication → Sign In / Providers, enable the provider and paste the keys. 4) In Supabase → Authentication → URL Configuration → Redirect URLs make sure snapp://auth-callback and https://snappai.co/preview/** are listed (Snapp adds them when you connect Supabase from Snapp; add them by hand if you pasted keys manually). A published app also needs <your-bundle-id>://auth-callback. Until the provider is on, tapping the button shows "sign-in is not set up" with a link to the guide; email + password sign-in keeps working.
The Google / Apple button fails for one of three reasons, in this order: (1) "sign-in is not set up" or "provider is not enabled": the provider is OFF in your Supabase project. This is not an app bug and cannot be fixed in code; turn it on in Supabase → Authentication → Sign In / Providers with your own Google / Apple keys (see the guide). (2) "redirect_uri_mismatch" on Google's page: the Authorized redirect URI in Google Cloud must be exactly https://<your-project-ref>.supabase.co/auth/v1/callback. (3) Sign-in completes but the app does not log in: the return URL is missing from Supabase → Authentication → URL Configuration → Redirect URLs. Add snapp://auth-callback (Snapp preview), https://snappai.co/preview/** (iOS preview) and <your-bundle-id>://auth-callback (published app). Also check that your Supabase project is not paused (free projects pause after a week idle) and that the Google consent screen is published, not in "Testing". Email + password sign-in is unaffected by all of this.
Your app can take real payments with Stripe (Payment Links). Create a Payment Link in your Stripe Dashboard, then in Settings → Environment tap "Add Stripe Payment Link" and paste the URL (tap again for more products → STRIPE_PAYMENT_LINK_2, _3). Then ask Snapp to "add a checkout/subscribe button" — it sends buyers to the Stripe-hosted page, so no card data ever touches your app. Works on web, iOS and Android.
Maps always work in the Snapp preview, but a published Android app needs your own Google Maps API key; without it the map will not work (it can close the screen). To get one: open Google Cloud Console → create or pick a project → add a billing account (Google requires it; map loads in mobile apps are free under Google's pricing) → enable "Maps SDK for Android" (https://console.cloud.google.com/apis/library/maps-android-backend.googleapis.com) → APIs & Services → Credentials → Create credentials → API key. Open the key → API restrictions → Restrict key → select only "Maps SDK for Android", and leave Application restrictions on None (a package/SHA-1 restriction that misses one of your app's signing certificates leaves the map blank). Then add it in Settings → Environment as GOOGLE_MAPS_API_KEY and publish a new build — the map is set when the app is built, so an instant update is not enough. On iPhone, maps use Apple Maps by default and need no key. "Is my app ready?" warns you if your app has a map but no key.
You cannot run terminal commands (npm install, bash, etc.) in Snapp. But don't worry! If you need packages, just tell me and I'll add them to package.json. They'll be installed automatically during the next modification.
Console logs and DevTools are not accessible in Snapp. If you need to debug, I can add visible error messages directly in your app's UI, or use Toast notifications to show debugging info.
Cache clearing and Metro bundler restart are not available in Snapp. If you're experiencing issues, let me know and I'll fix them directly in the code.
lodash is not available in Snapp. Use native JavaScript methods instead: .map(), .filter(), .reduce(), .find(), .some(), .every(), etc. They work great!
moment.js is not available in Snapp. Use date-fns instead - it's whitelisted and more modern! Example: import { format, addDays } from 'date-fns'
Redux, Zustand, and MobX are not available in Snapp. Use React Context API and useState instead - they're built-in and work perfectly for most apps!
React Native Modal component is forbidden in Snapp (causes z-index conflicts). Use @gorhom/bottom-sheet instead - it's better and supports swipe-to-dismiss!
Need more help? Contact Support
Back to Home