Skip to main content

Preview and deploy

Appifex separates preview (temporary, for development) from publishing (permanent, to your own cloud). Build and test with instant previews, then publish when ready.

Preview

Previews run in temporary cloud sandboxes. They start automatically during code generation and update with every change.

Web

A live preview appears in the right panel as your code generates.

  • Desktop and mobile views — Toggle between laptop and phone frame sizes
  • Visual edit mode — Click any element in the preview, then describe what to change
  • Previews auto-pause after 20 minutes of inactivity — click Resume preview to restart

Mobile

After generating mobile code, open the preview with one of these options:

  1. iOS: Download the Appifex app and scan the QR code
  2. Android: Open the preview URL in your phone browser from the QR code page
  3. Desktop/browser: Open the same preview URL directly in your browser

You can share the QR code page with anyone — no login required.

Backend

Backend APIs get an interactive documentation page where you can test endpoints directly in your browser.

Logs and database

During development, your session workspace includes:

  • Logs tab — Real-time app logs with level filtering (Info, Warn, Error)
  • Database tab — Browse your app's tables and data right in Appifex

Preview timeout

Preview sandboxes automatically pause after 20 minutes of inactivity. When paused, you may see a "Sandbox Not Found" error in your preview or app.

What the error looks like in a mobile app
Sandbox expired error in mobile app

How to resume:

PlatformWhat to do
WebGo back to your project in Appifex and click Resume preview
MobileOpen the Appifex app, navigate to your project, and tap on it — the sandbox wakes automatically

The sandbox restarts in a few seconds. No code or data is lost.

tip

If you're actively testing, interact with the preview at least once every 20 minutes to keep it alive.


Publishing

Publishing deploys your app to your own cloud account. You bring your own credentials, and your app runs on infrastructure you control. This means full transparency — you own the deployment, the domain, and the billing relationship with your cloud provider.

Bring your own cloud

Appifex supports several cloud providers. Each has a generous free tier, so many projects can run at zero cost:

ProviderPlatformsFree tier
VercelWeb, BackendGenerous free plan, no credit card required
RailwayWeb, Backend$5 free trial credit
Fly.ioWeb, BackendFree allowances for small apps
Expo (EAS)MobileFree for OTA updates and builds

Vercel is the recommended default for web and backend — it has the most generous free plan and requires no credit card.

Connect a provider

Before your first publish, connect your cloud account:

  1. Go to Settings → Deployment providers in your Appifex dashboard
  2. Click Enter credentials for your chosen provider
  3. Paste your API token (each card links to the provider's token page)
  4. Appifex validates the token immediately

You only need to do this once per provider. Credentials are stored encrypted and used only at deploy time.

Where to get your token:

Publish your app

Click Publish in the session toolbar:

  1. Select what to publish — Check the platforms you want to deploy (web, backend, mobile)
  2. Choose a provider — Pick from your connected providers (or connect one inline)
  3. Deploy — Watch real-time progress as your app goes live
  4. Get your URLs — Production URLs appear when deployment completes

After your first publish:

  • The Publish button shows Published ✓ when your deployed code is up to date
  • It changes to Re-publish when you have new code changes ready to ship
  • Your provider choice is locked per platform — subsequent publishes go to the same provider

Mobile publishing

Over-the-air updates

After your first app store submission, JavaScript/TypeScript changes can ship instantly via over-the-air (OTA) updates — no new store review needed.

OTA-eligible changes: UI changes, business logic, static assets, JS-only configuration updates.

Requires a new store submission: Native module additions, native code changes, native dependency/SDK updates, permission or entitlement changes.

App Store and Google Play

Submit mobile apps to stores from Project settings → Publishing:

iOS (TestFlight / App Store):

  1. Connect your Apple Developer account and Expo/EAS credentials (guided setup)
  2. Enter app name, bundle ID, and version
  3. Click Submit — your app builds and uploads to App Store Connect
  4. Distribute via TestFlight or submit for App Store review

Android (Google Play):

  1. Connect your Google Play account and Expo/EAS credentials (guided setup)
  2. Enter app name, package name, and version
  3. Click Submit — your app builds and uploads to Play Console internal testing
  4. Promote to beta or production when ready

Builds take around 20 minutes. You can leave the page — progress saves automatically.


Custom domains

Since your app deploys to your own cloud account, you add custom domains directly through your provider's dashboard. Appifex doesn't need to be involved — you have full control.

Vercel

  1. Open your project on vercel.com
  2. Go to Settings → Domains
  3. Add your domain and follow the DNS instructions

Vercel provides free automatic SSL. See the Vercel custom domains guide for details.

Railway

  1. Open your project on railway.app
  2. Go to your service's Settings → Networking → Custom Domain
  3. Add your domain and configure DNS

See the Railway custom domains guide for details.

Fly.io

  1. Run fly certs add yourdomain.com from the Fly CLI, or use the dashboard
  2. Configure your DNS records as instructed

See the Fly.io custom domains guide for details.

General tips

  • Most providers issue free SSL certificates automatically
  • DNS changes can take a few minutes to a few hours to propagate
  • If you use Cloudflare DNS, make sure proxy settings are compatible with your provider

Preview vs production

PreviewProduction
Where it runsAppifex cloud sandboxYour own cloud account
LifetimeTemporary, pauses after 20 min idlePermanent, always on
UpdatedEvery code generationOn publish
UseTesting during developmentSharing with users
Custom domainNoYes, via your provider