Docs
Start building
Deploy

Shipping a frontend

The deploy flow, framework detection, and build output.

1 min read · 3 sections

Shipping a frontend is one click, or one chat message. Modus detects how your project builds, runs the build in an isolated container, collects the output, and pushes it to your provider, then returns a live URL.

Deploy clicked
Building
Deploying
Ready, with a live URL

The flow

  1. You click Deploy (or ask Modus to). A deployment record is created with status building and an id returns immediately.
  2. In the background: Modus validates the provider token (fail-fast), builds in an isolated directory, collects the output files, and pushes them to the provider.
  3. Status moves building → deploying → ready (with the live URL), or error (with the message).

Deploys are asynchronous: the UI returns right away and the work happens in the background, so you're never blocked watching a spinner.

Framework detection

Modus detects your framework and picks the right build:

FrameworkBuildOutput
react-vitevite build --base=./dist
vue-vitevite build --base=./dist
svelte-vitevite build --base=./dist
nextjsnext build (export)out
static-html(no build)workspace root

After the build, Modus looks for the output in dist/, then build/, then out/, and ships the first one it finds.

Limits

Builds run with a 120-second timeout and ship up to 1000 files, excluding node_modules, .git, and build artifacts. Files are built locally and uploaded; there's no provider-side build step.