I had a go at building both a Mac and iOS dictation app the other day (dictator.robgough.net) thinking that with Claude's input, this probably wouldn't work... but it was a real problem I had, and I wanted to see how far we could get. Best way to learn the tools, right? I'd already spent the day playing with alternative apps that didn't quite do what I wanted.
The app itself is fairly straightforward, but it included some intermediate complexity in terms of audio capture and calling local models. Both something I'd never done, and as not-a-mac dev something I probably wouldn't have attempted for a side-project while I'm meant to be bootstrapping my own thing.
I didn't touch a line of code, and I was blown away. I'm so impressed in fact that I'm predicting we'll see a resurgence in native apps in the near future. By far the worst (and slowest) part of the process is having to deal with the App Store, and the ridiculous hoops you have to jump through to get past review.
That looks great! It's so clearly going to be the dominant way of working with your computer. I was such a cynic, so I was completely shocked at how quickly it became my favourite way to interact with my devices.
I'm fully expecting to be completely sherlocked during Apple's WWDC event in the coming weeks. In fact, I'm hoping we will be. However, I fear that they might not be quite ready for that yet. This functionality really should sit at the top OS level, equal to Keyboard/Mouse/Trackpad etc.
You need to have an Apple developer account. Then you need to submit your app to Apple for review. Then you need to comply with a list of sometimes arbitrary corrections/requirements that they send back (there is a document that specifies what you need to do, but it is not uniformly enforced in my experience). Then, eventually, you can list your app on the app store.
It’s not super onerous, but it is much more annoying than the theoretical alternative of allowing people to install software of their choosing on their hardware (i.e. download the binary and run it)
For example the iOS app failed first time as I accidentally used "Free" in the app name, and the app declared support for UIBackgroundModes but they were "unable to locate any features that require persistent audio". The dictation keyboard switched you to the app, then if you left would keep recording... fairly basic and obvious stuff. I could have either gone back and argued the case, or simply rip it out which I opted for.
It's now failed again because: The keyboard extension does not provide any functionality when the "Full Access" setting is toggled off.
Well no, hardly my fault you've locked down the usefulness of third-party keyboards, but now I've added a full keyboard in there so it's a bit more useful without that access. I don't expect any users to ever see this. Admittedly this was more frustrating when that would be a couple days work, not just a quick prompt, to fix.
Good luck with your app. Don't worry too much, you can generally work through their issues... but it can be a slow process. Make sure you leave plenty of time between your submission and when you want to launch!
Do you want to release it to the general public or just a circle of friends and family? TestFlight lets you have up to a hundred users forever without ever truly releasing. I have a couple of home-relevant apps I am managing that way.
I think that's a fair question. For this app I didn't see the harm in releasing it. You have to pay for the account etc. to get it onto TestFlight anyway, so I might as well just put it out there. And avoids me having to resubmit every 90 days. There also wasn't a lot of custom "me" stuff in this one, but I could see going that route for other apps in the future.
I mean, in general I dislike some of the more extreme app store gating.. but if apps are getting vibe coded with little effort I think gatekeeping is more important than ever. I think "is the author willing to put in the work to pass review" might be a useful heuristic, and it could also prevent things like vulnerable software being published. Plus it amuses me to imagine big tech having to deal with the slop apocalypse they've created!
My problem with the gatekeeping is that it isn't applied fairly. It's a central control point where a government can put pressure on the gatekeeper to suppress undesirable content. Plus, there are billions of people in the world who cannot qualify for Google's latest guidelines for becoming a registered developer. My team's app https://www.appdevforall.org/code-on-the-go/ is about empowering those people and if sideloading goes away then they won't be able to build and share the apps they need.
Review times have already spiked, apparently, although I've never found them particularly good. There used to be a third-party website that tracked this via user submissions, though that was shut down when they made genuine efforts to improve timings several years ago as it was deemed no longer neccesary.
I think it's a fair criticism that there will be a lot of people putting "lower-quality" apps on there. I do think Claude did a better job of this than I would have managed. It certainly seems to work well enough.
I do believe Apple will have to rethink exactly what they want to gatekeep and why. If nothing else, in the context of allowing people to get more out of their powerful devices. For example, I wish my iPad Pro could actually do more useful things with it's M4 processor. Hopefully that's something the new CEO has on his list.
The app itself is fairly straightforward, but it included some intermediate complexity in terms of audio capture and calling local models. Both something I'd never done, and as not-a-mac dev something I probably wouldn't have attempted for a side-project while I'm meant to be bootstrapping my own thing.
I didn't touch a line of code, and I was blown away. I'm so impressed in fact that I'm predicting we'll see a resurgence in native apps in the near future. By far the worst (and slowest) part of the process is having to deal with the App Store, and the ridiculous hoops you have to jump through to get past review.