Forum Academy Marketplace Showcase Pricing Features

Critical Concept: Group = Record Set

The first time I saw Bubble’s interactive Lessons I was blown away. How incremental instructions continually guide the user along. Especially with that little arrow that continually points to the exact next location needing my input. Wow! Amazing technology!

Maybe a new Hello World Lesson might be very helpful. I’ve been working with Bubble for a week now, and thanks to a little coaching from Gaby, I recently realized a core concept that has yet to be documented.

Place a Button and a Text element on the screen. Now try to add a Workflow to update the button with the phase, “Hello World”. It can’t be done.

Only by first placing the Text element in a Group, can this simple operation be accomplished. (Set the Content Type of the Group to Text, and the Dynamic Data of the Text item as “Parent group’s text”)

Normally with traditional languages, before data can be read into a program, a set of fields must be defined to receive the data. This internal set of fields is often called a record-set.

The Group object in Bubble has two purposes. 1- To group items together. 2- And as a mandatory record-set for moving any data. Even static data. This concept is critical to understanding the Bubble architecture, which is not at all self evident.

Bubble started out as an easy no-code platform for non-programmers, but has now evolved to a full featured development environment. Once word gets out, I’m sure many more experienced programmers will be coming on board. Right now, this feels a lot like being in the right place at the right time.


… is probably the easiest way.

Or set a custom state.

Having stuff in a group to use as a data… tends to work best when it is more complex data. Conditional statements on the element itself handles most cases. For example a button that changes text depending screen context.


@NigelG Well there’s a whole new angle!! Who knew? You can control the actions of Buttons without even creating a Workflow off the actual Button. Good to know! That’s a very powerful option.

But… as I duplicated your example, the “Hello World” text only appears as long as you hold the button down. Maybe I missed something.

And, yes. I know this can be done with Custom States-- another equally important concept. I’ve been spending a LOT of time experimenting there as well.

Button presses don’t function like a workflow to save/modify any data. They’re more an element trigger the same way a hover works. So, the condition to be met here is the trigger, and then you can change properities of the element, but not initiate workflows that modify stored data. The text (whether static or dynamic) in the text element is considered a property here. Changing static text on a condition is close to changing stored data, but not really the same, as the data (the text) is “stored” in the element as a property setting. Similarly, changing dynamic text on a condition doesn’t actually modify data in the database, you’re just swapping it out for something else (or adding/subtracting static text to/from it).

Gaby | Coaching Bubble


Although if you want them to function that way you can … If you make an empty field appear (with a condition) on press, then run a workflow when it is visible but make it a one off you can have a button press that makes “hello world” appear.

Although quite what the practical purpose of this is escapes me :relaxed:

1 Like

The simplest Hello Word with the same button :slight_smile:
Estimated time: 12 seconds (can be done faster).


@NigelG I meant no disrespect by posting this topic. I struggled with this simple operation, and only found success, after I was told to put the Text element in a Group. Which was an important step forward for me. I just thought it was a concept that might help others as well.

Obviously, from your instructions and from @JohnM’s graphics, I was wrong. Though… and I feel really embarrassed about this. I still haven’t gotten the Hello World Button and Text element to work without using a Group or Custom State as a secondary field.

Maybe someone could just show me here:

Personally, I’m sold on Bubble!! I’ve already signed up for the Personal Plan, and I’ve purchased @iamsalar’s Build a Startup Course. Though… I must apologize for my errant enthusiasm, for I know I have posted incorrect instructions on more than one occasion.


I always remember my first time in Bubble (concepts, where are the things…). Hello World example is the first step (maybe too simple) but essential. As you said: has now evolved to a full featured development environment.

I just edit your’s :
hope it’s ok.


Oh, no, no, no. You were not wrong at all. My brevity was based upon time pressures rather than anything else. But realise it can look like I am being brusque.

You are right, I know of no way to make some text change (except briefly) based on a button press without a workflow.

And even in a workflow as you point out … you can’t do “make this text say this” … you need some other transport mechanism. Custom state or Group. And I managed to get it to do it with a one time condition - although that is a bit of a complex solution for something that just needs a custom state.

cakeheke called the custom state solution a “latching button” and we documented it here …

It shows how powerful Bubble is now, in that there are multiple solutions to even something fairly simple.

So apologies if what I wrote sounded like I thought you were mistaken. I should probably take more care in what I post sometimes, rather than just post a screen shot.


Thanks @JohnM for posting that screen capture. Yes, I’ve taken the instructions and examples from everyone: you, Nigel and Gaby and put them all together into one example. In case other new users, need clarification as I did.

1 Like