One of @bubble's best gem operators: :formatted as JSON-safe
Use it to:
✅ Wrap texts in quotes automatically
✅ Convert yes/no ➔ true/false
✅ Format dates to ISO UTC
✅ Escape line breaks & breaking chars
✅ Quote list items individually
⚠️ Crucial: If you use it, remove the manual double quotes in your API Connector body!
Behind the scenes, it’s basically JSON.stringify().
Advanced @Bubble Tip: Stop polluting your live data
You can run global scripts in your header that only trigger on your version-live site using the app_version parameter.
It’s not just for clean Google Analytics; use it for:
✅ Live Chat (Crisp/Intercom)
✅ Marketing Pixels (FB/TikTok)
✅ Feedback widgets (Hotjar)
✅ Cookie Consent banners, etc.
No more test chats or "dev sessions" cluttering your production tools.
Just add your code here in Settings > SEO and metatags:
Stop wasting @bubble WUs.
Bubble evaluates conditions from left to right and stops early if the outcome is already determined.
❌ Slow: Search results > 0 AND Toggle is On
✅ Fast: Toggle is On AND Search results > 0
Put your lightweight checks first. Heavy operations last.
(The same applies to OR: if the first check is True, Bubble skips the rest!)
How we reduced a client’s search time from 48 seconds to instantaneous.
Avoid "Advanced Filters" in @bubble whenever possible. They kill speed because Bubble downloads all items to the page first and filters them later.
You might not notice this during testing, but it becomes a bottleneck once you have real data.
Ideally the DB structure should support all kind of searches without advanced filters, but that's not always possible.
The Fix:
We replaced an advanced filter (Screenshot 1) with a server-side constraint by:
1. Adding a "helper" RG to search for "Rejected" services (Screenshot 2).
2. Using a constraint on the main search: "Service is not in [Helper RG's results]" (Screenshot 3).
In this case, for just 70 results, the search went from 48 seconds to instantaneous.
The Result:
For just 70 records, the search went from 48 seconds to instant. The key is that the second search is small, and downloading the data to the page is not an issue.
Found this bug today in a @bubble app: Complex totals (discounts/tax/etc) can produce fractional cents like 298.5 →you'll get the error parameter_invalid_integer
Stripe amount must be an INTEGER in the smallest currency unit (USD-cents)
Best practice: always round amounts to 0
Always apply the DRY approach in @bubble: Don't Repeat Yourself
i.e., if a workflow can Create OR Edit, don't duplicate the field-setting steps
Create the thing if it doesn't exist, then run one "Make changes to a list of Things" on [new thing] + [existing thing]: first item, and set the fields just once
It'll save you time and maintenance down the road
Thank you @bubble for sharing these stats - very gratifying to see them at the end of the year!
Clearly Wednesdays are the best days for bubbling :)
Security tip: @bubble uploaded files are public by default.
Fix private files:
1. File uploader: tick “Make this file private” + attach it to a Thing (often Current User)
2. Privacy rule (that Thing’s type): allow “View attached files” only when Current User is the owner/creator
Brutal and super-quick @bubble security check: hit YOUR_BUBBLE_APP_URL/api/1.1/obj/user in a private window.
If you see real data → your Data API is leaking.
Fix it with robust Privacy Rules + disable all the datatypes you don't need in the Data API!
You definitely can’t build Calendly with 15 hours of prompting
But with dedication and @bubble you can build something better
Follow along as we launch Aircal: a smarter, faster scheduling tool optimized for having a streamlined calendar
buildinpublic.airdev.co


















