Bubble.io tutorials

How to make a navigation with Tabs in Bubble ? (2024)

Thomas COUDERQ
September 24, 2024

Tabs are widely used across the web. It's useful and convenient way to build a navigation system for your app.

In this tutorial, we are going to learn how to create this type of tabs for your Bubble app :

Step 1 - Build your Bubble Tabs UI

​Building tabs in Bubble is pretty straightforward, but there is a small trick you need to know.

To make your Tabs responsive, you need to make sure they become horizontally scrollable when needed.

This way you ensure Users will still be able to use them on Mobile.

The best way to do this is to use a Repeating Group to build our Tabs UI.

Not only will this make our tabs responsive, it will also make them much easier to maintain, since you will only need to modify the main Tab, and all the changes will be applied to the other Tabs.

So let's get started :

Let's start by adding a Repeating Group to our Page, and give it the following settings :

bubble tabs with repeating group
how to make tabs in bubble

As you can see above, I unchecked the "Fit width to content" checkbox. This is important to make sure that Repeating Group will become horizontally scrollable later on.

If you want to learn more on how to achieve Horizontal Scroll in Bubble, we made a tutorial on that --> Click here to read it

Now that is Repeating Group is set, we can start creating our Main Tab. This is our Tab "Template" in some sort.

So let's start by adding a Group into our RG as well as a Text element for our Label.

In this example I'll be making this type of Tabs :

bubble tabs component
Want to use pre-made Tabs ? Check out our library !

You can style it as you want. In this article we'll focus more on making it work !

bubble tabs tutorial

Alright, now that we've got our Main Tab, we need to add a Data Source to our Repeating Group.

Here you have two main approaches :

1 - Using Dynamic Data

This method is good if you want to use something that is stored in your Database or as an Option Set.

For example if you're building a Task manager, you might to use these Tabs to filter tasks by their Status (e.g Pending, Completed, Late etc...)

In this case you'll want to use dynamic data, like follows :

​A - Add your content type and your Data source to the RG (can be an Option Set or a Data Type)

bubble.io tabs tutorial

B - Set the Content type and the Data Source on your Tab's Group

how to make tabs in bubble

C - Set your text Element to display the Label

tabs label in bubble

And there you go. You should now see your Labels displaying correctly !

You can move to Step 2.

2 - Using Static Data

In some other cases, you might to use Static Data (i.e text).

It can be useful in order to avoid creating a new option set or new data types for examples.

To do this, you can use the operator "arbitrary text" in combination to the "split by" operator.

The "split by" operator will convert a single text into a list of text, based on a specified separator.

Here's how to do it :

A - Set your Repeating Group's Data Source and Content Type

making a tab in bubble with static data

Now as said earlier you'll need to use an arbitrary text combined with a "split by" operator, like below :

bubble.io arbitrary text with split by
bubble.io split by operator

B - Set your Tab's content type and Data source

making tabs in bubble.io

C - Display your Tab into the Text Element

making tabs in bubble

And there we go, how Repeating Group now has the right content. 

Let's move to Step 2

Step 2 - Build your Tabs workflows

Alright, now that we've got everything setup, we can move on to building the logic that will make our Tabs alive !

2A - Create a custom state

To do this, we'll first need to create a Custom State that will store the Active Tab.

bubble.io tabs with a custom state

You can attach it where you want, but in my case I like to add onto the Repeating Group. It makes it easier to duplicate it if you want to reuse it.

IMPORTANT : Make sure that the type of your Custom State is the same as your Repeating Group's.

Also, make sure to set a Default Value if you want to have a Tab selected by default.

2B - Create our workflows

Now that we have our Custom state ready, we need to actually update it when a Tab is clicked.

To do this, simply add a workflow to our Tab's group. 

This workflow will use the "Set state of an element" action :

bubble workflow to create a tabs

And voilà ! Nothing difficult.

Step 3 - Making our Tabs react

Now that our Custom state is being updated correctly, we need to actually reflect those changes, i.e to make the Tab have an "active state".

To do this, we can add some conditions to our Tab's Group and it's label.

The number of properties of your conditionals will depend on the design you want, but the conditions will be the same as below.

Basically, you want to reference your custom state (in my case it's Repeating Group Tasks statu's activeTab) and compare it to the value of the Current Cell of your Repeating Group.

If it's the same value, then it means that the Tab selected is this one, and that you need to modify it's style.

bubble.io tabs conditionals
bubble tabs with conditionals

And there you go, all you need now is to adapt it to your own design !

Step 4 - Display the right content

Now that we have our Tabs made, we need to know how to actually display the corresponding content.

Well this is pretty basic.

All we need to do is to use the value stored in our Custom State to add conditionals to display the Right thing when needed.

Here's how to do this :

1 - Hide your elements by default

bubble show tabs content

2 - Add a conditional to make them appear when needed

bubble tabs navigation

And there you go ! Repeat the operation for your other content containers and you'll be good to go !

3 (optional) - If you want to filter a Search

On a side note, you could also use the value of your Custom State in a Search Constraint.

This would be useful for filtering out Repeating Groups based on the Tab selected (for example, showing only completed Tasks when the tab "Completed" is selected).

Ship your project in days, not weeks.

The most complete and diverse components library for Bubble. All you need to build on Bubble, faster then ever.
Start building
No credit card required

Latest Articles