The addition of parameters to shortcuts in iOS 13 isn’t just a new developer technology for third-party apps: because of parameters, Apple has updated nearly all of its built-in actions to support them, and in the process shipped a reimagined Shortcuts editor that changes some fundamental aspects of building shortcuts.
At first glance, the new Shortcuts action editor may look similar to its predecessor, with the addition of new colors and bolder descriptions. In reality, the editor has been entirely redesigned around parameters, following two key principles: the editor focuses less on managing the vertical data flow between actions, and more on performing operations with individual actions; and, each action is presented with a more expressive, natural language label that describes its purpose with a sentence. This is a profound rethinking of how shortcuts are made: five years after the original launch of Workflow, Apple is introducing an editor UI that is neither Workflow nor Automator, but something completely new, heavily influenced by parameters and magic variables.
Apple’s first order of business was to move away from the traditional approach of building automations by having to manage variables as they flow top to bottom across actions. The Workflow team had started doing the same, to a certain extent, with magic variables back in 2017, and Shortcuts in iOS 13 completes that mission: the ‘Get Variable’ action has been removed from Shortcuts, and every action now has a parameter field where you can put a magic variable inside. The results are major code savings – shortcuts will be shorter because they’ll require fewer actions to perform the same function – and a more readable editor, with some caveats.
If you’re a longtime Workflow user, it’s likely going to take a while to wrap your head around the changes to the editor, so allow me to explain. In Workflow and iOS 12’s version of Shortcuts, you usually had to make sure you were “passing” the right variable to a series of actions; you would do this by “getting” the variable and connecting it to a subsequent action. In iOS 13, you need to let go of the concept of getting variables and passing them to the next block of actions. Thanks to parameter fields, magic variables can always be inserted inline within an action, removing the need to “pass them” through a dedicated step.
Let’s go over some examples. In iOS 12’s Shortcuts app, if you wanted to format the current date, you first had to get the date, then connect it to a ‘Format Date’ action. In iOS 13, the Date portion of the ‘Format Date’ action is a parameter; this means you can put the ‘Current Date’ variable (which is always available as a default variable) directly into ‘Format Date’, thus removing one action from the shortcut.
Playing a specific playlist from your Apple Music library used to follow similar rules. In iOS 12, you first had to get the playlist, then use ‘Play Music’ to start playback for the variable passed to the action. With the new Shortcuts app, the ‘Play Music’ action has a parameter (the Music portion of it) that lets you pick any item from your Music library without going through ‘Get Playlist’ first. Again, the result is one less action and a more readable, expressive action that displays its purpose in plain English.
Parameters have also been added to If blocks (which have received a major upgrade in iOS 13 – more on this below) as well as Repeat loops. While in iOS 12 you always had to make sure the correct variable was being passed to a loop, in iOS 13 the repeat loop iterates on the variable you specify in its own parameter field.
The code savings granted by the adoption of parameters in the new action editor are more apparent when dealing with long shortcuts that involve multiple conditional blocks and management of different variables. Conditional blocks have been vastly enhanced in iOS 13: while in iOS 12 they were limited to four fixed conditions (Equals, Contains, Is Greater Than, Is Less Than), Shortcuts in iOS 13 brings If blocks that have more conditions, and which are also dynamic depending on the variable they’re processing. Conditional blocks in iOS 13 support negative conditions (Is Not, Does Not Contain), can check for the beginning and end of a text string (Begins With, Ends With), and have more mathematical operators (Is Greater Than or Equal To, Is Less Than or Equal To, Is Between).
More importantly, conditional blocks can now check for the existence of a variable with the Has Any Value and Does Not Have Any Value conditions; in iOS 12, if you wanted to check whether or not a variable had any data, you had to do the dance of Get Variable-Count Items-If, and Get Variable again to process the data. Those were four actions that can now be cut to one action: in iOS 13, you can simply put a variable in the If action’s parameter field and check if it has any data with Has Any Value – that’s it.
Additionally, conditional blocks are dynamic: their available conditions change whether the parameter is some text, a number, a date, or another type of variable. This dynamic interpretation of the parameter type inside a conditional block is a terrific improvement over iOS 12’s limited, clunky conditional blocks.
With all this in mind, let’s look at a shortcut that presents a list of locations fetched from upcoming calendar events. In iOS 12, due to the less flexible conditional blocks and multiple ‘Get Variable’ actions, the shortcut is comprised of 15 actions; in iOS 13, I was able to cut the same shortcut down to 9 actions – a 40% decrease made possible by parameters and more powerful conditional blocks.
Get a list of upcoming calendar events that contain locations.
By now, you should hopefully have an idea of what switching from passing variables between actions to using parameters means for creating shortcuts. There’s more to the new editor than just how you input variables with parameters though.
First, the editor’s window has been updated: buttons to run and share a shortcut are now at the bottom of the screen so they’re easier to reach with your thumb on an iPhone; the shortcut’s name is displayed as a large title at the top, where you’ll also find a new button to open shortcut-specific settings.
Settings have undergone some reorganization: in addition to using a padded table view style in iOS 13, the screen (now called ‘Details’) no longer features an ‘Add to Siri’ button because all shortcuts can be invoked in Siri by their name now. Furthermore, to customize the color and glyph of a shortcut, you have to tap on its icon. The ‘Details’ screen also hosts the new privacy-related controls for access to apps and services, which are scoped on a per-shortcut basis.
Second, the action library (the panel that slides up from the bottom on iPhone – a sidebar on iPad) now always comes up displaying a grid of categories, which are bolder and easier to tap, plus suggestions based on shortcuts donated by apps and tracked by the system. Top suggestions are broken down by frequently used apps, followed by a list of everything else. Suggestions are always based on a specific type of action: you’ll see contact shortcuts for the ‘Send Message’ shortcuts and playlists for the ‘Play Music’ action. You can either add the suggestion with the pre-filled information into the shortcut, or add the vanilla action by tapping the ‘i’ button next to its header.
Suggestions never clicked for me in iOS 12: browsing them required too many taps and they weren’t contextually suggested based on specific actions I’d performed inside an app. The suggestion-based system is much improved in iOS 13, and I found myself often accepting a suggestion and adding it to a shortcut because it was indeed an action I’d frequently performed before. I believe this feature has the potential to help newcomers overcome the intimidating nature of a new empty shortcut: speeding up actions you perform on a regular basis is exactly what automation should be all about.
Seemingly in an effort to simplify shortcut creation, Apple has reduced the number of categories in the library from 12 to 6; in addition, when viewing the list of actions available for a specific category, each action’s description field is now hidden by default.
I’m not sure why the description field needed to be hidden (if anything, it made browsing actions easier…?), but I understand the motivation behind the streamlined category grid. In iOS 13, Apple has rolled actions from the Calendar, Contacts, Health, Home, Music, and Photos categories into an improved Apps category, which now displays native shortcuts for all apps (both Apple-made and third-party ones) installed on your device.
The new Apps category is my favorite change to the action library in iOS 13: for the first time, Shortcuts provides a unified, one-stop destination for all app-related actions. It only makes sense to integrate actions such as Photos and Health – which most people associate with the respective apps on their devices – with a section labeled ‘Apps’. As a result of suggestions and the redesigned Apps category, I’m finding actions more quickly, searching a bit less, and overall enjoying the shortcut creation process more. With Shortcuts becoming a built-in app in iOS 13, I think shipping a redesigned, friendlier library was a good idea, and I have a feeling it’ll be successful.
The third major change of the editor involves how variables are assigned to parameters and the visual design of both. When you drop an action into the editor, Shortcuts now automatically gives it a parameter based on the preceding action. For instance, if you have a ‘Select Photos’ action and drop ‘Repeat with Each’ after it, a ‘Photos’ variable will be placed in the ‘Items’ parameter field of the Repeat loop – no need to manually assign it. Shortcuts performs this automatic parameter assignment every time you drop a new action or rearrange existing actions – assuming an action you’re re-arranging doesn’t already have a parameter you manually assigned to it first.
This was clearly meant to speed up and simplify the shortcut creation process, which, as you can see, is a recurring theme in Shortcuts this year. I think it’s a good idea: in my tests, Shortcuts correctly identified parameters for actions I dropped in the editor most of the time, sparing me the trouble of having to pick a magic variable by hand. For those times when Shortcuts puts the wrong variable in a parameter field, or if you just want to use a different one, you can still tap a variable to inspect its details and clear it, as in iOS 12.
From a visual standpoint, the big difference between the Shortcuts editor in iOS 12 and 13 is the expressive, natural language design adopted by Apple this year, which often eschews segmented controls, separate text fields, and toggles in favor of a “sentence-like” structure where fields are tappable parameters. Actions tend to be more compact in iOS 13 because of this approach, but Apple is also more aggressively hiding advanced action fields behind a ‘Show More’ button. Compare the following Reminders and Calendar actions between iOS 12 and iOS 13 for example:
These two actions serve as a perfect summary of the differences between the old Automator-inspired editor and the new natural language, parameter-based one in iOS 13. In the old Shortcuts app, actions exposed each field with a label and used various interface elements for different types of variables. To me, that felt like a design rooted in the tradition of macOS automation with menus influenced by Automator, designed by programmers for programmers who also wanted to carefully control every field and variable. I loved it, but I’m not surprised Apple got rid of it.
In iOS 13, actions are displayed as a description of what they do, written in plain English. They are sentences with a main predicate (“add”, “find”, “get”, etc.) and, using parameters, you customize their objects by picking from variables and other options.
Here’s another example:
The expressive nature of actions, with their bold descriptions written in plain English, does make for a more readable editor, particularly for users who have never played with automation before; it’s quite obvious that Apple’s priority this year was making Shortcuts more approachable for millions of users who will find it on their Home screens as a built-in app.
The new action design, however, is not without flaws.
Because all configurable elements in actions are highlighted in blue now, it sometimes is hard to tell variables and plain text apart within the same field. The ‘Show Alert’ action is an egregious example of this downside: in addition to hiding the ‘Title’ field behind ‘Show More’ by default (which I consider a mistake), the body text of an alert has a blue background color in the editor, which wraps across multiple lines and blends with the blue color of a variable. Judge for yourself:
Look at this other alert in dark mode. It’s impossible to easily discern the blue variables against the blue background of the alert’s parameter field:
In iOS 12, variables clearly stood out in fields thanks to their pill-shaped token design; in iOS 13, because both the background color of parameter fields and the variable color are similar shades of blue, everything blends together and is hard to visually differentiate. Another consequence of this design decision: it’s harder to tell that you can tap on variables to expand them and see details of a variable because they’re less inviting to the touch and blend in with the background color instead of standing out from it.
I can go on. When you’re extracting a specific key from a dictionary variable, iOS 13 no longer displays the main dictionary label alongside the key label, resulting in a more confusing appearance:
The ‘Date’ action is also a regression from iOS 12: while in the old app the action validated a natural language date you typed into its field before continuing, the iOS 13 version doesn’t perform validation at runtime at all:
There are a handful of other smaller issues and idiosyncrasies that could be mentioned, but these are the most glaring ones in my opinion. I recommend checking out this Reddit thread if you want to see more examples (I don’t agree with all of it, but it’s a good compendium).
Lastly, in terms of upgrading from iOS 12 to iOS 13: because the updated Shortcuts app no longer features a ‘Get Variable’ action, the system will update all your shortcuts to eliminate ‘Get Variable’ and insert the variable in the action where it would have served as input. For example, if in iOS 12 you had a combination of ‘Get Variable - Adjust Date’, in iOS 13 the Shortcuts app will automatically reformat your shortcut to delete the ‘Get Variable’ action, placing the variable into the ‘Adjust Date’ action as a parameter instead.
I upgraded my Shortcuts library twice this summer (with two separate accounts), once for iOS 13 beta 1, then for iOS 13 beta 4. The second time, the migration process was nearly flawless, with old ‘Get Variable’ actions being replaced by other actions and parameters falling into the correct places. That said, if you depend on Shortcuts for important tasks like I do, I would suggest double-checking that the upgrade process was performed correctly once the system finishes updating to iOS 13.
Despite its few missteps, I believe the new Shortcuts editor design is a step in the right direction. Its natural language design makes actions more expressive: long action flows have become shorter and more legible at a glance; by replacing various types of UI controls and fields with parameters displayed in plain English, the editor should feel less intimidating to new users, of which Shortcuts should have plenty in iOS 13. Parameters, more intelligent Siri suggestions, the redesigned action library, and descriptive actions come together in a cohesive package that should allow power users to craft advanced shortcuts with fewer actions, all while enabling newcomers to get started with ease.
There’s never been anything like Shortcuts’ new natural language editor in other automation tools before; I’m curious to see where Apple goes from here.