Studio Apps
A Studio App is a Vite + React single-page application that lives in your project repository. Datazone installs its dependencies, builds it in an isolated sandbox, and serves the result at a URL inside your deployment — behind the same session that protects the rest of Datazone. Unlike an Intelligent App, which you describe declaratively in YAML, a Studio App is code you write. You get the whole React ecosystem and, with it, everything a dashboard cannot do: multi-step forms, write-back to Knowledge Objects, custom interactions, bespoke layouts.What you get
- A real URL, behind your authentication — the app is served from your Datazone deployment and only to signed-in users of the organisation that owns it. There is no separate hosting, no separate login.
- The API, already authenticated — the browser sends the user’s Datazone session with every request. The app ships no API key, and every call runs with that user’s permissions.
- One build per branch — each branch of your repository builds and serves its own version of the app, so you can review a change on a feature branch before it reaches
main. - A pre-wired scaffold — routing, Tailwind 4, the shadcn component setup, and a small Datazone client are generated for you.
- Nothing to operate — no Dockerfile, no deployment pipeline, no CDN configuration. Push, then build.
When to use one
An Intelligent App is considerably less work when it fits. Reach for a Studio App when you need behaviour a dashboard cannot express.
How it works
- Create the app. Datazone scaffolds a complete Vite + React app into
studio/<alias>/and registers it in your project’sconfig.yml, in a single commit. - Write your app. Edit the files in the repository — in the built-in code editor, with Orion, or locally with
git. Push your changes. - Build. Datazone runs
npm installandvite buildin a sandboxed job, then publishes the static bundle. - Open it. The app is served at its URL for signed-in members of your organisation.
The app in your repository
config.yml:
Talking to Datazone
The scaffold includessrc/lib/datazone.ts, a small client for the Datazone API. It sends requests same-origin and relative, so the browser attaches the user’s session cookie automatically.
Permissions are enforced by the API on every call, so a user who cannot read a dataset cannot read it through your app either. There is no API key in the bundle, and none is needed.
Storing data
A Studio App is static files. It has no database and no server-side code, so anything users create or edit belongs in a Knowledge Object — a versioned entity declared in your repository with a governed CRUD API. That combination is the usual shape of an internal tool: objects for the records, a Studio App for the interface.Branches and builds
Every app is built per branch. A branch has its own bundle, its own URL, and its own build history — the app onfeat/new-layout is a different deployment from the one on main.
Two consequences worth remembering:
- After pushing, build again. Datazone marks the served build stale when the branch has moved on, but it does not rebuild on its own.
- Branch-scoped data (Knowledge Objects, for example) defaults to your default branch when a request does not name one. The client exports
branchfor exactly this reason — pass it, or an app on a feature branch will quietly readmain’s data.
NOT_BUILT, QUEUED, BUILDING, READY, ERROR, or TIMEOUT. Logs for every build, successful or not, are on the app’s Builds tab.
Building with Orion
Orion knows how Studio Apps are structured and can write one for you — including designing the Knowledge Objects behind it. Describing what you want (“an app to manage orders, with a status filter and a create form”) is usually faster than starting from the scaffold by hand.Limits
- The app is client-side only. No server-side rendering, no API routes, no server secrets.
- Dependencies come from npm at build time, from your
package.json. Pin exact versions so a rebuild of the same commit installs the same code. - Builds are sandboxed and time-limited. A build that hangs is marked
TIMEOUT. - An app belongs to one organisation. Users from other organisations are refused, not merely unable to find it.
Next steps
- Getting Started — create, build, and open your first app
- Knowledge Objects — where a Studio App’s data belongs
- Endpoints — publish a query for your app to call
- Project Repository — how
config.ymlties it together