# How to deploy a Bubble app

- Tool: Bubble
- Difficulty: Beginner
- Time required: 15-20 min
- Compatibility: Starter plan+ (Free plan cannot deploy to live)
- Last updated: March 2026

## TL;DR

Deploy your Bubble app to production by reviewing Privacy Rules, testing workflows in development mode, running the Issue Checker, deploying to live with the Deploy button, monitoring post-deployment behavior in the Logs tab, and knowing how to roll back if issues arise. This checklist ensures a smooth launch.

## Overview: Deploying Your Bubble App

This tutorial covers the full deployment process for a Bubble app. You will run through a pre-deployment checklist including Privacy Rules and workflow testing, use Bubble's Issue Checker to catch problems, deploy to your live environment, configure a custom domain, monitor the app after launch, and learn how to roll back if something goes wrong. This is essential reading for anyone about to launch their Bubble app to real users.

## Before you start

- A Bubble account on a paid plan (Starter or higher)
- A fully built app with workflows, data types, and pages complete
- Test data and test user accounts for verification
- A custom domain purchased (optional but recommended)

## Step-by-step guide

### 1. Run the pre-deployment checklist

Before deploying, review these items: go to Data tab then Privacy and verify every data type has appropriate Privacy Rules (especially User and any sensitive types). Check that no API keys are exposed in page elements — all secrets should be in plugin settings or API Connector with Private checked. Verify all pages have proper titles and meta descriptions in Settings for SEO. Test the app as a non-admin user using the Run as feature to check permission issues. Review all workflows for error handling.

> Pro tip: Create a checklist data type or use a spreadsheet to track each item — rushed deployments are the top cause of post-launch issues.

**Expected result:** All Privacy Rules are reviewed, API keys are secured, SEO metadata is set, and the app works correctly for all user roles.

### 2. Use the Issue Checker

Click the Issue Checker icon in the top toolbar (the checkmark icon). Bubble scans your app for problems like broken references, missing data sources, incomplete workflows, and unused elements. Fix all errors (red items) before deploying — these will cause runtime failures. Review warnings (yellow items) and decide which to address. The Issue Checker does not catch logic errors, so manual testing is still essential.

**Expected result:** The Issue Checker shows zero errors and only acceptable warnings.

### 3. Test thoroughly in development mode

Open your app in Preview mode and test every user flow: registration, login, core features, payment (with Stripe test cards), and edge cases (empty inputs, large data sets, mobile viewport). Use the Debugger (bug icon in preview) to step through workflows and inspect data. Test as different user roles by logging in with test accounts. Check that emails send correctly using Bubble's email logs or your email service dashboard.

**Expected result:** All user flows work correctly in development mode across different user roles and device sizes.

### 4. Deploy to live

Once testing is complete, go to the deployment page by clicking the blue Deploy to Live button in the top right of the editor (or go to the Deployment tab). You will see a comparison of changes between your development version and the current live version. Review the changes list carefully. Click Deploy. Bubble will copy your development version to the live environment. This typically takes 10-60 seconds depending on app complexity. Your app is now live at yourapp.bubbleapps.io.

> Pro tip: Deploy during low-traffic hours if you have existing users. The deployment process briefly interrupts the live app.

**Expected result:** Your app is live and accessible at the bubbleapps.io URL or your custom domain.

### 5. Set up a custom domain

Go to Settings then Domain/email. Enter your custom domain (e.g., app.yourdomain.com). Bubble provides DNS instructions — typically add a CNAME record pointing your subdomain to your Bubble app URL. If using a naked domain (yourdomain.com without www), you need an A record or a redirect from your DNS provider. Wait for DNS propagation (up to 48 hours, usually much faster). Bubble automatically provisions an SSL certificate once DNS resolves correctly.

**Expected result:** Your custom domain points to your Bubble app with a valid SSL certificate.

### 6. Monitor and roll back if needed

After deploying, go to the Logs tab to monitor server logs for errors. Check the app as a real user — visit the live URL and test key flows. Watch the Workload metrics in Settings to ensure WU usage is within expected ranges. If you discover a critical issue, you can roll back: go to the Deployment page and click Revert to previous version. This restores the last deployed version. Note that database changes (new records, modified data) are NOT rolled back — only the app logic and UI revert. For complex launches requiring zero-downtime deployment, consider working with RapidDev.

**Expected result:** The live app is monitored for errors, and you know how to revert if a critical issue appears.

## Complete code example

File: `Workflow summary`

```text
DEPLOYMENT CHECKLIST — WORKFLOW SUMMARY
========================================

PRE-DEPLOYMENT CHECKLIST:
  [ ] Privacy Rules set for ALL data types
  [ ] API keys in Private fields only (not in page elements)
  [ ] All pages have SEO metadata (title, description)
  [ ] Tested as non-admin user (Run as feature)
  [ ] All workflows have error handling
  [ ] Issue Checker shows zero errors
  [ ] Tested registration + login flow
  [ ] Tested core business flows
  [ ] Tested payment flow (Stripe test cards)
  [ ] Tested on mobile viewport
  [ ] Tested email notifications
  [ ] Removed test data or use separate dev database
  [ ] Favicon and app name set in Settings
  [ ] 404 page customized
  [ ] Page load redirects work for protected pages

DEPLOYMENT STEPS:
  1. Click Deploy to Live button (top right)
  2. Review change comparison
  3. Click Deploy
  4. Wait for completion (10-60 seconds)
  5. Verify live URL works

CUSTOM DOMAIN SETUP:
  1. Settings → Domain/email
  2. Enter custom domain
  3. Add DNS records at domain registrar:
     - Subdomain (app.domain.com): CNAME → app.bubbleapps.io
     - Naked domain: A record or redirect to subdomain
  4. Wait for DNS propagation
  5. SSL auto-provisioned by Bubble

POST-DEPLOYMENT MONITORING:
  - Logs tab: watch for server errors
  - Settings → Metrics: monitor WU usage
  - Test key flows on live URL
  - Check email delivery
  - Monitor page load times

ROLLBACK PROCEDURE:
  1. Go to Deployment page
  2. Click Revert to previous version
  3. Note: database data is NOT reverted
  4. Test that rolled-back version works

STRIPE LIVE KEYS (when ready):
  - Switch pk_test_ → pk_live_
  - Switch sk_test_ → sk_live_
  - Update webhook endpoints to live URL
  - Do NOT change keys until deployment is confirmed
```

## Common mistakes

- **Deploying without reviewing Privacy Rules** — Tables without Privacy Rules are accessible to any user via the Bubble API, exposing sensitive data Fix: Review every data type's Privacy Rules before deploying. Ensure sensitive types (User, Payment, etc.) have appropriate restrictions.
- **Forgetting to switch from Stripe test keys to live keys** — With test keys, no real payments are processed and customers see errors when trying to pay Fix: After confirming the deployment works, switch Stripe publishable and secret keys to their live versions in the plugin settings.
- **Using Cloudflare proxy (orange cloud) for DNS** — Cloudflare's proxy interferes with Bubble's SSL certificate provisioning, causing SSL errors Fix: Set the DNS record to DNS-only mode (grey cloud icon) in Cloudflare so the traffic goes directly to Bubble's servers.
- **Expecting database rollback when reverting the app version** — Bubble only reverts app logic and UI — database records created or modified after deployment stay as-is Fix: Understand that rollback only affects the app version. For data issues, you need to manually fix records in the database.

## Best practices

- Run the Issue Checker and fix all errors before every deployment
- Test as a non-admin user using the Run as feature to catch permission issues
- Deploy during low-traffic hours to minimize disruption to existing users
- Set up a custom domain on a paid plan for a professional appearance
- Use DNS-only mode (not Cloudflare proxy) to avoid SSL certificate conflicts
- Monitor the Logs tab and WU metrics immediately after deployment
- Keep a deployment log noting what changed in each version for easier debugging

## Frequently asked questions

### Can I deploy on Bubble's free plan?

No. The free plan does not allow deployment to a live URL. You need at least the Starter plan ($29/month) to deploy and access a custom domain.

### How long does deployment take?

Typically 10-60 seconds for most apps. Very large apps with many pages and workflows may take a few minutes.

### Will deployment affect my existing users?

There may be a brief interruption (a few seconds) during deployment. Users on the app at that moment may need to refresh their page. Deploy during low-traffic hours to minimize impact.

### How do I set up a staging environment?

Bubble's development version serves as your staging environment. You can also duplicate your app to create a separate testing copy. The live version is your production environment.

### Can I deploy only specific changes?

No. Bubble deploys the entire development version to live. You cannot selectively deploy individual pages or workflows. Review the change comparison carefully before deploying.

### Can RapidDev help with complex deployments?

Yes. RapidDev specializes in Bubble development and can help with deployment planning, security audits, performance optimization, and custom domain configuration for production launches.

### How do I know if my deployment succeeded?

After clicking Deploy, Bubble shows a success message. Visit your live URL to verify the app loads correctly. Check the Logs tab for any immediate errors.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/deploy-your-app-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/deploy-your-app-in-bubble
