Interactive mode asks for a name, description, which targets you want (editor panel, OBS layer, interactive page), and whether to include server functions. A ready-to-go project is created in seconds, including initial extension registration.
my-extension/ package.json tsconfig.json vision.config.json # Extension metadata src/ admin.tsx # Editor panel (settings UI) layer.tsx # OBS overlay output interactive.tsx # Live controls (optional) server/ # Only if server functions enabled schema.ts # Database schema functions.ts # Server functions (queries, mutations, actions)
Each src/ file is an independent entry point. You only need to include the targets your extension uses. The server/ directory is created when you opt into server functions during vision init.
localFont accepts paths like /fonts/MyFont.woff2 (recommended) and also
normalizes ./public/fonts/MyFont.woff2 to the same output path.When you run vision dev or build for upload, files from public/ are copied to
dist/ automatically, so local fonts are shipped with your extension.
A dedicated full-screen page for active participants and control workflows. All components are fully interactive here, just like the editor panel.
Interactive pages are not intended as high-scale public viewer pages. Do not
use them as a replacement for a general web app serving thousands of
concurrent stream viewers.
Use vision dev for the fastest workflow. It watches your project, rebuilds on change, and pushes everything (client bundles, server bundles, and schema) automatically:
vision dev
Alternatively, use Switch to Test mode to load client bundles from a local URL: