On May 11th I launched GizmoPack for iPhone and iPad. GizmoPack is a utilities app for Shortcuts, an app that allows you to write little ‘programs’ that run on your phone. It allows you to connect various things on your phone with each other. Here’s an example of something you can do with my app:
This shortcut uses the built-in action to fetch a CSV-file, followed by my ‘Query with SQL’ action to retrieve the most common last names of US legislators.
I was playing around with Shortcuts, when at some point I reached a wall—I realized I wanted to interpret some XML files (without resorting to regexes), and I was missing something akin to fzf, which I use quite extensively on the command line. So I decided to take a stab at creating an Intents Extension. With an Intents Extension you can extend the available actions by providing some with your app. Thankfully I spent some time at Shopify working on the mobile app—I was already familiar with Xcode and its quirks.
I started working on GizmoPack in early March, the week before everything started shutting down in Western Europe. I worked on it on and off for the next two months, before launching it in May. In that time I added 17 different actions to the app. Turns out being locked inside for two months leaves you with a lot of extra time.
On May 3rd I announced that I would be launching GizmoPack on May 11th, naively thinking it would be easy to just slap on an in-app purchase and get the app accepted by Apple. I proceeded to go through an incredibly annoying back-and-forth with App Store review, because my in-app purchase would work locally, but kept failing for the reviewer. I begged the reviewer to please provide me with some logs or any kind of information to go on, but they only provided me with the copy and pasted reply that my app failed.
I ended up filing a Technical Support Incident which ended up being pretty great. I described my issue, and the support engineer provided me with an immediate solution. The problem in the end was that I attached the Transaction Observer in the wrong location, doing it in a static variable instead of in the
didFinishLaunching method. This caused StoreKit to get into a weird state where all transactions would fail—but only while reviewing of course, never locally. In the end I came out disappointed with the App Store review process, but pleasantly surprised with the Technical Support engineer. Only thing to note is that you have two TSIs included with you Apple Developer subscription, after which they cost $50 per incident. This seems easily worth it if you’re running into a blocker before a launch.
Screenshots and Press Material
Creating all the screenshots and stuff was a total pain in the ass. Having an app that has essentially no UI didn’t help either. In the end I used fastlane to automatically set up simulators and take screenshots. I also contributed to add a built-in config option to reset the status bar to show 9:41 and full reception. In the end I’m not that happy with the shots, but I’m not sure it matters too much. I doubt there’s a lot of people who randomly stumble on my app, reckon it’s mostly people who read about it somewhere and know what they’re getting into. My app just doesn’t have that much of a visual component right now so it’s hard to come up with some good screenshots.
When I said earlier that I launched on May 11th, I kinda lied. I sneakily uploaded the app onto the App Store on Saturday May 9th, just to make sure that everything went according to plan, and then didn’t announce it until Monday. The launch went smoothly, only one minor bug came up, which was that a custom icon I added last-minute didn’t work on iPad. Otherwise it was smooth sailing.
How did it do?
On the first day of release, I got a total of 893 downloads and 94 purchases, which I’m very happy with! As an experiment I have decided to make a page on the site that displays exactly how many downloads and in-app purchases I’ve gotten. It’s a bit barebones as of writing, but most importantly it just shows how many downloads and purchases I have in total.
Note: I wanted to add total sales and proceeds too, but you can’t download that data until you have $10,000 in sales. So please buy my app 😄
Why I decided to make it public? I got inspired by Pieter Levels, but honestly I just wanted an opportunity to play around with the App Store Connect API and generating SVGs. Interfacing with the API was quite straightforward, you can find the script I used here.
I’m quite happy with how the app performed, although the interest dropped quite quickly. Right now I think the app has quite a niche appeal, since a lot of the actions I’m adding are only for power users—you basically need programming experience to figure out a use case for them. Which brings me to the next topic!
This year I watched WWDC closely, trying to pick out anything they announced which I could integrate into my app. The biggest announcement was widgets, which I’m working to add support for in GizmoPack.
With this new feature it’ll be possible for anyone to create their own homescreen widgets powered by Shortcuts. I can’t wait to see what people build with it.
You should follow me on Twitter!