Skip to main content
Each command that writes your backend names one target, and each target takes the write in one of three ways: it is replaced, merged into, or given a new Xano branch beside what it serves. Read this table before you run a command against anything real. The first two are your development loop. Everything from release create down reaches something real, and every one of those commands names its target on the command line: a bare deploy never reaches your workspace or a tenant.

Replace, merge, or a new Xano branch

  • Replace makes the target hold exactly what you sent. Anything it held that you did not send is gone. An ephemeral is replaced on every deploy without --keep-data, and a tenant is replaced on every tenant deploy, including an API that an earlier deploy --to tenant:<name> merge added.
  • Merge writes what you send over what is there and leaves the rest alone. Objects are added and updated. Nothing is deleted unless you ask with --prune, and --prune deletes only what this project landed on that target (see Merge path).
  • New Xano branch is what promote does. The release lands on a Xano branch of its own, named after the release, and the live Xano branch keeps serving. Nothing serves the new branch until --set-live or xanosdk workspace branch set-live. A promote never deletes an object.
deploy --to workspace --replace is the exception to all of the above: it wipes the whole workspace, every Xano branch included, before it imports. Merge path covers when it is refused.

Tables are shared by every Xano branch

A Xano branch holds logic: API groups, queries, functions, agents and toolsets. Tables and microservices are not per branch. Every Xano branch in a workspace reads the same tables and the same rows. So a table change reaches live the moment it lands, whichever Xano branch it lands on, and deleting that branch does not undo it. promote and deploy --to workspace --branch refuse a release that alters a table (SDK_SHARED_SCHEMA_CHANGE, exit 2) until you pass --allow-shared-schema-changes. New tables and new columns are additions and pass without the flag. Switching back to an earlier Xano branch restores logic, never a dropped column or its values. Schema changes covers how to change a table safely.

Rows

A release carries rows only when you cut it with --seed. See Releases.

Env values are added, never overwritten

A deploy to an ephemeral replaces its env set. promote, tenant deploy and every merge are add only: a name the target already holds keeps the target’s value, so a release cut from dev never overwrites production’s secrets. (deploy --to workspace --replace is the exception, since it rebuilds the workspace.) To change a value on your workspace or a tenant, set it there with xanosdk env set. Env and secrets has the full table.

Next

Releases: cut the release that promote and tenant deploy land.