I use my paid plugin Data Jedi for this. Allows me to be more flexible and get better performance and cheaper WU costs.
Use conditionals to load the data source leaving the main data source empty is one way. But in terms of data structuring, I use a Hybrid Data Structuring approach that allows me to leverage all 4 of the data types available in native bubble, the custom data types, option sets, API Objects and Plugin Objects. I am able to then make use of ALL that Bubble offers natively for data structuring and not just the main two of custom data types and option sets.
When you open up and use a Hybrid Data Structuring approach and use all 4 of the data types available you have so many alternative ways to structure your data and therefore optimized approaches for different use cases. For example, if I have a large set of data that is hardly ever, or never changed, I can store that as a JSON file on an option set attribute instead of individual data entries of a custom data type.
There are ultimately so many different approaches somebody would need to take to truly optimize for all individual use cases of data within the same app, and also depending upon the app structure like if it is a SPA or multiple page app.
None of the above. I do not use backend workflows to help with performance and data structuring. External APIs are case dependent, where for a dashboard showing Stripe checkout sessions, I might just use Stripe API for that, but again, it is case dependent. I do not use SQL, and just use the Bubble database.
Good thinking. Too many devs have some notion that building faster means better.
Think through each individual use case for the type of data and how it will be used, and come up with an optimized solution for each type of data and do not just believe a one size fits all approach is optimal.
If the list is more than 50 items yes, but less than 50 items it is fine to store them as a list
I personally do not do this and instead just use conditionals on elements and data sources. I prefer to keep the app lean with one feature set that can be used across all users, but in some situations, it may be beneficial to split pages.
This is case dependent. Usually it is easier to have functions that run frequently be a backend workflow and just schedule the workflow from where ever it is needed. Just makes it simpler inside the editor.
Yes, definitely need to think through the use case of the data to decide on correct approach of either a list field or a separate data type with a 1:1 relationship.