Why is my Bubble app slow and why are capacity units exploding?
Why is my Bubble app slow and why are capacity units exploding?
Bubble apps slow down and capacity bills spike for three predictable reasons: workflows that run on every page load and should be deferred or batched, Do a Search queries without indexes or tight constraints that scan every row in a growing table, and repeated API Connector calls for data that rarely changes. The fix is measurable: audit the workflow list, rank by capacity consumption, add indexes where Bubble lets you, cache repeated calls, and batch analytics beacons. Typical results: 3×–10× speedup and a 30–60% capacity bill reduction in a 2-week optimization pass.
Quick fix for Why is my Bubble app slow
Step 1 — Open the capacity graph and find the hot workflows
Bubble’s app metrics show capacity consumption over time. Open the last 30 days, sort by workflow, and list the top 10 capacity consumers. These are your optimization targets. Most apps have two or three workflows that dominate the list — fix those and the bill drops measurably.
Deeper fixes when the quick fix fails
- 02
Step 2 — Audit every Do a Search for constraints and indexes
For each Do a Search in a hot workflow, verify: (a) there’s at least one constraint narrowing the scan to <1,000 rows, (b) the constraint field is a good candidate for an index. In Bubble, add database constraints on high-cardinality search fields — user IDs, date ranges, status enums. Uncontrained searches on growing tables are the #1 performance killer.
- 03
Step 3 — Defer or batch analytics and beacon workflows
Most page-load workflows don’t need to run synchronously. Identify workflows whose output isn’t needed to render the page (analytics beacons, last-seen timestamps, feature-flag refreshes). Move them to backend workflows fired by a single “page view” event, batched together. This alone cuts capacity on trafficky pages by 30–50%.
- 04
Step 4 — Cache repeated API Connector calls
For any external API call returning data that changes slower than your page-view rate, cache the result. Bubble lets you store API responses in a data type with a timestamp; read from the cache, refresh asynchronously when the timestamp is stale. A 5-minute cache on a call that’s made 400 times per minute cuts the load by 99%.
- 05
Step 5 — Move heavy work to scheduled off-peak workflows
Reports, data exports, bulk recalculations — none of these should run during peak traffic. Bubble supports scheduled workflows that run at specified times. Move heavy periodic work to 2am user-local-time, and serve cached results during the day.
- 06
Step 6 — Measure after, and set up a capacity alert
Re-run the capacity graph after each change. Expect the hot workflows to drop out of the top 10 and the overall bill to decrease 30–60%. Set up a capacity alert that emails you if usage spikes above your baseline — that’s your early warning for the next regression.
When to upgrade capacity vs. migrate
If after a full optimization pass your capacity bill is still >$1,000/month and still climbing, the decision shifts from “optimize” to “migrate vs. upgrade.” Higher-tier Bubble plans are expensive; a Next.js + Postgres stack on Vercel + Supabase usually costs $100–$500/month at the same traffic level. See our migration comparison to see the numbers at your scale.
Why AI-built apps hit Why is my Bubble app slow
Capacity units are Bubble’s unit of compute — a composite of CPU, memory, and concurrency allocated to your app. Every workflow tick, every Do a Search, every API Connector call, and every page render consumes capacity. At low traffic, capacity is plentiful and cost is a flat monthly fee. As traffic scales, capacity consumption grows non-linearly if workflows aren’t optimized, and the cost curve catches founders by surprise.
The three root causes:
Workflow bloat.Every element on a page can trigger workflows on load. Analytics beacons, feature flag checks, role lookups, notification counts — each is cheap alone but expensive in aggregate. A typical un-optimized Bubble page runs 15–40 workflows on every render; the same page after optimization runs 3–6.
Unindexed search. Bubble lets you search any field on any data type. Without tight constraints (filters that narrow the scan to a small subset of rows), a Do a Search walks every row every time. A table that was fast at 1,000 rows crawls at 100,000 rows.
Repeated API calls.Every page that calls an external API through Bubble’s API Connector pays for that call in capacity and in latency. Data that changes hourly is often fetched every page load — which is almost always wrong.
“The dashboard loaded in 8 seconds. Customers were complaining. Turned out every load ran five nested searches the same dashboard did. Cache one, 380ms.”
Diagnose Why is my Bubble app slow by failure mode
The capacity graph will tell you where the cost is. The workflow editor will tell you why. The table below maps what you’re seeing to the specific fix.
| Symptom | Root cause | Fix |
|---|---|---|
| Page loads slowly for everyone | Workflow bloat on page load | Defer non-critical workflows |
| Search page slow as DB grew | Do a Search without tight constraints | Add constraints; add database index |
| Capacity bill spiked this month | One workflow running on a loop | Find the hot workflow in capacity graph |
| API-backed pages slow | External API called on every view | Cache API result; refresh async |
| Background jobs crowding traffic | Scheduled workflows running in peak hours | Move heavy jobs off-peak |
| Same workflow spiking unpredictably | N+1 query inside workflow | Rewrite to batched search |
Related errors we fix
Still stuck with Why is my Bubble app slow?
If your app is slow and the bill is climbing:
- →Capacity spend is above $500/month and still growing
- →Page load times exceed 3 seconds for any critical page
- →Customers are complaining about slowness
- →You're considering an expensive Bubble plan upgrade
Why is my Bubble app slow questions
What are Bubble capacity units?+
Why did my Bubble capacity bill triple this month?+
How do I add an index in Bubble?+
Can I cache API results in Bubble?+
Should I upgrade my Bubble plan or optimize?+
At what point is migrating off Bubble cheaper than staying?+
Ship the fix. Keep the fix.
Emergency Triage restores service in 48 hours. Break the Fix Loop rebuilds CI so this error cannot ship again.
Hyder Shah leads Afterbuild Labs, shipping production rescues for apps built in Lovable, Bolt.new, Cursor, Replit, v0, and Base44. our rescue methodology.
Why is my Bubble app slow experts
If this problem keeps coming back, you probably need ongoing expertise in the underlying stack.