This is a follow up from another thread that asked for feedback on how long it took to build an app. A common theme from that thread is the waste from rookie errors that then need to be reworked once a better approach is learned. I am going back and improving some of my early work and thought I’d share a few of the most glaring errors I made here, and invite others to contribute as well.
All the below learnings have in common that the initial thinking appeared to work fine, but were vastly sub-optimal. And as a rookie, we’re just extremely grateful that we got something to work at all. But looking back, doing things right the first time would have saved a lot of aggravation.
Text Elements are very functional and customizable
Original thinking: I need to place my text elements in a group in order to get borders and conditional states to be functional.
Improved thinking: Text elements’ borders and conditional states can be used for features such as menus. Looking back now I have many instances of completely unnecessary nested groups, where the text element alone would have been just fine. Groups are only needed for placement and responsive control, but a group containing one other element is probably a waste.
Groups can be an image
Initial thinking: I need to place an image within a group.
Improved thinking: I can use the group itself to contain the image by using image as the data source.
You don’t always need a custom state for filters
Original thinking: I need a custom state for each constraint within an RG.
Improved thinking: The constraints can function perfectly off the input element (e.g. dropdown, radio button).
Understanding how to link Data Types
Original thinking: I need to create my own unique record in a table so I can link to other tables.
Improved thinking: Bubble provides all the linking capability needed through the unique ID, and they’re called types, not tables. And the records are called Things not records.
Child data is available in RGs
Original thinking: I need to search for linked types within my RG to show data that isn’t within the main data source type.
Improved thinking: Following on from the previous learning, once the data structure is set up correctly, RGs can access and display a linked type’s fields. A follow on from this is avoiding “search for’s” to the greatest extent possible as they slow things down significantly.
Don’t use workflows on a list
The bottom line here is these fail when record count gets into the 100’s. Rather set up single step workflows that call themselves… ala “do while” loops.
This is my initial brain dump. If this thread gets some traction, I’ll add more as they come to mind, and again… feel fee to add yours.