The object variable type is a really powerful method of managing data and communicating in apps. Outside of connectors, I find they’re very helpful for:
- Indicating to other users when variables “go together” for similar functions
- Making it easier for users to copy functions across apps without losing track of what data needs to be present to run a function
- Provide a “copy” of table record structure, when I want users to be able to verify their edits to data before submitting it to tables
- Very quickly clearing a ton of data (since clearing an object also clears all its attributes)
- Overall just keeping the variables menu clean and easy to read
- Object Lists can act as mini tables for data you want want to be referenced in apps, but keep version controlled.
However, there are a limitations with objects in the current engine for variables/logic:
- Attributes are part of the variable configuration menu, so attributes can’t be added, removed, or changed when any parts of the object get referenced anywhere else in the app
- Names of attributes also can’t be changed once the object is referenced anywhere in the app
- The functions that can be used with the top-level objects are very limited (just “=” and “=/=”)
- Object lists have some odd handling behavior (specifically: you can’t select an object variable from a table and edit it in place like you can with table records)
- The space for entering defaults for variables is very cramped, so object default values can quickly become illegible when setting up more complex objects (for example, an object that includes an object list as an attribute)
- All object usage references are allocated together, so you can see where an object is referenced but not where its specific sub-parts are referenced
It would be really great to see a few of these issues squashed, for example by untying attributes and attribute names from the data type of the object, so that they can be edited, or by updating the UI of the app variables editor to give more space for default values.
Alternatively, some of these functions could also be accomplished in other ways. Some way to create “Variable groups” could replace objects for the purpose of annotating what variables should be kept together as part of the same functions.