This section takes a long-form look at how Bubble manages different types of data. To see the concise, technical description of data sources, operators, comparisons, search and privacy, you can check out our more concise core reference entry on data.
Introduction
Working with data is fundamental to any application. In fact, it’s such a core aspect of app development that it’s difficult to imagine an app that doesn’t rely on data in some way. Whether the data is generated by users, managed by you, or imported from external services, the ability to collect, store, and display information is what enables most applications to function.
Consider a ride-sharing app—it requires data on drivers, customers, and locations to complete a transaction. A social media platform relies on user profiles, photos, and user-generated content. A news website needs articles and images. While these apps handle different types of data, they all follow the same fundamental principles of data management: collecting, storing, and presenting information to users.
The ability to work with data is what allows apps to do what they do best: provide value to users.
Not only do most apps by their most basic definition work with data, but they mostly all do it in the same way: by storing the data in a database.
In this section, we'll cover many topics related to data in Bubble:
How to manage the data in your database
Managing files uploaded by your and your users
Working with static data
Working with temporary data and variables
Managing users and letting them sign up for an account in your app
What is a database?
The database is like the unsung hero of the tech world. It quietly sits in the background, doing its thing, while most users don't know how it works or even that it exists. All they see is a nice-looking user interface that always seems to have their data ready. But without the database none of those apps and websites would be of any use.
So how does a database work? Imagine a massive spreadsheet with hundreds, thousands, or even millions of rows and columns, where each cell contains a piece of data. Each row represents a single entity, such as a customer or an order, while each column defines a specific attribute, like a name or order number.
This comparison isn’t just a metaphor—a spreadsheet is a type of database. However, the databases used in web applications are designed for speed, security, and efficiency. They can process complex queries, retrieve specific records instantly, and handle vast amounts of data without slowing down.
That's why great applications are those who put a lot of work into the combination of working efficiently with data and great design. A social media app like Facebook or a video app like TikTok would not be very interesting if all they presented was a spreadsheet of likes and URLs to video clips; the data and design go hand in hand to create a success story.
Bubble's database
Setting up and managing a database has traditionally been a complex task, often requiring specialized training, such as a degree in computer science, along with additional education and certifications.
One of Bubble's key advantages is its built-in database, which is automatically configured when you create your app. This eliminates the need for dedicated database administrators, allowing you to focus on building your app without worrying about backend infrastructure.
Bubble handles most aspects of database management for you, including:
Creating the database when you first set up your app
Setting up and maintaining two separate databases: one for testing and one for live users
Keeping it operational and maintaining uptime
Encrypting its content to store and transfer it securely
Take point-in-time backups that can be recovered at any time
Privacy Rules keeps user data securely protected, based on who is trying to access it
Creating and maintaining user profiles with secure passwords
Regular vulnerability testing
You can read more about Bubble's security on our dedicated security page. Page: Bubble security
Types of data
As you develop your Bubble application you'll find that you need to store data in different ways, and we split these into three categories:
Dynamic data (the database)
Dynamic data (the database)
Dynamic data refers to information that users interact with in real time—creating, reading, editing, deleting, searching, and aggregating as needed. This includes a wide range of data types that are actively used and modified, such as social media posts, customer records, blog articles, eCommerce products, and chat messages.
All of this information is stored in the database, allowing your app to manage and present it efficiently based on user interactions.
Article: The database
Temporary data (custom states and URL parameters)
Temporary data (custom states and URL parameters)
Temporary data refers to information that your app needs to store while it is running. In traditional programming, this concept is known as variables. Temporary data can be used for various purposes, such as handling navigation, performing calculations, keeping track of user selections, or storing user input that doesn’t need to be saved permanently. Essentially, it is any information that is only needed while the app remains open.
In Bubble, temporary data is stored using Custom states—which are variables attached to elements on the page—or URL parameters, which store information within the page’s URL.
Article series: Temporary data
Article: Custom states
Article: URL parameters
Static data (Application texts and Option sets)
Static data (Application texts and Option sets)
Static data refers to information that remains consistent or changes infrequently. This includes lists of options such as states, countries, colors, or categories, as well as text-based content like headers, menu options, error messages, and translations. It can also encompass predefined settings such as membership types, gender, or interests.
Bubble offers two distinct ways to store static data, each designed for different use cases:
App texts (translations)
App texts are static strings of text displayed throughout your app, such as headers, tooltips, explanatory text, menu options, page titles, and metadata.
App texts differ from option sets in that they are specifically designed to hold strings that can be translated into different languages. This provides an easy way to prepare your app to be available to a global audience.
For example, if you add an App text entry with "Welcome to my app," you can then add translations of that text in other languages, such as German and Hindi. Bubble will automatically display the appropriate translation based on the user's preferences. You maintain full control over which languages are available and how users set their preferred language.
App texts can be used for translations, but they don’t have to; they also provide a simple way to manage all static text in your app in one place.
App texts are intended for public information—they are not encrypted and should not store any sensitive information.
Option sets
Option sets let you store any type of unchanging information like in the examples above. It can be single values like a text or number or a list of values that can be used in elements like checkboxes, radio boxes and dropdowns.
Option sets, as the name suggests, allow you to set up a collection of options that you can manage in one place, making it easy to maintain and update as needed. They require your app to be deployed before updates are visible to users, unlike dynamic database data, which can be changed in real time.
Option sets are meant for public information – they are not encrypted and should not contain any sensitive information.
Article series: Static data
Article: Application texts
Article: Option sets