Skip to main content

Overview

Deploy any React app, vanilla JS site, or static bundle to a Canvas app. Upload a .zip of your build output and Mixpeek handles hosting, CDN distribution, and versioning — no infrastructure needed. Every deploy creates an immutable version record with a commit message, asset manifest, and content hashes. See Version History for the full version control system.

Quickstart

1

Build your frontend

Build your app to a static output directory.
2

Zip the output directory

The zip should contain an index.html at the root (or inside a single top-level folder). Mixpeek auto-detects the entry point.
3

Get a presigned upload URL

Response:
Save upload_url for the next step and bundle_s3_key for the deploy request.
4

Upload the zip

5

Trigger the deploy

A commit message is required — it describes what changed in this version.
source_files is required for cli_upload deploys. Without it the deploy returns 400. Pass a {path: content} map of your source files so versions can be diffed and re-deployed.
Include git_commit_sha / git_author for CI/CD traceability.
Your app is live at https://{slug}.mxp.co within seconds of a successful build.

Environments

Each app supports two independent environments with separate URLs and asset prefixes: Staging and production can serve different versions simultaneously. Deploy to staging first to test, then promote to production.

Deploying to staging

Your staging build is live at https://staging-{slug}.mxp.co.

Promoting staging to production

Once you’ve verified staging, promote it to production by deploying the same bundle to the production environment, or use the restore endpoint to point production at the staging version:
Restore is instant — no rebuild required.

Deploy lifecycle

Check deploy status

GET /v1/apps/{app_id}/deploys/{deploy_id} returns the current status of a deploy:
Response:
The status field will be one of: queued, building, complete, or failed.

Stream build logs

GET /v1/apps/{app_id}/deploys/{deploy_id}/logs/stream returns a Server-Sent Events (SSE) stream of build logs in real time. Use this to monitor progress or debug failed deploys:
Each SSE event contains a log line from the build process. The stream closes automatically when the deploy reaches complete or failed.

Multi-file output

Your zip can contain any number of files — HTML, JS, CSS, images, fonts. The only requirement is an index.html at the root. All files are uploaded to S3 and served with appropriate cache headers:
  • index.html — no-cache (always fresh)
  • Content-hashed files (e.g., app-a1b2c3.js) — immutable, permanent cache
  • Other assets — standard cache headers

Canvas SDK

Your app runs inside the Mixpeek canvas runtime. Call Mixpeek APIs through the built-in /api proxy — credentials are injected server-side, so your API key never reaches the browser:
Use /api/v1/... (relative path) instead of https://api.mixpeek.com/v1/... — the canvas proxy injects Authorization and X-Namespace headers automatically, avoiding CORS and keeping API keys out of your bundle.

Pre-deploy validation

Mixpeek runs automatic checks on every bundle before deploying: If any check fails, the deploy is rejected with a descriptive error message.

Deploy via Studio

In the App details page, drag & drop your .zip file onto the Deploy panel and click Deploy. The build is queued immediately and status updates in real time.

Rollback

Every deploy is versioned. You have two rollback options: Quick rollback — restore the previous config:
Restore any version — point an environment to a specific version’s assets:
Restore is instant — no rebuild required. All previous assets are retained in S3. See Version History for the full version control system including diffs, downloads, and git metadata.

Source files

When you include source_files in your deploy request, those files are stored alongside the version record. This enables:
  • Source-level diffs — compare actual source code between versions, not just built output
  • Download and re-deploy — download a version’s source files and deploy modified code