Lights, Camera, Action Button

Feb 28, 2025
6 minute read

The iPhone 15 Pro launched with a marquee feature, the Action Button. The Action Button set out to replace the mute switch, which had existed since the first iPhone was released back in 2007. The Action Button is a software-powered button, replacing what previously was a hardware switch that would toggle your phone’s silent mode on or off.

The appeal of the Action Button was that now you could decide what the side button should do for you. If you wanted it to be a mute switch, no problem, the Action Button can still be one. But if you want to use it to toggle your flashlight, launch the camera, or turn on Do Not Disturb mode, these alternatives and more are now possible. The unspoken downside has always been that it’s hard to decide what the Action Button should do, if it can only do one thing.

There are ways to set up the Action Button to show a menu of actions, but that makes the Action Button less convenient. You can use hacks like Federico Viticci's MultiButton, which made it possible to assign separate tap and double-tap actions to your Action Button.

Two iPhones side by side. The first is highlighting an Action Button, the second shows the available actions

These workflows and many others were built off of the Action Button’s ability to run a Shortcut, but none of them ever stuck for me. While you may get a more powerful Action Button, you also get a more complicated one — trading off flexibility for fiddliness.

Then after 18 months with the iPhone 15 Pro, I had a breakthrough. This idea came to me in a dream (literally, not metaphorically), and last month I discovered a way to use the Action Button that is useful across apps, without tying myself to one action for the Action Button.

Our First App-Specific Action

My most common use case for the Action Button has always been to save links from my clipboard to Plinky, the link-saving app I make. You may be thinking, “Plinky has a share extension which lets you save links from any app, so why do you need the Action Button to save links from the clipboard?” Because the app I send and receive links from most, Messages, surprisingly does not have a share button.

Before mapping the Action Button to a “Save Link to Plinky” Shortcut, whenever a friend sends a link to me over iMessage I would have to go through multiple steps to save a link. Copy the link into my clipboard, open Plinky, and save the link manually. This was tedious, especially if I wanted to save multiple links, so I decided to take advantage of Plinky’s built-in Shortcuts support to create a one-tap action, letting me save links from anywhere.

At the same time, this action is mostly useful to me in Messages — it's not as important when I'm in an app like Safari or Slack. This meant we were back to where we started: there's this really useful action mapped to my Action Button, but I don't need it all the time. That got me thinking, why can't I create one dedicated action per app, which I can use to build a more flexible Action Button?

An iOS 18.2 Interlude

iOS 18.2 brought a very important change to Shortcuts, one that made the technique I’m about to share possible. There is a new Get Current App Shortcut block, which unsurprisingly, will tell you what app you currently have open. Once I was able to figure out the current app, it became possible to conditionally run actions based on the current app.

Action Mode

Now that we have all of the necessary pieces, we can build out our custom App-Specific Action Button workflow. (I’ve called mine Action Mode.)

Shortcut Sample.jpeg

Let’s walk through this image step by step, to see what’s happening here. It’s a bit long, but I promise it’s not scary.

  • We set our Shortcut to receive input from the Share Sheet. This allows us to run this Shortcut from an assortment of locations. If there is no input, I’ve chosen to fallback to the Get Clipboard function.
  • We create a bunch of if blocks, one per app. This will allow us to run a different action based on the result of Current App. You’ll notice there are no else blocks, we’ll get to that in a little bit.
  • When Current App is equal to an app we’ve chosen to have a Custom Action, we now run said Custom Action. That Custom Action can be anything, it doesn’t even have to be related to the current app we’re in. (As you see in the example when the Current App is Messages.)
  • You can create as many Custom Actions for as many apps as you’d like, the only limit is your imagination.
  • At the end of the list we have a Fallback Action block. This is an optional action to run if press the Action Button outside of an app with a Custom Action. I’ve mapped it to adding a Reminder to my Groceries list, an action I take often.

Note: The way we know to enter the fallback action block is a bit unconventional, and is predicated on the hasRunAction variable. Instead of having infinitely nested else blocks for every Current App check, we populate the hasRunAction variable whenever we run a Custom Action. This is slightly more error prone because we can forget to populate the hasRunAction variable, but leaves our Shortcut significantly more manageable and flexible.


Long Live Apps

The great thing about this system is that it’s easy to get started, and easy to add new apps to your workflow the more ideas you come up with over time. I started off with a handful of apps, but now it’s grown to over a dozen.

A few examples for how I’m using my App-Specific Action Button:

  • Plinky: Open my Reading List
  • App Store: Open the App Updates tab - Via URL scheme: itms-apps://apps.apple.com/updates
  • Castro: Toggle the sleep timer (so I can listen to a podcast while falling asleep)
  • ChatGPT: Start a new ChatGPT Voice conversation
  • Craft: Open my Plinky Roadmap doc
  • Fantastical: Switch to my Personal Calendar Set
  • GitHub: Open the repo of Boutique (my most popular open source project)
  • Ivory & Mona: Generate a screenshot of the Mastodon post in my clipboard
  • Messages: Save the a link from my clipboard to Plinky
  • MyWater: Log 12 ounces of water
  • Photos: Open the Favorites album
  • Safari: Open Reader Mode
  • Slack: Switch to my Red Panda Club Slack - Via URL scheme
  • Things: Open my Today list

These are just my workflows, but the possibilities for configuring your Action Button are personal and limitless. If you need a template to start with, here is the Action Button Sample Shortcut I created, identical to the screenshot above.

Now all that’s left to do is to assign our Action Mode Shortcut to the Action Button, which we can do in the iOS system Settings. And viola, that’s the App-Specific Action Button system — some would call it a Shortcut — to a better workflow.

Joe Fabisevich is an indie developer creating software at Red Panda Club Inc. while writing about design, development, and building a company. Formerly an iOS developer working on societal issues @Twitter. These days I don't tweet, but I do post on Threads.

Like my writing? You can keep up with it in your favorite RSS reader, or get posts emailed in newsletter form. I promise to never spam you or send you anything other than my posts, it's just a way for you to read my writing wherever's most comfortable for you.

If you'd like to know more, wanna talk, or need some advice, feel free to sign up for office hours, I'm very friendly. 🙂