JSON, CSV & XML conversions, regex with capture groups, deduplicate, group by, multi-key sort, compare lists, SHA-256, UUID, Base64 encode/decode, fuzzy search, stats, slugify. 39 data tools Bubble Mobile lacks, all on the device (0 WU).
Run list operations, CSV/JSON/XML conversions, hashing, UUID and Base64 generation on the device, instead of in backend workflows or API calls that consume workload units.
<aside> ☝️
The plugin ships with a context document you can paste into Claude, ChatGPT, Gemini, or any AI assistant. Once pasted, it knows every action, field, state, event, and common pitfall, so it can pick the right action, write your Bubble expressions, or diagnose an error for you.
Download it here:
</aside>
Bubble's native mobile builder gives you a solid set of expression operators —
uppercase, find & replace, sum / average, :formatted as, and so on. But
to deduplicate a list by a key, sort by two columns, hash a
password, parse a CSV, read a value out of a JSON string, or generate a UUID,
you hit a wall: you either can't do it at all on the device, or you push the work
to a backend workflow and pay for it in Workload Units (WU) and latency.
Data Toolbox is four invisible elements that run entirely on the device, at 0 WU, doing the data work Bubble Mobile can't do natively:
| Capability | Bubble Mobile (native) | This Plugin |
|---|---|---|
| Set operations on two lists (intersection, difference, symmetric difference, union) | ❌ | ✅ |
| Deduplicate a list by a key field | ❌ | ✅ |
| Sort by several keys at once (then-by) | ❌ | ✅ |
| Sort by a custom formula | ❌ | ✅ |
| Group a list by key | ❌ (backend) | ✅ |
| Chunk / zip / flatten / shuffle (secure) lists | ❌ | ✅ |
| Regex with capture groups | ❌ | ✅ |
| Regex replace with $1/$2 backreferences | ❌ | ✅ |
| Fuzzy / typo-tolerant search | ❌ | ✅ |
| Slugify (accent-stripping URL slugs) | ❌ | ✅ |
| Mask sensitive text (email / phone / custom) | ❌ | ✅ |
| Title case · word count · template fill | ❌ | ✅ |
| Variance & standard deviation | ❌ | ✅ |
| Generate a number range | ❌ | ✅ |
| Random integer (optionally secure) | ❌ | ✅ |
| Round to tens / hundreds, float-safe | partial | ✅ |
| Clamp · map range | ❌ | ✅ |
| SHA-256 hashing on device | ❌ (MD5 only) | ✅ |
| Base64 of text on device | ❌ (file, server-side) | ✅ |
| Generate a UUID | ❌ | ✅ |
| Parse / build CSV | ❌ | ✅ |
| Parse XML, read / build / pretty-print JSON | ❌ | ✅ |
| Runs on-device at 0 Workload Units | — | ✅ |
Everything is original, dependency-free JavaScript (the only native module is
Expo's expo-crypto, used for secure hashing and UUIDs). No API keys, no
external services, no server-side setup, no per-use fees.
Note on Bubble's native operators. This plugin is deliberate about not duplicating what Bubble already does well on the device (uppercase/lowercase, character count, sum/average/median/min/max,
:rounded to,:formatted as, URL-encode, MD5). Those run client-side at 0 WU already, so wrapping them would add nothing. Every function here fills a real gap.
The plugin is four invisible elements, one per family: