Skip to main content
NOTICEXanoScript is in beta and it is strongly recommended that you do not use it in production at this time.While there should be significant parity between the visual builder and XanoScript, we are still fine-tuning and adjusting XanoScript, and breaking changes may be introduced.
What is XanoScript & Why It Exists At Xano, we set out to create a language that combines the structure of JSON/XML/YAML with the flexibility of TypeScript—without the overhead and inconsistency that often slows teams down. The result is XanoScript: a configuration language that lets you configure Xano programmatically while still supporting visual development. It gives you code-level control of your backend in a way that’s structured, collaborative, and AI-friendly. Why XanoScript Matters
  • AI-Ready Structure: TypeScript gives AI too much room for variation. XanoScript enforces clear, optimized patterns so AI-generated code is predictable, scalable, and easy to maintain.
  • Unified Configuration: Define everything—database, APIs, business logic, background tasks, deployment—in a single consistent language.
  • Built for Collaboration: Developers write code, while product managers and non-technical teammates work visually in Xano. Both stay aligned in real time.
  • Flexible Workflow: Start in Xano’s visual editor, continue in XanoScript, or switch back and forth anytime. Use VS Code, Cursor, or your preferred AI model.
  • AI-Powered Development: Unlike one-off AI generators, XanoScript lets you generate, deploy, and iterate continuously—visually or with code—without starting over.
  • Accessible Yet Powerful: If you understand JSON, YAML, or JavaScript—or already use Xano—you’re ready to build with XanoScript.
What You Can Do with XanoScript
  • Generate XanoScript with your favorite AI models and import it into Xano.
  • Spin up a backend using AI, deploy instantly, then iterate visually.
  • Start visually in Xano, expand into code, and switch between both at any time.
  • Use it anywhere in Xano—from database design to function stacks.

XanoScript Beta Status

XanoScript will support every aspect of the Xano platform, but not everything is available during beta. See below for the current state of compatibility:
FeatureStatus
TablesLive
API QueriesLive
Custom FunctionsLive
TasksLive
AddonsDevelopment
TriggersDevelopment
MiddlewareDevelopment
API GroupsDevelopment
BranchesDevelopment
Workspace SettingsDevelopment
Other Features Currently In Development
  • Database Link
  • // Comments in XanoScript are not supported yet.

Getting Started with XanoScript

Ready to dive in and see what it looks like? Click the button and check it out! If you’re itching to get started writing XanoScript yourself, check out the following materials, starting with our Key Concepts.

Comparing XanoScript to Traditional Code

We know that developers value access to TypeScript’s ecosystem, and Xano fully supports this:
  • XanoScript lays the foundation, but developers can still write custom business logic in TypeScript.
  • Through Lambda Functions, you can integrate TypeScript and npm packages, unlocking the full power of external libraries.
  • This means you get the best of both worlds:
    • A structured, scalable backend with XanoScript
    • The flexibility of TypeScript and npm libraries when needed
XanoScript stands out for its exceptional readability. The declarative syntax clearly expresses intent without getting lost in implementation details. For example:
db.get user {
  field_name = "email"
  field_value = $input.email
} as user
This is immediately understandable even to non-programmers, unlike equivalent code in languages like JavaScript, PHP, or Python that would require more boilerplate and technical knowledge. Below, you’ll find our standard signup authentication API in XanoScript, and a representation of what it might look like in other languages.

Code Volume & Complexity

  • XanoScript: ~30 lines of clear, concise code
  • Node.js: ~80+ lines across multiple files with multiple dependencies
  • PHP: ~80+ lines with manual request handling and validations
  • Python/Django: ~80+ lines with model definitions, serializers, and views
Each traditional implementation requires:
  • Multiple files: Models, controllers, routes, services, DTOs, migrations
  • Framework-specific patterns: Decorators in NestJS, hooks in GORM, ActiveRecord in Rails
  • Configuration boilerplate: Setting up authentication, validation, database connections
XanoScript provides a unified, single-file approach that encapsulates the entire functionality.
query auth/signup verb=POST {
  description = "Signup and retrieve an authentication token"
  input {
    text name
    email email
    password password
  }

stack {
db.get user {
field_name = "email"
field_value = $input.email
} as user

    precondition if (`$user == null`) {
      error_type = "accessdenied"
      error = "This account is already in use."
    }

    db.add user {
      data = {
        created_at: "now"
        name      : $input.name
        email     : $input.email
        password  : $input.password
      }
    } as user

    security.create_auth_token {
      dbtable = "user"
      expiration = 86400
      id = $user.id
    } as authToken

}

response {
value = {authToken: $authToken}
}
}