I recently started working for a startup, and they wanted an app.
What I shipped was a react native app (so I don't need to go in to Xcode to build), that renders a full screen web browser that points to our website. I've sprinkled in bits of injected JS to capture our cookies and local/session storage - which then gets saved to device storage and reinjected on app startup.
There are a few native-ish bits sprinkled in - onboarding, notifications, error screens, loading indicators, etc - but for the most part we don't need to worry about our API borking old versions (which is moving extraordinarily fast).
The only semi tricky bit was native auth integration - that needs treated with a bit more care, and stored securely, but it took a few days.
I ship the app to TestFlight and the AppStore using Fastlane from the command line, match handles the certs, and I never have to open Xcode.
It is honestly bliss, and i've heard a lot of app developers moving to this model (interestingly it normally follows a failed SDUX implementation)
* This is coming from someone doing iOS since the store opened in 2008. I've pretty much seen ALL the bad decisions at some point. There are projects I will not take no matter what the pay is.
Since you’re pretty new to mobile dev, count yourself lucky with the amazing dev tools you have today. Nothing like doing a bit of J2ME, Symbian S60 or BlackBerry development to learn to appreciate how far we’ve come.
I started my work on the J2ME era as well. Had to use textpad for development, and maybe eclipse at some point (which was pretty decent). Tools and simulators were all over the place.
https://developer.apple.com/documentation/xcode/giving-agent...
Noob question: Does that include local models?
Surprisingly, this version does not require MacOS 26 (Tahoe).
- X.0 (September): bumps Swift, SDK versions, etc. It also tends to have a noticeably longer beta cycle than other releases. - X.3 or X.4 (around March): bumps Swift again and raises the minimum required macOS version.
Other releases in between are usually smaller updates that add features or fix bugs, but they don’t involve major toolchain-level or fundamental changes.
Today’s release doesn’t bump the Swift version, which suggests the core toolchain is essentially the same as Xcode 26.2—so it makes sense that the minimum macOS version wasn’t raised either.
I think it is required for any AI support. Xcode will run with limited features on earlier OS's.
I've been using XCode for 10 years. For me, it's only improved and I don't have any real pain points. They are definitely fixing bugs. I make software for iOS, macOS, car play, and apple watch.
Sure sometimes I've got to reset or clear a cache, but this has never stopped my day.
What is so horrible about XCode?
This means you've learned to work around its shortcomings. A decade ago I used to develop in PyCharm for websites, and Visual Studio .Net for desktop apps. Then I had to learn XCode for a mobile app.
It was a surreal experience, like going back ten years in UX, while at the same time dealing with a myriad of modern but artificial limitations and breaking changes that meant the app needed frequent housekeeping even when its features remained unchanged.
For a company that gets a huge part of its revenue on its oversized App Store tax, developers, and their tooling, should be one of their highest priorities IMO. Instead, we get Kafkaesque situations like "my app doesn't compile today... oh, I need to open my Apple Developer account in the browser and accept a new little change in their kilometric EULA that I always pretend I've read carefully". Things like this could be handled better.
Edit: I also had to learn Android Studio for another app, and the experience had less friction overall, but that could mean that I've also learned to work around the shortcomings of JetBrains IDEs. Google is undeniably more developer-friendly than Apple IMO, though.
First, the performance is just bad. The responsiveness compared to apps like VSC or Panic’s Nova is night-and-day.
The attention given to the design of new features is piss-poor. Placing the AI functionality on the left sidebar makes no sense; all the other tools on the left are project management; the "let me run weird functions and interact with stuff" UIs like terminal, debug and logs are in the bottom panel. Or maybe a new tab in the main workspace area?
The SwiftUI preview canvas can't be floated as a separate window, making it all but useless on anything smaller than a 16" MBP (and only barely usable there). In fact, I think it might be impossible to use Xcode in multiple screens altogether…?
Old simulator versions and cache files hang around forever, you need a third-party app like DevCleaner just to keep your storage from filling with nonsense. Cryptic messages like "copying symbols to device"… clear-cache that doesn't seem to clear-cache, that stupid list UI for info.plist…
I never thought I'd have anything nice to say about PNPM package management, but you can always just delete `node_modules` and reinstall and count on things working. Swift package management is a cryptic mess, and their insistence on using a GUI instead of a basic JSON manifest just compounds it. Like the info.plist thing, a lot of Xcode is based on a developer UI philosophy from the Mac Classic days that has mostly been abandoned by the rest of the world.
Mostly, I think the vitriol surrounding Xcode is that Apple seems to think they're doing a good job; meanwhile their most ardent and adept users are insisting that they are not. Same boat as MacOS, really.
Starting a 'cold' debug session into a UI application may take 10-ish seconds until applicationDidFinishLaunching is reached, and most of that time seems to be spent with loading the symbols for hundreds of framework DLLs which are loaded during application start (which I never even need because I can't step into system frameworks anyway) - and seriously, why are there even hundreds of system DLLs in a more or less hello-world-style Metal application with minimal UI? This problem seems to go back to the ancient times, but it gets worse and worse the bloatier macOS UI processes become (e.g. the more system frameworks they load at start).
The debugger variable view panel is so bare bones that it looks like it's ripped out straight from an 80's home computer monitor program.
When debug-stepping, the debugger frontend is quite often stuck for 10s of seconds at completely unpredictable places waiting for the debugger to respond (it feels like a timeout).
Step-debugging in general feels sluggish even compared to VSCode with lldb.
For comparison, VS2026 isn't exactly a lightweight IDE either, but debugging sessions start instantly, debug-stepping is immediate, and the CPU debugger is much more feature rich than Xcode's. While in Xcode, everything feels like it's been added as a checklist item, but then never actually used by the Xcode team (I do wonder what they're using to develop Xcode, I doubt that they are dogfooding their own work).
The one good and useful thing about Xcode is the Metal debugger though.
- Interface Builder is stuck in early 2010s. Not only is the property panel missing half of options we now take for granted everywhere else (like corner radius), it also randomly won't read fonts in the current project, will crash the entire IDE if you Cmd-Z a big change (things like unembedding a view) and half the UI is still not rendered the way it will be on the phone. Yes, Swift UI exists, but most bigger apps are still XIBs and Storyboards and it's going to remain that way for quite some time.
- Autocomplete is a hit or miss. Very much like the mid-90s Microsoft IDEs where you'd get totally useless results until you've typed the whole line out already. It can be done well, look at AppCode.
- Syntax highlighting feels pretty much the same. Randomly flashes on and off, often doesn't highlight until return is pressed, takes a long time to load on large files etc.
- Git integration is by far the worst I've seen out of any IDE and I've seen many. I'd go as far as to say that SourceSafe integration in VB6 was done better. Just the whole layout, modal-on-modal returning to the first modal on an error in the second and so on. It's crashed when rebasing a few times too, I don't trust it with larger operations since.
- Documentation browser is this annoying little window with semi-useful search. But don't worry, the docs in there are useless anyways. I could go on and on about their approach to docs but maybe next time.
Don't even get me started on performance. Things like switching file tabs should be instant by now but there are still noticeable delays for larger files and IB screens. Plus there's now two kinds of tabs (app-level and file-level) to add to the mess.
Stepping through the debugger too fast will sometimes put the debugger in a weird state where step never breaks again and all other breakpoints stop working.
Git pull through the UI with stash and merge can blow away your local changes if there is a conflict. The changes aren't stashed. They're just gone.
Xcode likes to sometimes recompile files that haven't changed slowing everything down, sometimes significantly depending on the file. No idea why.
It can get very confused if you're missing a parenthesis in the wrong place in a SwiftUI View leading to opaque swift compiler errors about code being too complex.
Even mildly complex use of a swift #Predicate will cause an error about it being too complex forcing you to break them down into smaller pieces and even then it takes far too long to build even on a brand new machine.
The simulators are quite slow to start/update/run and xcode sometimes fails to shut them down completely when quitting leading to them just continually running eating memory unless you kill the processes manually.
The simulators also are really limited in their functionality. No background processes, spotlight, network degradation simulation, out of memory killer, etc.
The profiler sometimes just fails to start an app correctly, immediately ending a run forcing you to close the profiler and reopen it again before it'll start working.
Symbol refactor (rename) can be painfully slow where the UI just locks up until it can find all the references.
Xcode likes to duplicate package dependencies in xcodeproj. It just creates new hashes for the same library and adds it as a dependency over and over again, so when the link phase happens, it adds libraries repeatedly over and over and over again unless you manually clear them out. Not sure what causes this, perhaps updating the version or merges between users.
Often autocomplete is hopeless and doesn't help you with the most simple things like picking from multiple initializers, or changing to a different signature of a function call.
the project setup is this mystery Xcode project file, instead of a standardized yml or something that anyone can modify and understand.
I have to say provisioning has improved a lot. I remember back in 2008, it was really a pain to get anything working.
This is not necessarily about Xcode, but maybe it should be: screen shots for your app. they need screenshots for 454 device types, and zero automation in their own tooling.
the layout is also very inflexible. they dictate a couple of panels and that's how you _must_ use them. that's unlike any other modern IDE.
And, this isn’t strictly XCode, but my least favorite thing about writing apps for apples platforms is all the admin overhead. You need an Apple development account, signing certificates, app groups, entitlements… just let me compile my code man.
It sounds like OP doesn't like the way Xcode does things differently to other IDE's.
To put it in a language Apple understands, it's like forcing music producers to use GarageBand when everyone else is on Logic.
If you were able to use a magical, fast, bug-fixed, version where everything 'just worked' at pace, I imagine you would begin to realise just how much you have been putting up with!
But I agree that Xcode runs fine on small projects and recent version feel stable compare to past releases.
it constantly disconnects, requires restarts and other nonsense techniques. i legit do not know how you can not be running into these problems if you are developing on those platforms.
Most of the problems I encounter now resulted from the fiasco that is SwiftUI. I used to really enjoy development, and built a few mobile apps singlehandedly... even at a well-known company or two. But now I'm struggling to get one chunk of functionality at a time done on a from-scratch app, because SwiftUI and the underlying "reactive" paradigm were so poorly conceived and defectively implemented. Development is now miserable drudgery, and I never feel confident about the result. The absurd gymnastics to trick the UI into doing what you want; and the hypocritical, conflicting edicts for Swift and SwiftUI... it all barely hangs together.
The fact that Apple rolled out a new UI toolkit that didn't support the most fundamental paradigm in mobile applications, a stack of progressive views for the user to proceed through, tells you how far off the rails they went since introducing the original and solid SDK.
And testing is going to be a nightmare... or simply futile.
It most certainly is not, lol. That's the hype that the parent was referring to. Most people have found AI to be a detriment, not a benefit, to their work.
No, it isn’t. There are irresponsible voices in the community who claim that it is, but they always find convenient ways to omit the downsides (on both the tech and effects on society as a whole).
> converted it to obj-c’s short lived garbage collection
that was around xcode 4 iirc, that was when interface builder was ducktaped (or maybe i should say intermixed) with xcode (née project builder) to disastrous results in terms of performance... its never really recovered imo...It's not even rotting away. It was never completed.
It's XCode 26, and you still can't have the navigator and tabs work like in all other software on all other operation system, also including MacOS.
It's absolutely bonkers, and one of the reason's I decided to use Emacs if possible when working on "XCode projects".
XCode is good for project-reconfiguration and step-by-step debugging, but as an editor it's absolutely unusable.
I don’t disagree that Apple could use a major focus on bug fixing across their platforms right now though.
Claude code 8 hours later: It's done, mate!
Ever attempted this before at a large company and had success with it? I think I can count four times so far in ~15 years where people attempted to rewrite something medium/large-scale from scratch around me, was a success once, although scope was drastically cut at the end so almost a stretch to call it a success.
In a project with code-only UIKit, only a smattering of SwiftUI for small components, and minimal dependencies, Xcode isn’t too bad of an experience and I’d say comparable to and in some ways better than Android Studio (that localization XML editor, not mention Gradle… ugh).
Xcode being loaded on my computer causes something akin to a kernel panic.
Not the fun kind where you get to read a backtrace and feel something. The existential kind.
Every time it hijacks a .json or .xml file association, I experience a rage that hasn't been matched since the Emacs/vi wars ... and at least those were about editors that could open in under a geological epoch.
I just want to look at a text file with pretty print.
I do not need a 12GB IDE to render curly braces. cat has been doing this since 1971. Dennis Ritchie solved this.
Why, Apple, in 40 years, could you not ship a lightweight dev-oriented text viewer? You had NeXTSTEP. You had the DNA of the most elegant Unix workstation ever built.
And you gave us... this behemoth? An app whose launch time rivals a full Gentoo stage 1 install ( see: https://niden.net/post/gentoo-stage-1-installation )
TextEdit is not the answer.
I've used Xcode for native iOS development and honestly, once you get past the Stockholm Syndrome phase, it's just fine.
- The interface is learnable.
- The debugger mostly works.
But the load times -- on every high-end MBP I've ever owned -- suggest that somewhere deep in the Xcode binary, there's a sleep(rand()) that someone committed in 2006 and no one has had the courage to git blame.
FWIW, I fear someone here tells me I've been missing a launch flag. Alas, it's my truth and I can't hold it in anymore.
But the best part is what it DOESN'T install when you think you've updated. You get on a plane and settle in for some work, only to be prompted to download and install a bunch of required crap you weren't told about. OH WELL, says Apple, your time is FREE!
As far as Apple providing anything, why are they the expected ones providing it? There are a gigabazillionumpteen text editors that can reformat JSON. I have Xcode, and have associated JSON with a different editor. Not once has it ever changed on me.
I believe that “Get Info”->”Open With”->”Change All…” still works, and there are command line methods or third party tools.
This has driven me to madness too.
I don't know how did you achieve it, but I was doing it countless times.
Open with -> other -> enable all applications -> always open with.
For a short while it works, but somehow, something always reverts it back to xcode. Maybe it is restart. Maybe it is little evil cron job discreetly changes it back to xcode, but I was never able to get rid of it. It is happening to me on many different machines since Sierra. One calm day I casually double-click an STL or JSON and it prompts me to install some xcode packages, and I get angry at the machine.
I know the procedure.
The issue is that Xcode updates and macOS updates tend to reset those associations back. There's a long-running Apple Community thread titled literally "Stop hijacking file extensions with xcode" ( https://discussions.apple.com/thread/253702137?sortBy=rank ) and another I saw recently where a user documents their .md associations reverting after closing their laptop lid.
It's not universal, but it's not delusion either.
The deeper annoyance is extensionless files and edge cases -- log files, build artifacts, random output from scripts ... where there's no clean association to override.
Those fall through to whatever macOS thinks is clever, which is often Xcode.
As for "why should Apple provide it" -- because the company was founded by a guy named Steve who believed that details and care matter. Someone who said how the insides of a computer looks is as important as the outside and nagged his partner until the circuits looked right in their home-brew project.
Also yes, fair point, I should just fix it and stop complaining.
I failed at that today. Please forgive me.
I prefer writing in vscode instead and only using xcode to compile and debug.
I developed some simple macOS apps as fun side-projects back in the early 2010s but then very much switched to web; the tools are a big reason why.
Back then Apple had made waves introducing Safari, which was not only great and cross-platform, but had an open-source renderer (WebKit), and JavaScript engine (JSC). Safari was crushing web standards while IE lagged, seemingly trying to purposefully choke the web to stop it from canibalizing Windows software. Apple was betting on web: one of the big features on their brand-new Mac OS 10.4 Tiger was the Dashboard with widgets that were all built with HTML/CSS/JS, and they were shipping a new, free IDE (Dashcode) to build them too.
Mac OS X was heavily marketed for being UNIX vs Microsoft's proprietary and closed Windows NT. They were building Safari and iTunes for Windows, and had just introduced the first Intel Macs; it seemed like they were out to put a fight against a very closed, very walled, and very incompatible Microsoft who had gotten too comfortable with the Wintel and IE monopolies.
Fast-forward two decades, and not only can you now run a native GNU/Linux environment on Windows, but the best IDE out there is web-based and open-source Microsoft software while Apple lags behind on developer experience. They seems to have missed the bus on web technologies too. They went from leading charge with a stellar browser pushing web standards forward, to being an obstacle out of fear Safari might canibalize iOS software.
Apple hasn't gone full early-2000s Microsoft (thankfully) and Microsoft hasn't gone full early-2000s Apple (unfortunately) but times have really changed.
To set file association stuff more easily than with the Finder GUI, you can run (with https://github.com/moretension/duti):
duti -s com.apple.textedit public.${whatever} all
Where ${whatever} is in {plain-text, json, source-code, ...}. I'm sure there's a way to automate this through parsing `lsregister -dump`, but have a script I run on every Mac I have that sets TextEdit as the default instead of XCode for a bunch of file types :-)You're being too kind. It feels like a 8 cores worth of parallel busy loops to me!
I bet Alan Dye insisted they put it in there so users can pause their busy to gaze at and appreciate his artistically minimal unpainted Liquid Glass window frame.
I'd be a lot more interested in hearing what people think about this development, what it means for code privacy, how are the context windows handled, can it be enabled per-project, etc.
Native app development is an evil necessity.
I wish people did more native app development.
And I get it, it feels like native app development is a more expensive specialism, and this particular use case is mostly the customer portal but in an app. But I retain the strong opinion that if you as a company are serious about app development, if you want a good app, you need native apps and native app developers.
Especially if you want to be present outside of the confines of your app - widgets, lock screen activities, smart watches, etc all require proper native components, because they come with very tight memory constraints and just loading in React Native and its JS stuff costs you 80% of available memory budget.
The list of actually useful things that can be added/changed in Xcode has more tokens than Claude is allowed to read at one time before grepping.
You can. Any local packages are automatically editable in Xcode. Opening two projects referencing the same local package dependency isn't possible however.
> Apple’s Xcode now supports the Claude Agent SDK
I feel like Xcode knows how to work around xcodebuild’s shortcomings, and instead of fixing them they just wrapped Xcode in an MCP server.
Better than nothing I guess, but reliable CLIs would allow a whole ecosystem of tools.
I have UI and UI tests and xcodebuild is my nemesis.
I haven't opened Xcode in months. My terminal: Claude writes code. build_sim. launch_app_sim. screenshot describe_ui.
What still requires Xcode: Instruments profiling, Signing/provisioning
For UI iteration, describe_ui returning the accessibility tree might actually be more useful to an agent than a preview screenshot.
Your workflow looks very interesting especially the describe_ui part, are you already able to do this today?
Tuist generates the code project from a simple swift confiuration file similar to Package.swift. I don't know why apple can't just throw away the proprietary and ugly Xcode project files and provide a sane build system that would work in any IDE, on the command line, in CI and now with AI agents.
They could open up the instruments format while they are at it for the same reason, do they really gain anything by making it proprietary?
* text editor with intellisense * build system * visual debugger * CLI coding agent
It’s totally fine if those four things are different. In fact I actually probably prefer them to be different. Having an all-in-one IDE is a complete and total non-goal.
People have historically confused the first three as needing to be a single IDE. This has always been wrong. The number of people who think you can’t debug with Visual Studio if the exe wasn’t built from a .sln is shocking. They’re all independent!
I mean, look at debugging in IntelliJ: https://resources.jetbrains.com/help/img/idea/2025.3/hotswap...
As opposed to the terminal: https://cdn.hashnode.com/res/hashnode/image/upload/v16980433...
RemedyBG: https://remedybg.itch.io/remedybg
RadDbg: https://x.com/rfleury/status/1747756219404779845?s=46
I mostly edit code in VSCode. I mostly debug code in VisualStudio. They don’t have to be the same.
I do concede that one tool to rule them all is appealing. But ultimately I work with many different languages so it’s kind of a multi-tool world no matter how you slice it.
Beyond that, I'd just keep using Claude Code in the terminal.
Or Axiom (https://charleswiltgen.github.io/Axiom/), which should now work great from within Xcode since Apple's using Claude Code SDK.
"Developers get the full power of Claude Code directly in Xcode—including subagents, background tasks, and plugins—all without leaving the IDE." — https://www.anthropic.com/news/apple-xcode-claude-agent-sdk
There may be other improvements.
I wonder if they used this internally to write iOS 26? Would explain some things...
I recently have pivoted to mainly working in either Claude of Codex on the command line, because their ability to run autonomously for long, extended periods wasn't possible in the turn-based Xcode intelligence features.
That, plus the fact that the agents could run command-line utilities and just generally be more "agent-y".
My way of working has really shifted this year. I've been experimenting with LLMs for coding for years now, but the models released in the past year really feel like they've hit a point where they write code much closer (sometimes indistinguishable) from how I would write it.
https://xcodereleases.com hasn’t shown anything since last December, so I assumed Apple had taken a breather from Xcode development, but they released an RC build today?
Anyway, the Swift version seems unchanged (6.2.3), so is this update mainly for the so-called “Coding Intelligence” features?
In any case, Xcode isn’t my favorite IDE—it’s too slow and feels quite different from other major IDEs—so I probably won’t use it for day-to-day coding (though it’s fine for building and debugging).
Yet every week it assigns itself as default program for all sorts of files, from markdown to python modules.
So clicking on pretty much anything opens this.
Apple is just very bad at user interface. Whoever said Mac as better than Linux or even Windows is insane.
I hate it.
Why wouldn’t engineers prefer tools they’ve been using (mostly happily) for a decade+?
I don't think it's a serious question or the person is very young.
To answer the question. Xcode is the default IDE for iOS development. The default option will always be a practical choice.
JetBrains or Anthropic could get bought by a larger company or dismantled by the government somehow. Should anything happen to Apple (unlikely as that may seem) the entire iOS ecosystem would be gone as well negating any need for a default.
Yesterday in few hours I released an update for my mac App that I haven’t been working on for over a year. The update easily performed as expected, did a few small manual touches on the UI and the app just got approved on AppStore(like minutes ago)[0].
This is very good because normally I would not remember much about the code, so doing an update for a long forgotten code becomes huge pain.
Good for Apple but I think I feel most comfortable on Codex app. I think I like having the AI separated from the IDE so I feel in control in the IDE.
[0] Codex implemented the functionality demo on the paywall, if you want to see it: https://apps.apple.com/us/app/crystalclear-sound-switcher/id...
Claude.ai Pro is $20/month flat. But if you're doing serious agent-assisted coding (multi-file refactors, iterative debugging loops), you can blow through $50-100/day in API costs.
The math changes depending on usage patterns. Subscription makes sense for interactive coding sessions. API keys make sense if you're batch processing or running agents autonomously overnight.
"Agentic this", "agentic that"... It's literally just an LLM in a while() loop with some exposed tools.
Or is Xcode developed not using Xcode...
(I also 2nd the question about what's really the difference between this and the Xcode 26.2)
¹ https://www.anthropic.com/news/apple-xcode-claude-agent-sdk ² https://charleswiltgen.github.io/Axiom/
https://claude.com/blog/building-agents-with-the-claude-agen...
From September 29, 2025