Skip to content(if available)orjump to list(if available)

Using 2 Editors Because Xcode Is Dumb

Using 2 Editors Because Xcode Is Dumb

82 comments

·January 23, 2025

joshstrange

Xcode is trash and I’m very sad that JetBrains discounted AppCode. It made things bearable even if I still had to use Xcode for certain tasks.

My biggest complaint with Xcode is speed. It’s feels incredibly laggy to me. Auto-complete is slow and error reporting is insanely slow. I hope you like typing code and then 5-30 seconds later the IDE shows an error (normally a bad one).

I’ve never had a good experience writing code in Xcode. Often I’ll just open the files in IDEA to have sane hotkeys, my plugins, multiple cursors, and the list goes on and on and on.

prmph

The shittiness of XCode and just app development in general for iOS, combined the mess that is Android development, is why I just gave up on native app development. I'm now entirely focused on web development and won't invest any time or effort in keeping up with native app development.

It's sad how the concept of native app leads to walled gardens, instead of the web being promoted and improved to be the primary way to deliver apps. And the web need serious and continual efforts to modernize its of development and use experience, but it is far superior model than native apps IMHO.

Since America just won't do it, the EU should force Apple and Google to allow the experience of using mobile web apps to be on par with that of native apps. At the very least, allow a one click way to add a web app to the home screen easily.

worble

> I'm now entirely focused on web development and won't invest any time or effort in keeping up with native app development.

I can't agree with this more. After having numerous problems with native android development before, I decided to give flutter a go recently for a mobile app idea I've been wanting to do.

After getting byzantine and seemingly unsolvable errors from flutter doctor and gradle for the 3rd time after completely reinstalling it every time, I just gave up and started making an app in tauri instead.

mamcx

And Android Studio is even worse (that is weird, the bare IDE is the same as others, but the android apis and tooling overshadow it). And the use of Gradle multiplied it by 1000.

danuker

Perhaps JetBrains should reconsider AppCode, since Xcode only got this crappy recently. Apparently they didn't get the market share they had hoped for.

https://blog.jetbrains.com/appcode/2022/12/appcode-2022-3-re...

wruza

Xcode only got this crappy recently

It gets exponentially more crappy every time, which creates an impression that it only got crappy recently. I remember it doing this since 2010. The usual counter is to stay on the same version until either of you is literally dead.

Although I didn’t find AppCode more useful for my simple tasks. If anything, it felt android-ish in ux, if you know what I mean.

aleph_minus_one

> It gets exponentially more crappy every time

On which ratio scale (https://en.wikipedia.org/wiki/Level_of_measurement#Ratio_sca... ) do you define/measure "crappiness" so that you can say that "crappiness" grows exponentially? ;-)

dtech

They seem to be putting all of their eggs in the Kotlin multi-platform basket.

Might also be why they discontinued it so those devs with iOS expertise could focus on that.

singularity2001

Kotlin which is a beautiful language unfortunately is killed by Gradle which is even worse than Xcode

joshstrange

> since Xcode only got this crappy recently

I've always felt like it was slow and annoying to use personally. At least coming from the IntelliJ world, maybe if you were only in Xcode it was pretty decent until recently.

bena

Same. Coming from Visual Studio, XCode always felt just kinda bad.

tartuffe78

PSA: Turning off the "Enable Source Control" feature has always been a must for me to get decent performance out of Xcode.

AHTERIX5000

Thanks for the tip, I'll need to try it out.

Performance is really abysmal with C++ development and it's the biggest reason for avoiding Xcode for me. Actions such as completion and contextual jumping just keeps lagging on a M3 Pro even if everything should be indexed. VS Code with the usual C++ plugin and CLion have no problems with the same codebase.

I like the integration with different sanitizers in Xcode, some of the visualizations are pretty neat. Instruments is quite good as well.

joshstrange

Interesting, I would/have never managed git from within Xcode so I'll be turning that off for sure.

nyarlathotep_

It's remarkably unintutive for tasks that should be even trivial (like splitting an editor pane). Getting acclimated in a basic fashion takes far longer than it should given my experience with every other modern IDE.

pjmlp

Officially they never got enough sales out of it, that is why.

So XCode isn't bad enough that developers would consider paying for better alternatives.

joshstrange

Xcode is a really hard one to replace because at the end of the day you pretty much have to use it at least a little bit so some developers will probably choose to use it just so they don't have to use two editors. I'm not aware of many/any other languages/platforms that are that locked down (at least in mainstream programming)

pjmlp

Windows and game consoles.

Yes, there are tons of stuff you can do on Windows without Visual Studio, but then you aren't doing all the scenarios a Windows developer might care about.

There is also that little bit only available in a mix of Windows SDK and VS plugins.

cellularmitosis

Are you using source-based dependencies? Have you tried Carthage instead?

jessekv

I remember reading a positive xcode review on the app store that was something to the effect of: "so much better than the next one!"

wilkystyle

I am not an iOS/macOS developer, but I resonated strongly with this post because it captures how I feel the general experience of upgrading Apple OSes has been over the past few years: With each update, I find myself asking, what is going to be broken that used to simply "just work"?

I'm not talking about controversial new design directions like the iOS photos app redesign, I mean broken behavior. I can't recall everything off the top of my head, but just a few examples that come to mind:

- The new macOS has a system info pop-up every time any application is using your screen. It tells you how many times the application has accessed your audio or video over the last month, and tells you that you can manage this in settings. You cannot turn this notification off, and it is repeatedly triggered every few seconds by applications such as Zoom. This popup sometimes (but not always) steals application focus, which means if I am screensharing a code editor, keystrokes will inexplicably stop being sent to it.

- In a recent version of iOS, I could no longer tap on the calendar event time-selection wheel while creating an event to manually type the time instead of spinning to select it. As soon as I started typing numbers, the UI would disappear and only a partial time would be entered. In the most recent version of iOS this has been fixed, but for a while the entire workflow of how I create calendar events was broken.

- I used to be able to ask Siri to create an alarm for X minutes from now, but an update or two back Siri started creating timers instead.

- For a few prior iOS versions, I would reduce volume or brightness in the iOS control center, only to have the sliders pop back up from time to time on their own.

The general feeling of using iOS and macOS lately is that I can no longer rely on things continuing to behave the way they used to. Although macOS is a far better operating system experience than Windows, and far more polished than Linux on the desktop, it just feels like the reliable usability of Apple operating systems is slowly ebbing away.

Maybe this is a sign that I'm turning into a curmudgeonly old graybeard in my middle age.

dsego

I am not sure if my mind is playing tricks on me or sometimes with some apps the focus doesn't work right. Like desktop Whatsapp looks to be in focus, but when I try typing nothing happens, than I need to click on it or restart it before I can type into the message box, but one time I managed to rename a folder on my desktop (and only realized this much later). One of the downsides of the macos windowing system allowing active apps without any windows shown. I'm scared I will delete something important or do damage if I can't be sure my mental model maps correctly to what's happening on the computer.

hypeatei

> macos windowing system allowing active apps without any windows shown.

This seems like a security issue. What if you're typing a password quickly and hit Enter but it turns out that focus was in Discord or something?

jitl

How’s this any different from saying “2 monitors is a security issue, what if you’re typing a password but Discord on monitor 2 was in focus”?

Typically when I’m typing my password into an input on any platform, I’m looking at the password input, and if it loses focus, I’m going to notice.

On most OSs these days (including macOS), native password inputs are rendered by an elevated privilege secure process, and focus stealing behavior is disabled while the password input is on-screen.

Spooky23

I think both operating systems are incredibly complicated compared to years past and their development model is straining in some ways with the relentless pace of development and integration with online services.

You see it if you run the betas. Even something as seemingly simple as the keyboard needs integration with a dozen or more other modules. I’m experiencing a lot of bugs with the emoji keyboard in the iOS beta - no surprise… it’s hooked into 2-3 different custom emoji schemes, AI generation, etc.

hbbio

Same, I have a Mac but every week I check the progress of linux support for the Snapdragon X1E!

I am running Sonoma (and iOS 17) with no plan to update. I don't want AI built into the OS. Very happy with ollama and our own code.

In fact what I would like the most is to strip the OS to the bare minimum: Remove Photos and whatnot from the OS (hey it's an app, I should be able to install it from the AppStore if I want) and the hundreds of daemons that run to do who knows what.

I tell myself I'm a minority here... but everyday I stumble upon all types of users who want the same.

null

[deleted]

simonbarker87

One of the reasons I stopped iOS development was because of how clunky, slow, opaque and buggy Xcode is. I’m amazed people have the patience to work with it especially when coupled with Swift being so picky with terrible error messages and Apple’s awful developer docs.

xigency

The thing that shocked me about doing Swift app development was despite all of the syntactic requirements for types and null-checking, the program would crash with runtime errors as if I were still using C.

sampullman

It's been a while, but I remember splitting time between XCode and VScCode for iOS projects made it bearable. Apple docs aren't perfect but I found Swift to be enjoyable enough as long as you don't accidentally run afoul of type checker bugs.

DannyBee

Xcode is the reason i've never written true native mac apps. Ever.

I program hobby stuff in lots of environments and languages depending on how i'm feeling. I have no trouble starting up Rider, PyCharm, Visual Studio, VSCode, whatever, and writing C#+Maui/Avalonia, Rust, Svelte+Tauri, Python+QT, etc.

Whatever will work best for what i'm trying to do, or seems fun at the time.

That's for regular coding, too. I have lots of PLC environments i work with for embedded stuff (Siemens, etc).

I've learned lots of environments, and while they all have their issues, etc, they are all fairly usable pretty quickly, and stay that way.

Meanwhile, every time i have ever sat down and tried to use XCode (a bunch of times over the past 10+ years), it is so annoying that i give up in a day or two and just go use something else.

It's gotten progressively worse - it felt much easier to try 10 years ago than it does now.

It is hard to describe how strange it feels to try to use it. I guess i'll go with "it often feels like it was created for use by some alien race specializing in industrial automation".

It's not quite right, but i think it transfers some of the feeling.

I honestly can't imagine how anyone uses it on a regular basis.

prmph

Exactly, I swore off the whole native app development a long time ago, to preserve my sanity. Android development is also a mess.

Meanwhile, there's still no really good way to development cross-platform desktop apps too. I'll just stick to the web, thank you.

In my view the web is a special thing, and I really hope the industry does not neglect it and cause it to die. JS is getting better, but HTML is is serious need of a revamp to support rich UI apps.

deergomoo

I’ve been (very) casually dabbling with iOS and Mac development on and off since about 2011, and the one constant has been that Xcode is incredibly janky.

My first time was for a university project that I almost missed the deadline for because my app just refused to build one day, regardless of clearing all the caches etc. I eventually fixed that by starting a new project and copying all the files over.

Various versions would crash with alarming frequency. For years it was missing common text editing features like multiple cursors. Find and replace _still_ sucks, to this day.

Since Swift came along, which I love as a language, type and error checking has become incredibly slow. A type error somewhere in a file often completely breaks the ability to Opt+click any other types to read the very documentation you need to fix the error. Clicking related types often opens a “not found” page in the documentation explorer.

I’m doing Advent of Code in Swift this year and even for that—a couple dozen unconnected source files no more than 200 lines long each—I’ve had it refuse to rename files, breakpoints randomly stop working, Instruments refuse to let me edit configurations.

Surely Apple’s own developers dogfood this all day every day and run into the exact same problems?

didgeoridoo

> A type error somewhere in a file often completely breaks the ability to Opt+click any other types to read the very documentation you need to fix the error. Clicking related types often opens a “not found” page in the documentation explorer.

This is MADDENING. I’ve had to comment out hundreds of lines of code across multiple files to get rid of error messages that were blocking Opt+click documentation from opening. This feels 100% inexcusable.

(And if you do any SwiftUI development, get ready for a lot of “The compiler is unable to type-check this expression in reasonable time” caused by a bog-standard parameter type mismatch. This is more excusable though, since SwiftUI seems to do unspeakably complicated things with generics and existentials so I could see things getting tangled up sometimes)

trinix912

> My first time was for a university project that I almost missed the deadline for because my app just refused to build one day, regardless of clearing all the caches etc. I eventually fixed that by starting a new project and copying all the files over.

I had the exact same experience, and it was also a uni project :)

Typing in Xcode also reminds me of VBA, where you'd only get the syntax highlighting for the line after completing it. Xcode regularly flashes it on-off for the entire file when typing. Quite an annoyance.

PaulHoule

I think it's normal to have a backup editor.

I do most of my coding with Jetbrains IDEs, but I have to edit a configuration file from time to time and for that I use vi. I know just a few percent of what vi can do, I use it as a command line "notepad". I feel safe running it under "sudo" or elevated with UAC and if I have to log into a strange Linux machine where I can't (package manager database corrupted -- that's why I'm there) or don't want to install software (it's not my machine) I can count on vi being there, my only beef is that I have to :syntax off because it's unusual to find a terminal where the dark blue shade can be read against a black background.

(I installed emacs for old times sake on two Linux machines and remembered why I switched to vi. ^S for search was already a weird choice for the command line because of the XON-XOFF conflict, but ^S for save rolls off you fingers if you use GUI programs on Windows. I'm sure you can change it, but the continuation characters emacs uses interferes with cut-and-paste.)

pornel

The worst thing is that Apple assumes everyone will use Xcode's GUI, and a lot of functionality is de-facto only available through Xcode.

It doesn't seem like a standalone SDK with an IDE layered on top, quite the opposite, the CLI build tools feel like a headless Xcode runner.

Building and code signing without Xcode is nearly impossible. The non-Xcode tooling is a disorganised half-deprecated bunch of ad-hoc commands, and they're mostly undocumented.

pjmlp

A trait common to all platforms, with exception of UNIX ecosystem, and even then commercial UNIXes aren't as free choice as BSD/Linux clones.

roetlich

The most common end-user operating systems are Android and Windows, neither of those require a special GUI to create an app. You don't even need to buy specific hardware to write programs for those.

pjmlp

Try to create native Android apps without Android Studio, or Windows native apps without Visual Studio tooling, by native meaning using the platform GUIs, SDKs, APIs and blessed tier 1 programming languages.

Not trying to fit somethig that requires lots of yak shaving, and workarounds, to make it work without the vendors tooling.

Native APIs from the platform, not stuff that abstracts the platform.

iamdamian

I've tried many times to get into macOS/iOS programming, and Xcode is always the thing that has stopped me. It's a shame, because I really would like to build native apps...

kibwen

> An editor they can’t ruin: viewing a test file in Emacs

Bold of you to think that Apple can't classify text editors, file access, and lisp interpreters as security risks and ban them from the platform. Apple makes their money from iPhone sales, they only suffer Mac users to exist because they happen to create iOS apps.

chuckadams

I love the dickens out of the Mac hardware and even quite a few things even about the software. But Xcode for me is something homebrew and other language package managers need as a dependency for some packages, and that's all. Having tried again recently to use Xcode, it's still a joke of an IDE with an unfunny punchline.

ericrallen

Just as a note, you can almost always get by with `xcode-select --install`[0] which installs the Xcode Command Line Tools, which is what `brew` et al. need.

`brew` added this as a step in its install script[1], too.

So, unless you are planning to do development in Xcode or want access to the device simulators for testing, there isn’t really much reason to actually install the Xcode application.

[0]: https://apple.stackexchange.com/questions/107307/how-can-i-i... [1]: https://github.com/Homebrew/install/blob/ee0036121331ff32d72...

dkjaudyeqooe

I understand why some people use IDEs but I can't even imagine using them myself.

The first thing is that you give up control and become a prisoner to the whims of the tool developers, who think "simplicity and elegance" is a four letter word. Needless complexity and severe bloat rules the day. 90% of features you won't ever use. A build configuration and process you, and everyone else, cannot fathom. Editor defaults that seem to be carefully designed to be unlike every other editor ever written. Arbitrary constraints on pretty much everything. Platform and language specifics throughout.

I personally use Sublime Text because it's relatively simple, fast and programmable. It lets me build my process around the command line which is the only possible option for me.

I guess most people live in Java, Python or JavaScript ghettos, but I make wide use of open source on multiple platforms, which means I have to use C/C++, Objective C/C++, Rust, Java, Python, Cython and Go (I draw the line at JavaScript, never ever) and support web, Linux, Android, macOS, iOS, and winOS.

Even if you're not in my position, the platforms and languages you use very likely will change over time and maybe I'm old but it's nice when your development environment feels like your favorite old jeans or sneakers, not whatever the latest fashion in IDE corsets some team with apparently unlimited funding but very limited attention span has though up.

srik

I’ve found it impossible to write Objective C on a non-Xcode editor without losing my sanity; I don’t know how you do that.

david422

IntelliJ covers all those languages. I don't use 90% of the features but the other 10% are huge productivity increases.

crossroadsguy

> most people live in Java, Python or JavaScript ghettos

Ghetto is a very strong word. But fine.

By the way, as I see it Python and JS folks are least known to be in IDE lock-ins. In fact non Android Java also to some extent is IDE agnostic. (I assume you were trying to make the counter point here? Anyway I took that.

Having said that..

> I draw the line at JavaScript, never ever

..oh yes, could not have agreed more! :)

Anyway, the thing is - people often have to use languages like Java (Kotlin) and ObjC (Swift) for a very specific use case and that is for Android and iOS and there is no easy way to not use the IDEs. God knows every Android developer has fantasised of the day when they can use the IDE of their choice and still every tooling around the setup works flawlessly. But then that's fantasy. Yes, people do use it if they want but that needs so much work that most people won't even think of going for it (and most people are those for whom development is a skill that earns money and is not a source of passion and joy if not source of resentment).

> very likely will change over time

No you are not very old and they do change. But that change is not at all difficult to catch up to. What I am trying to say is the IDEs, which suck (a lot of them, if not all), do life make easy in many ways and for teams/group actually have use-cases where one setups (with some changes or none) works for most and that is their use case. A lot of those setups are top-down. Coming right from Apples and Googles and JetBrains.

Writing Kotlin/Java and ObjC/Swift in your favourite editor is bliss but writing it for iOS/Android is nightmare and then dealing with tooling around that if it's not THE IDE is a bigger nightmare.

I am in my late 30s and I have learned that it is no big deal. Do I hate some of it aspects of and dislike further some of them? Fuck yeah. Are those deal breakers? Naah, far from it. It's okay. It works and gets the job done.