Bubble Docs

Using Option Sets

Option Sets allow you to have a static list of choices, "Options", which are global to your app. This is great for situations where you know ahead of time what options are possible for a variable - things like days of the week, marital status, team name for a given user, etc.
Our Academy tutorial on how to use option sets

Creating option sets

You can create, update, and delete option sets, like you would for regular custom types.
Tip: Name your Option Set something unique. If an Option Set shares the same name as a custom data type, this can cause unexpected behaviors down the line. For example, a note left on one would appear on the other.
Any option set in an app is part of the structure of the app - one implication of this is that a savvy outsider can see all of an app's option sets, their options, and their attributes. Do not put any sensitive information in an app's option sets!
For sensitive data, consider storing it in the app's database where it can be protected by Privacy Rules.

Defining attributes

Once created, you can add attributes to your options. Attributes are like fields on your custom types; they have a type and a name, and from each option you can access its attributes. There is an attribute common to all option sets: the Display attribute. This gets the name of your option, and is especially useful for displaying options inside of dropdowns.

Adding options

Next, you can add options to your sets by typing its Display in and clicking “Add option”. Once created, you can click on “modify attributes” to modify any of the additional attributes you created for your options.

Using options

You can use option sets anywhere you would use a normal custom type: as a field on a thing, as a type of a repeating group, etc. They are especially useful for dropdowns, but can have a wide variety of uses all around your application, by both speeding up existing functionality and helping with readability and good practices.
There are a couple of ways to actually use options. The first is a new global data source, "Get an option". This allows you, from anywhere in your app, to access any option on one of your option sets. You can also access the special “All options” selection to get a list of all options. Once you have the option you want, you can access its attributes or its display value.
In addition, Bubble is smart about suggesting options. If the field you are filling in requires an option, it will move all of the options to the top of the dropdown; likewise, if the field requires a list of options (like in a dropdown), it will push the “All ” selection to the top.

Options vs. custom types

It's technically possible to get many of the benefits of option sets using normal custom data types. You should consider option sets instead for a few reasons:
  • Options are faster to access, as they require no database reads.
  • Option sets are easily extensible to add new options and change existing ones. Renaming an option will propagate throughout your app.
  • Options sets are easier to use. They can be accessed from anywhere in your app, and are a lot easier to access than doing a search.
However, there are a couple of downsides compared to custom types:
  • There are no privacy settings for options. So, do not put sensitive data as an option’s display or one of its attributes.
  • To add new options or change existing ones, you must push a new version of an app, unlike regular data which you can add while your app is live.