Publish an app as a website
Prepare a Matrix app for a public matrix.page URL, optional visitor forms, private submissions, and owner publishing controls.
Awaiting release
Public app sites are being prepared for release. Publishing requires the matching Matrix runtime, platform, and public hosting configuration. These instructions describe that release; they do not mean publishing is available on your current runtime.
Publish a Matrix app as a website that anyone can visit without signing in. Each app gets a permanent address under matrix.page, followed by a long random ID. You can also choose a friendly path such as matrix.page/my-launch.
Visiting matrix.page without an app path takes you to the Matrix website at matrix-os.com. Your published app links open the app directly.
This deploys your app for visitors. It is separate from an Apps gallery listing or letting someone install a copy.
Owner publishing controls are available on Web Canvas, Web Desktop, Electron Desktop, and Web Mobile. Scoped Chat agents can prepare public apps, but publishing and managing sites from those agents is deferred; use Publish app to review and deploy.
Prepare your app
Ask Matrix to build an app for public visitors and describe the content and forms you want:
Build our launch guide as a Matrix app. Include how to support Matrix, links to our posts and channels, and a section for discount codes. It is an information website with no forms.
Forms are optional. An information app can publish its production build without a publishing declaration. Outbound website links open in a new tab, and section links stay within the guide. If you want visitor input later, declare the public forms described below.
The first release supports personal React/Vite apps with a checked production build. Apps that depend on your private Matrix database, connected services, or AI bridge need a public version. Visitors receive the public information and named forms declared by the app. They do not receive your private app data or credentials.
Publish and update
- Open the app on Web Canvas, Web Desktop, Electron Desktop, or Web Mobile.
- Choose Publish in the app window.
- Set a title, description, and optional Friendly path.
- Choose Review deployment. Review the declared public data and form fields, and check the app in its window. This preview uses your private runtime; it is not a public sandbox preview.
- Confirm I reviewed this deployment, then choose Publish app.
- Copy the permanent or friendly URL and test it as a visitor.
Draft edits stay private until you choose Publish update. A failed build or deployment preserves the existing live version. Save URL and details changes the title, description, and friendly path without rebuilding the app.
The permanent ID stays the same. Previously used friendly paths continue to point to your site and cannot be reassigned to another owner. This prevents old shared links from pointing to someone else's app.
Forms and submissions
Public forms accept only the fields declared by the app. Visitors receive a confirmation when their submission has been saved. Your Matrix computer must be online to save a submission. If it is offline, the website still loads, but forms show an unavailable response. There is no offline submission queue.
Choose Visitor submissions in the publishing panel to read saved responses. They live in your owner-controlled PostgreSQL database. Deploying an update, restoring a version, or unpublishing does not erase them.
Use Next page to browse more records, Export this page to download the current page as JSON, and Delete to erase a response. Exports are paginated; export each page if you need all records. Deletion retains an internal duplicate-prevention marker, so a retry cannot recreate the erased response.
Restore or unpublish
Open Version history and choose Restore version to make an earlier deployment live again, including its declared public data and forms. Saved submissions remain unchanged.
Choose Unpublish, then confirm, to disable the permanent URL, friendly paths, app files, and new form submissions. A request admitted before unpublishing can still finish. You can publish the app again using the same permanent ID.
Developer configuration
Set Vite's base to "./" so built assets work beneath the publication path. Keep the output directory separate from source and disable source maps. Publishing rejects source files, environment files, symbolic links, unsafe paths, and unsupported assets. Builds are limited to 200 files and 10 MiB. Version history is capped at 50 deployments in the first release.
If your app needs public bridge data or visitor forms, add a publishing declaration to matrix.json:
{
"publishing": {
"data": { "event": "Our launch" },
"forms": [{
"id": "rsvp",
"title": "Launch RSVP",
"fields": {
"email": {
"type": "email",
"required": true
}
}
}]
}
}Inside the public app, read window.MatrixOS.site.data and submit through the public bridge:
const requestId = crypto.randomUUID();
await window.MatrixOS.site.submit(
'rsvp',
{ email: 'visitor@example.com' },
{ idempotencyKey: requestId }
);Reuse the same key when retrying the same submission. Each new submission should have a new key. Supported field types are text, email, number, and boolean, with required fields and bounded limits. Forms have up to 30 fields, with up to 10 forms per app. Visitor field payloads are limited to 16 KiB and are subject to rate and storage limits.
Public apps run in an isolated frame. Direct network requests, service workers, shared browser storage, and private Matrix bridges are unavailable. Use the declared public data and form bridge; arbitrary backend applications are outside this release.
Current limits
Native Mobile currently provides app previews without owner publishing controls. Manage publications from Web Canvas, Web Desktop, Electron Desktop, or Web Mobile.
Customer-owned domains and custom subdomains are planned for later. The first release uses paths under matrix.page.
How is this guide?
Apps
Use built-in Matrix OS apps and ask your agent to create new tools for your work. Learn how apps run and how to inspect the results they produce.
Matrix App Gallery
Learn how the planned curated Matrix App Gallery differs from your installed Apps, including discovery, app ownership, and current availability.