Deploy

Build and ship web, iOS, and Android targets from the workspace.

Deploying and inspecting are two halves of one loop, so they share the Production section. The Deploy pane builds your project and publishes it to a real target. The panes beside it point back at that live deployment so you can inspect the real running app, not a mock, from the same workspace.

The Deploy pane covers three targets, switched from the tab pill at its top left: Web, iOS, and Android. Open one to see its status, its primary action, and its build history.

Targets

TargetWhat it shipsStatus
WebYour full-stack app at a production URLLive for backend templates
iOSLocal, TestFlight, and App Store buildsLive
AndroidA native project you build yourselfExport today, managed builds later

See Deploy targets for the full support matrix and prerequisites.

Web deploy

Press Deploy in the Web section. It builds the current files on your main branch and publishes the result to a shareable URL. There is nothing to configure; Contrast owns the hosting.

  • In the dev stack, deploys serve locally at https://<slug>.deploy.localhost:<port>. There is no DNS setup, since *.localhost resolves to your machine.
  • In production, your app runs on managed Cloudflare Workers + Durable Objects at https://<slug>.contrast.run. The Durable Object hosts your Zero sync cache and database in-process, so there is no external Postgres for you to provision.

Your slug is the subdomain. It must be 3 to 30 characters of lowercase letters, numbers, and hyphens. A handful of names such as www, api, app, and admin are reserved.

Backend templates like App and Game publish to a live Worker. The frontend-only Website template stays on local previews until static hosting lands, and the Web section tells you when production hosting is unavailable for a template.

Walkthrough: Publish to the web.

Custom domains

Once a web deploy is live, attach your own domain from the Web section. Enter a domain like www.example.com, add the single CNAME record Contrast shows you, and Contrast issues the SSL certificate automatically. The section tracks status from Pending DNS through Active, and Refresh re-checks it.

Walkthrough: Custom domains.

iOS and Android

The iOS section ships through three lanes: Local for simulator, device, and local builds, TestFlight for beta testers, and Production for the App Store. Local simulator and device builds need no Apple account, so use them to iterate before you ship; the signed TestFlight and App Store lanes require connecting your Apple account. Signed builds bake in a production backend, so deploy web first.

Android is export-first today. From Project Settings → Export project Contrast generates a native Android project you build with Gradle or EAS, following the included EJECT.md. Managed APK builds are on the roadmap.

Walkthrough: App Store.

Then inspect it

Every deploy has a matching view in the same section’s Production and Health panes, which iframe the real deployed app and read its status, stats, and logs. Deleting a deployment only clears its history from the pane. It does not unpublish a live URL.

Ready?

Create a web, iOS, and Android app in minutes with agents working alongside you.