What's inside a Bubble export

A Bubble application export is one large JSON object. This is what its top-level keys hold, and which tool reads which.

The keys

user_types

Your data types. Each entry has a display name and a fields object; each field has a display, a value describing its type, and optionally deleted and a default.

Read by: the Database Visualizer as its entire input, and by the Workflow Tracer and Audit to turn internal identifiers into readable names.

The value grammar is documented in full in the schema format.

option_sets

Your option sets. Each has a display and a set of values, each with its own display label, database value and sort order. Option values can carry arbitrary extra attributes — Bubble's own icon option sets, for example, attach an SVG URL to every option.

Note that the values live under values in some exports and options in others. LumiDevKit reads either.

pages

Every page in the app: its element tree, its properties, and its workflows.

Read by: the Workflow Tracer, Reusables Tree, Design System and Audit.

element_definitions

Reusable elements. Entries of type CustomDefinition are the reusables themselves; elsewhere in the file, a CustomElement is an instance of one placed on a page, referencing the definition by identifier rather than by name.

That indirection is why the Reusables Tree needs both this key and pages to build its hierarchy.

api

Backend API workflows, keyed by identifier, each with an event name.

Read by: the Workflow Tracer.

styles

Named style definitions.

Read by: the Design System tool. Optional: without it the tool still parses the element tree, it just has no named styles to report.

settings

App settings, split into two parts that matter a great deal:

  • settings.secure — credentials. This is deleted wholesale by the JSON Sanitizer.
  • settings.client_safe — a mix. It holds design tokens, colour swatches, default styles and breakpoints, which the Design System tool needs. It also holds API Connector configuration, Stripe keys, general keys and plugin keys, which are credentials despite the name.

"Client safe" means Bubble ships it to the browser. It does not mean it is safe to share.

_index and mobile_views

Internal bookkeeping. LumiDevKit does not read them.

Which tool reads what

The full mapping, with what happens when a key is missing, is in which file does each tool need?.

The short version

If you have the full export, every tool works. If you only have user_types and option_sets, only the Database Visualizer works — but that is also the only file an AI can write for you, which is the point of designing a database with AI.

View this page as plain markdown