At its core, Workflow is a visual programming app that deals with variables. Data flows through actions and is altered by the user until it has to be stored in a variable – a local reference that can be recalled in subsequent steps.
Since the app's original release, the Workflow team has done a commendable job at abstracting the complexity behind variable creation and management, but the feature itself is a vestige of traditional programming languages. The manually-saved variable is fundamentally ill-suited for Workflow's visual approach predicated on direct manipulation of actions. Workflow revolutionized several automation concepts, yet it was always anchored in the common practice of declaring variables between actions.
For the past year, I've been lamenting the sluggishness involved with setting variables and extracting additional details from them. Anyone who's ever created complex workflows has likely come across the same problem:
- There's a "master variable" that contains rich metadata (such as an iTunes song or an App Store app);
- You want to extract details from the master variable – e.g. an app's name, icon, or price;
- Each of the variable's sub-items has to be extracted by repeating a combination of 'Get Variable-Get Details of Variable-Set Variable' over and over.
Not only did this limitation make workflows slower to create – it also made variables difficult to explain and workflows harder to read for people who aren't proficient in iOS automation.
As someone who writes about iOS workflows on a weekly basis, I've been thinking about this issue for a while. Every time I had to explain the inner workings and shortcomings of variables, I kept going back to the same idea: Workflow needed to get rid of its clunky variable management altogether.
Here's what I proposed when Workflow 1.5 launched in May 2016:
"Instant Variables" to get details of a macro variable without doing the Get Variable-Get Details-Set Variable dance every time. You could save a lot of time if instead of fetching details of a variable multiple times you could use a single master variable and only specify where necessary which sub-details to use;
With today's 1.7 update, the Workflow team isn't introducing Instant Variables. Instead, they've rebuilt the engine behind variables on a new system called Magic Variables, which completely reimagines how you can create workflows and connect actions for even more powerful automations.
More than a mere tweak for power users, Magic Variables are the next step in Workflow's goal to enable everyone to automate their iOS devices. By making workflows easier to create and read, Magic Variables are the app's most important transformation to date, and the result far exceeds my expectations.