can be initialised by an expression that is automatically called when the watch starts
are updated first ( before any other object/layer ) every watch cycle/tick based on an update expression
Having such variables would greatly improve the efficiency of watch face “programs” that currently have multiple layers all having to calculate the same expression a number of times every second. Not to mention the great reduction in complexity that would speed development and reduce the time needed to debug.
I currently think a ‘white box’ engine is a better / cleaner approach:
supports time/date arithmetic, including calendar (events) and timezones
supports custom (user) variables (as number, string, or time/date values)
supports boolean and state fields (vast improvement over current/new -decr/+incr/reset), including initial state and coupling (conditional logic, triggered by variable change/update)
returns time/date fields (based on calculated values, with the preferred locale, 12/24, style, etc.)
could be extended to: astronomical/astrological data (Earth, Sun, moon, planets), enhanced fitness analysis (rest/work periods, targets, trends), etc.
This would greatly simplify the Facer engine (for Creator, or on the watch/device), and (as you noted) greatly reduce the amount of computation each UI update (time-tick/event). And all those customised tags and functions, that only support certain needs/preferences, could also be expunged.
Just like VAR a user defined variable can be a layer with two fields: expression and name. Then from another layers it can be referenced as a tag: #UserVariableName#