Skip to main content
Quick SummaryBefore deploying your Xano backend to production, you need to validate that it’s ready to handle real-world usage. This involves checking performance metrics, building and running comprehensive tests, dry-running your application with test data, and optionally load testing with external tools. This checklist ensures your backend is stable, performant, and reliable before your users interact with it.
Deploying to production without proper validation is like launching a rocket without a pre-flight checklist—you’re flying blind. Deployment readiness is about confidence: knowing that your backend will perform as expected under real-world conditions, handle edge cases gracefully, and maintain data integrity. This guide walks you through the essential steps to ensure your Xano backend is production-ready.

How to Ensure Deployment Readiness

1. Check and Review Performance

Before deploying, you need to understand how your backend is currently performing and identify any bottlenecks or slow operations.
1

Access Performance Insights

From the Library tab in the left-hand navigation, select Performance Insights.
Performance Insights Location
2

Review Key Metrics

Analyze your backend’s performance across different time periods (last 24 hours, 7 days, or 30 days):
  • Average Execution Time: How long does each function or API take to run on average?
  • Total Execution Count: Which endpoints are being called most frequently?
  • Resource-Intensive Operations: Identify the top 5 slowest database queries or functions.
Focus on:
  • API endpoints that will receive high traffic
  • Database queries (especially Query All Records operations)
  • External API calls or Lambda functions
  • Background tasks that process large datasets
3

Optimize Slow Operations

For any operations that seem slow or resource-intensive:
  • Review the function stack to identify inefficiencies
  • Optimize database queries using filters, pagination, or indexes
  • Consider caching frequently accessed data
  • Break down complex operations into smaller, parallelizable tasks
  • Use mocking responses for external API calls during testing
4

Monitor Request History

Review your Request History to:
  • Identify failed API calls and their causes
  • Check average runtime across all endpoints
  • Review input/output sizes to ensure data payloads are reasonable
  • Filter by duration to spot performance outliers
Why this matters: Performance issues that are minor during development can become critical under production load. Identifying and resolving bottlenecks before deployment prevents user-facing slowdowns and service interruptions.

2. Build and Run Unit & Workflow Tests

Testing validates that your backend behaves correctly across all scenarios—both success cases and error handling.
1

Create Unit Tests for Individual Endpoints

Build Unit Tests for each critical API endpoint and custom function:
  • From any API or function, use Run & Debug to test with sample inputs
  • Once you achieve the desired result, click Create Unit Test
  • Define Expects statements to validate the output (e.g., “response.authToken is defined”)
  • Add multiple expect statements to test different aspects of the response
Create Unit Test
Best Practices:
  • Test both success scenarios (valid inputs) and failure scenarios (invalid inputs, missing data, etc.)
  • Use mock responses for external API calls to ensure consistent, fast tests
  • Set up auth token handling to avoid expiration issues during testing
2

Build Workflow Tests for User Flows

Create Test Suites (Workflow Tests) to validate multi-step processes:
  • From Library > Workflow Tests, create a new test suite
  • Add Run Stack functions to call your APIs in sequence (e.g., signup → login → purchase → confirmation email)
  • Add Test Expression functions to validate each step’s output
  • Test complete user journeys from start to finish
Workflow Test Example
Example workflow tests:
  • User registration → Email verification → Profile setup
  • Add to cart → Apply coupon → Checkout → Payment → Order confirmation
  • Data import → Processing → Validation → Export
3

Run All Tests and Review Coverage

From the Unit Tests page in your Library:
  • Click Run Test Suites to execute all tests at once
  • Review your coverage percentage (what % of your function stacks have tests)
  • Check your success rate (what % of tests are passing)
  • Filter by “Failed Only” to quickly identify and fix issues
Test Suite Results
Goal: Aim for 100% coverage of critical paths and 100% success rate before deployment.
Why this matters: Tests act as a safety net, catching bugs and regressions before they reach production. They enable you to deploy with confidence, knowing that your backend behaves correctly across all scenarios. Tests also enable continuous integration—as you make changes, you can quickly validate that nothing broke.

3. Use a Test Data Source to Dry-Run Your Application

Never test or iterate on your live production data. Use Data Sources to create isolated test environments.
1

Create a Test Data Source

  • From the left-side navigation, click on your current data source indicator (e.g., “Live”)
  • Click + Add Data Source
  • Give it a descriptive name like “Test” or “Staging”
  • Assign a distinct color (this color will appear throughout Xano to remind you which data source you’re using)
Create Data Source
2

Populate Your Test Data Source

You have several options:Option 1: Migrate from Live
  • Go to Manage Data Sources > Migrate
  • Select your live data source as the source
  • Select your test data source as the destination
  • Choose which tables to migrate
  • This creates a copy of your live data for testing
Option 2: Create Sample Data
  • Manually add representative test records
  • Use realistic data that mirrors production scenarios
  • Include edge cases (empty strings, null values, maximum lengths, etc.)
Option 3: Start Empty
  • For workflow tests that only add data, you can start with an empty database
3

Switch to Your Test Data Source

  • Click the data source indicator in the left navigation
  • Select your test data source from the list
  • All Run & Debug operations, unit tests, and workflow tests will now use test data
Switching data sources in Xano only affects your development work—it does not change what your live application uses.
4

Dry-Run Your Application Internally

  • Run through typical user workflows manually using Run & Debug
  • Execute your unit tests and workflow tests against the test data
  • Make changes and iterate without fear of corrupting production data
  • Test destructive operations (deletes, bulk updates) safely
5

Connect a Test Frontend (Optional)

If you have a frontend application:
  • Deploy a separate staging/test version of your frontend
  • Use the X-Data-Source header in API requests to target your test data:
    X-Data-Source: test
    
  • Or append a URL parameter:
    ?x-data-source=test
    
  • This allows your test frontend to interact with test data while your production frontend uses live data
Why this matters: Test data sources isolate your development and testing from production data. This prevents accidental data corruption, allows you to test destructive operations safely, and speeds up testing by avoiding the overhead of large production databases. For CI/CD workflows, separate data sources are essential for maintaining development, staging, and production environments.

4. Load Testing (External Tools Required)

Xano doesn’t provide built-in load testing, but you can use external tools to simulate high-traffic scenarios and ensure your backend can handle production load.
1

Choose a Load Testing Tool

Popular options include:
  • Apache JMeter: Open-source, highly configurable
  • Artillery: Modern, developer-friendly, YAML-based
  • k6: JavaScript-based, excellent for developers
  • Loader.io: Cloud-based, easy to use
  • BlazeMeter: Enterprise-grade, integrates with JMeter
2

Design Your Load Tests

Create scenarios that mirror real-world usage:
  • Concurrent Users: How many users will use your app simultaneously?
  • Request Patterns: What endpoints do users hit most frequently?
  • Ramp-Up Period: How quickly does traffic increase?
  • Peak Load: What’s the maximum expected traffic (e.g., during a product launch)?
Example scenario:
  • Start with 10 concurrent users
  • Ramp up to 1,000 users over 10 minutes
  • Each user performs: Login → Browse products → Add to cart → Checkout
  • Measure response times, error rates, and throughput
3

Configure Your Test Environment

Important: Load test against a staging environment or test branch, not production!
  • If you’re on Launch/Self-Serve Plans: Use Branching to create a staging branch
  • If you’re on Scale/Enterprise Plans: Consider a separate workspace or use Xano Link
  • Use a test data source to avoid impacting live data
  • Ensure your test environment mirrors production configuration
4

Run the Load Test

Execute your load test and monitor:
  • Response Times: Are endpoints responding quickly under load?
  • Error Rates: Are requests failing? What status codes are returned?
  • Throughput: How many requests per second can your backend handle?
  • Resource Usage: Monitor API and database node utilization (if you have access to these metrics)
5

Analyze Results and Scale Accordingly

Based on your load test results:
  • If performance degrades under load, review Performance Insights to identify bottlenecks
  • Consider upgrading your Scale plan if you’re hitting resource limits
  • Optimize slow queries, add caching, or refactor complex operations
  • Re-run tests after optimizations to measure improvement
Scale Plan Considerations:
  • API Nodes: Handle business logic and endpoint requests
  • Database Nodes: Handle concurrent database queries
  • As usage grows, you may need to upgrade from Scale 1x → 2x → 4x → 8x
  • Enterprise plans offer auto-scaling and horizontal database scaling
Why this matters: Load testing reveals how your backend behaves under realistic (or extreme) traffic conditions. It helps you identify breaking points, plan capacity, and ensure a smooth user experience even during traffic spikes. Without load testing, you’re guessing at your backend’s capabilities.

The Mental Model: Why This Flow Works

Deployment readiness is about progressive validation—starting small and building confidence as you expand your testing scope.

The Pyramid of Confidence

        🚀 Production
       /            \
      /   Load Test   \     ← External validation
     /                  \
    /   Dry-Run (Test)   \  ← Real-world simulation
   /                      \
  /  Workflow Tests (Flow) \ ← Multi-step validation
 /                          \
/    Unit Tests (Function)   \ ← Foundational validation
--------------------------------
   Performance Insights       ← Baseline understanding
  1. Performance Insights give you a baseline understanding of how things currently perform
  2. Unit Tests validate individual components work correctly in isolation
  3. Workflow Tests validate that components work together in realistic flows
  4. Dry-Running with Test Data simulates real-world usage without risk
  5. Load Testing validates your backend can handle production-level traffic
  6. Production Deployment happens with confidence, knowing you’ve validated every layer

Why This Order?

  • Bottom-up confidence: Fix individual issues before testing complex flows
  • Iterative refinement: Each layer reveals different types of issues
  • Risk mitigation: Catch problems early when they’re cheaper to fix
  • Data safety: Test data isolation prevents production data corruption
  • Performance planning: Load testing informs infrastructure decisions before you need to scale

Integration with CI/CD

This deployment readiness checklist integrates seamlessly with CI/CD workflows:
  • Dev: Build features, create unit tests
  • Stage: Run workflow tests, dry-run with test data
  • Pre-Production: Load test, review performance insights
  • Production: Deploy with confidence

Deployment Readiness Checklist

Before deploying to production, ensure you’ve completed:
  • Reviewed Performance Insights for the past 7-30 days
  • Identified and optimized slow-running queries and functions
  • Created Unit Tests for all critical API endpoints
  • Built Workflow Tests for key user flows
  • Achieved 100% test coverage for critical paths
  • Achieved 100% test success rate (or documented acceptable failures)
  • Created and populated a Test Data Source
  • Dry-run your application using test data
  • Performed load testing with external tools (optional but recommended)
  • Reviewed Request History for errors and anomalies
  • Verified that your Scale plan can handle expected traffic
  • Set up proper branching strategy for ongoing deployments
  • Reviewed OpenAPI documentation to ensure endpoints are clearly documented

Next Steps

Once you’ve validated deployment readiness:
  1. Publish your changes: Ensure all drafted work is published to your live environment
  2. Review your branching strategy: See Branching & Merging
  3. Connect your frontend: Follow the Connecting to a Frontend guide
  4. Set up monitoring: Use Request History and Performance Insights to monitor production performance
  5. Plan for scale: Review Adjust Server Performance if you anticipate growth
💡 Pro Tip: Deployment readiness isn’t a one-time checklist—it’s an ongoing practice. As you add new features, repeat these steps to maintain confidence in your backend’s stability.