The setup I'm running
I have been shipping wallpaper apps on iOS and Android as an indie developer since 2014. Even after the catalog crossed 50 million cumulative downloads, the person writing the code is still just me. For the past few months, my desk has had two AI-assisted environments sitting side by side: Rork for spinning up new projects, and Claude on Xcode for maintaining the older native iOS apps that have been in the App Store for years.
After a month of working this way, the kinds of tasks that fit each tool — and the kinds that should not be forced into the other — have started to settle in my hands. These notes were stitched together in the margins of a notebook during a maintenance lull.
Why I kept both, instead of picking one
I went into this expecting to pick a side. Rork would let me share most code across iOS and Android. Claude on Xcode would let me consolidate everything around SwiftUI and stay close to the Apple ecosystem.
After about two weeks I realized that, for the way I actually work, keeping both running was the configuration with the least friction.
The reason is simple: building a brand new app and maintaining an app that has already been on the App Store for several years are two genuinely different jobs. Even with the same kind of AI assistance, the way you hold the tool changes depending on whose code you are touching.
Where Rork clearly fits
When I'm prototyping a new wallpaper app, Rork has a real edge.
I describe the requirements in a prompt and the project starts with Expo Router navigation, AsyncStorage for local persistence, AdMob banner and interstitial slots, and a structure already shaped for shipping to both App Store and Google Play in parallel.
For what is now roughly my thirtieth wallpaper-style app, about 80% of the structure is the same as the previous one. Rork's value to me is that it does not make me write that 80% again from scratch.
A concrete number: getting a new project from "describe the requirements" to "the build is green" used to take me about two full days. With Rork that step has been collapsing into about half a day. The AdMob mediation tuning and Crashlytics dSYM wiring still need manual work afterwards, but that's outside Rork's territory anyway.
Where I kept reaching for Claude on Xcode
For the older native iOS apps that have been live for years, Claude on Xcode is the more comfortable tool in my hand.
The reason is that the codebase mixes SwiftUI and UIKit, has a hand-rolled Coordinator pattern, and still carries a few Objective-C headers from earlier eras. Asking Rork to "regenerate" something here would be dangerous — it would risk breaking review history, store URLs, and existing in-app purchase flows.
With Claude on Xcode I can keep the file layout exactly as it is and touch just the one file I want to change. The flow that has worked best for me is: paste the actual Xcode build error into the chat, talk through the cause and the fix, then Cmd+R to verify the behavior in place.
The most memorable repair this month was the iOS 26 foreground notification change. Claude on Xcode walked me through the release notes and proposed exactly the right branch to add to my UNUserNotificationCenter delegate. I could verify it on a real device the same hour.
// The branch Claude on Xcode suggested, which I dropped straight in.
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
if #available(iOS 26.0, *) {
completionHandler([.banner, .list, .sound])
} else {
completionHandler([.alert, .sound])
}
}It is only a handful of lines, but this kind of "fit the existing context correctly" repair is exactly what native maintenance needs the most.
Where I draw the line, in practice
After a month, here is roughly how I split the work in my head.
- Spinning up a new app or a high-confidence prototype → Rork
- Maintaining and gently tuning an existing native iOS app → Claude on Xcode
- AdMob mediation tweaks and App Store Connect chores → Claude in Chrome (separate territory)
The last one — AdMob and store consoles — is browser-driven work, so neither Rork nor Claude on Xcode is the right hand for it. Each tool has a comfortable grain size; the month mostly reminded me of that obvious fact while I was actually using them.
A few rules I gave myself to keep things calm
Carrying more than one tool tends to multiply the small daily decisions, so I gave myself just three rules.
- The first 30 minutes of the day are only for deciding which desk today's work belongs on.
- When I use both in a single day, mornings are Rork and afternoons are Claude on Xcode — split by clock, not by mood.
- If a build stays broken for two hours, I switch to the other side of the desk for the rest of the day.
The third one comes naturally from something I absorbed as a child from my two grandfathers, who were both temple carpenters: when your hands stop, change direction rather than push harder. Switching surfaces has, more often than not, ended up improving the finish.
What I'd like to try next
Now that the parallel routine has steadied, the next thing I want to try is bundling the output of both into a single release. Specifically, I want to take the menu-screen theme from a Rork-built new app and import it as a Swift Package into the settings screen of an older native app, so the visual tone matches across the catalog.
It's still in the early stages. I'll write up how it went, in the same matter-of-fact tone, in next month's update.
There is no single "right tool" — the operating rules sharpen quietly as you use the tools next to each other. If you happen to be trying both, I hope this is useful. Thank you for reading.