I really like Workshop. It’s incredibly powerful, the UI options produce clean apps, and I’m genuinely proud of the dashboards I build here. But there is one thing I absolutely cannot get the hang of: the Workshop Variable system.
Coming from a traditional repository code background, I’m used to organizing my logic neatly into folders and separate files. Trying to manage Workshop Object Sets, UI variables, and Custom Functions all in one flat list feels like complete chaos as a newbie.
Right now, the chain of actions hurts my brain: I have to create an Object Set, add a filter to it, create an aggregation variable to count the rows, and then link that to a KPI card. To fight this “variable fatigue,” I’ve started using a single TypeScript Custom Function to handle all my KPI calculations on the backend just to keep my Workshop variable panel clean. It feels like a solid workaround, but is it a bad architectural practice?
I really want to master Workshop! Does anyone have any pro-tips, naming conventions, or organizational habits that helped them conquer variable chaos?
Hi @matchatea , its great to hear that you like what you are doing.
I would recommend you to spend time in exploring workshop, it is an application which has alot of hidden possibilities. Sometimes its upto your experimentation to get things the way you want, it might even surprise or turn out better that expectation. But, also on the flip side it can also be tricky when something so simple would require you to have a walkaround. It is fun to explore the platform.
I recommend to try out few ideas/features and then have a hard stop if something gets too complicated, either branch the app by embedding them together or introduce custom widget as per requirement.
Everyone has their own way of managing variables, I do it this way -
prefix with “[abc] variableName” where I change “abc” to either the type of the variable(string/bool/..) or name it to a functionality which it is tagged to.
It is also possible create folders if it gets beyond your control, so that it is easier to track.
My recommendation for variables is, be specific and have a limit (for example 50) before you start to branch a functionality/userflow.
If you are caught in something specific, post it in the community and Im sure you will have multiple possible solutions for a problem.
Have fun mastering Workshop!
Hi @matchatea,
Glad to hear you are trying out Workshop! It’s a powerful tool but variable management can get tricky at scale.
Some concrete suggestions:
- Use standard naming conventions. Typically builders use prefix conventions such as
[s] (for a string variable) or [global] (for a variable used across an app) to help order variables and distinguish between them at a glance. I also suggest using separate words (e.g., [s] patient form title input) so that they’re easier to read and so the search bar matches across individual words (rather than the camel case patientFormTitleInput).
- Use the (new) variable lineage view. Last week we announced a new variable lineage graph for Workshop here. It’s a new interactive way to explore dependencies between variables that was never possible before.
- Use embedded modules. Modules that use hundreds of variables (or over a thousand, in some cases) become illegible and unwieldy. We recommend sketching out the full design of your application as early as possible and identifying where you can embed modules in a parent module. This approach increases the modularity of your apps and helps prevent complexity from overwhelming any single module.
- Use variable folders. You can add variables to a “folder” (a named category) as an additional step to keep variables without explicit dependencies more discoverable.
The Workshop team has also discussed ideas about how to improve the usability of the variable system with additional product investments:
- Better automatic variable naming.
- Enhancing the variable sidebar to illustrate the hierarchy between widgets + variables.
- Migrating the “folder” framework to a “tag” framework.
- Surfacing folders across the app better.
- Improving folder searchability.
- Further developing AI FDE integration so that AI FDE can manage variable complexity across your application.
These are just a few of the things we’ve discussed, so please let us know if any particular features would dramatically improve your building experience in the app.
Hi @gwalker, I just looked into the dependency graph,
“Show computation time” is per user when something is computed or is it in general when the backing data is updated?
How exactly can we estimate computation time of the variable(because it can be expensive based on how often it gets computed-number of occurances or the size of the data that is returned) because the last computed alone dosent determine the value or the cost exactly.
-I’m excited about AI FDE integration for reading and managing variables.