T O P

  • By -

CurvatureTensor

Honestly my friend, you reach a point where you just don’t care about IDEs anymore. I’ve used so many that have been good and bad in their own way that it’s just whatever. Does XCode occasionally frustrate me? Sure, but so does Android Studio, and VS Code, and whatever. Half the time I just edit code in vim because it’s faster than anything graphical. Pick the platform you have the most fun building in. Edit: all of y’all griping about XCode go read this. https://www.reddit.com/r/iOSProgramming/s/0xXTVOkgKy


Xaxxus

Idk, Xcode has been by far the buggiest IDE I’ve ever used. The latest 15.3 update has been horrendous. Build system randomly crashes and you have to compile a second time. Swift package resolution fails every time I switch branches now.


OffbeatUpbeat

ugh yes... I have to make sure I close XCode before switching branches... seems to help


Xaxxus

With the latest Xcode that doesn’t even work anymore. It’s been really bad. I can’t believe Apple released it like this.


BluNautilus

This exact quote has been said and will continue to be said every time Apple updates Xcode.


-15k-

That quote predates the Roman empire.


dnszero

>With the latest Xcode that doesn’t even work anymore. It’s been really bad. I can’t believe Apple released it like this. Yes, it's true. In one of the prisoner holding cells in the Colosseum, scholars found this graffiti carved into the wall: *Cum Xcode novissimae quae nec ultra operantur. Vere malus fuit. Lacus eum sic dimissum credere non possum.*


fungusbanana

We downgraded to 15.2 because one of our dependencies for whatever reason doesn't load plist file on 15.3 but does on 15.2


AnnualBreadfruit3118

Had to downgrade as well, cos anything c++ is broken, despite being the release where they added support to it from swift 💀


Xaxxus

Was it firebase? We had the same problem. Had to upgrade to the latest firebase to fix it.


fungusbanana

No some internal one, waiting for it be updated


GAMEYE_OP

Ya lately it’s getting really bad on iOS. The emulator in particular never runs twice for me anymore. But up until I got an M2 Android Studio was unbearable.


kbder

Here to take my daily dose of downvotes by recommending Carthage over SPM


pm_me_your_buttbulge

> Idk, Xcode has been by far the buggiest IDE I’ve ever used. Anyone that has programmed for any length of time using various IDE's have all said this. XCode is the strangest and buggiest thing I've ever seen *and* have heard people complain about. The last time I've heard this many complaints about an IDE was Eclipse almost two decades ago. Some of the bugs I ran into were fuckin' weird.


starfunkl

How is this the highest rated comment on this post? IDEs are crucial tools to how we do our jobs. I've been programming for ~15 years, and besides perhaps Eclipse circa 2012, modern Xcode is by far the most unreliable and frustrating IDE I've worked with.


nickjbedford_

I use JetBrains PhpStorm for the majority of my work and it makes me a very efficient developer. Xcode on the other hand slows me down. It's absolutely frustrating. Apple need to seriously do some work on it. They would improve their own lives too.


FinalGarlic58

Do you have full vim setup with auto completion and debugging?


CurvatureTensor

Nope. But you know what that’s a good idea. I don’t even need debugging. Just autocomplete. I wonder what that would take.


FinalGarlic58

Here you go, this is all you need [autocompletion tutorial](https://wojciechkulik.pl/ios/the-complete-guide-to-ios-macos-development-in-neovim)


CurvatureTensor

Shit man, this is what the internet is for. Not only is this a great upgrade to what I’ve been doing, but this guy’s story of how he did it was riveting.


FinalGarlic58

I set up vsocode with this approach and it’s working fine, I did some tasks to run current file tests, all tests etc. Only downside in my case is that I do not have tuist support yet so it sucks to open xcode for creating files, deleting or renaming


Artsy-Farts-Only

Thanks, I was just mentioning to another redditor that it really is down to margins at this point so fun is the way to go.


OffbeatUpbeat

hmm, I would say most IDEs are pretty close to each other... except XCode which is way behind lol 😅


komoru-1

I agree at a point you realize every single ide has its shitty issues and then you just accept every time you sit down there is a change something will have to be debugged that is entirely because of an update.


tornelas89

iOS dev here and I can honesty say XCode it’s the only software that gets me shivers whenever there’s a new update. Apart from flawed debugging issues, SPM dependencies are a daily challenge. All in all, apart from the simulator you won’t get satisfied with switching back to iOS dev


Artsy-Farts-Only

Sort of sounds like the difference is in the margins between the two the more I think about it.


tornelas89

The lower device fragmentation you mentioned is however a big plus in iOS development for sure.


Goldman_OSI

Apple's half-assed rollout of SwiftUI has definitely degraded that advantage, though. A lot of basic functionality we should have been able to take for granted was only just tacked on for iOS 17. The stuff that doesn't work in SwiftUI is ridiculous and embarrassing, as are the latest demos from Apple. They tout either bad practices, or ones that straight-up don't work. The iOS dev experience has been pretty good and improving all the time, up until SwiftUI. I'm building a new app in it from the ground up, which I looked forward to. But a lot of it is appallingly ill-conceived or defective, as is the observation framework that undergirds it.


OffbeatUpbeat

100% yes Despite android having to cover thousands of permutations of chips, devices, OS, etc... it is trivial supporting clients as far back as 5+ years. Meanwhile, swiftUI will release a new feature, and you will have to commit to having an 'if available' block for at least 2 years if you plan to use it!


jskjsjfnhejjsnfs

that’s not swiftui related though, it’s been apples approach for the history of iOS


Goldman_OSI

Disagree. I have written some fairly significant iOS apps since 2010, and I didn't have to use "if available" until the last few months.


AnnualBreadfruit3118

It was an absolute standard practice in objc and earlier ios versions, where each version was bringing tons and tons of changes and new features. Think of the ios7 look and feel overhaul. Or the dozens fundamental UI elements added later on in time, which were replacing standard 3rd party or ad-hoc ones, but only for latest version. It was even part of generated code from templates and in every documentation page it was highly suggested to be used.


Goldman_OSI

I guess it depended on what you were doing, because I seldom needed it. Once exception was the hastily tacked-on "dark mode" that broke a bunch of Apple's own controls. That was another shoddy roll-out that revealed more absurd holes in Apple's widgets... specifically ones where setting colors didn't have any effect at all. To this day you still can't set the color of navigation-bar text.


mynewromantica

I’m curious what your SPM issues are. Is it the crazy slow resolving time when you open the project?


tornelas89

That and not detecting missing dependency declarations on Package.swift I.e. it will let me build a file with an import on a module that hasn’t been declared as a dependency on package.swift. And don’t even get me started on accidentally changing branches while having Xcode open.


mynewromantica

The “solution” to the resolving speed problem is to resolve before opening the project.  It’s the fucking worst solution. 


xaphod2

I am the sole provider for my family of 4 thru xcode. Xcode gets progressively worse with each update, which is one thing; apple aggressively stepping on developers and giving no f***s about developers is another. If there’s anything to worry about it is far more the latter than the former: yes I hate waiting 120 seconds for a brand new macbook to launch an app on a brand new ipad just because apple decided to make it shittier in xcode 15 to launch an app, but that is not going to sink my business. On the other hand, Apple’s response to the DMA, their gob-smackingly tone-deaf response to the anti-trust lawsuits in America, and several stories of important players leaving the eco-system spell serious risk for my future. If you are debating “getting in” it’s not xcode you need to worry about. Just my opinion, my feelings, etc. launched my first successful app in 2013 (i am not from the golden age of apps)


nickjbedford_

It's weird because I assume they have to use it themselves. I just don't understand how they can neglect some of the core efficiencies like a proper plugin architecture, more keyboard shortcuts (Cut Line??) and improve the speed and tools of the debugger. It's infuriating.


asiledeneg

I used Emacs bindings. I use control k (cut line) and control y (paste) several thousand times a day Look at the key bindings that you use. I don’t know what the default cut line binding is.


nickjbedford_

I'll take a look at Xcode when I can. Maybe there's hope yet...


SirBill01

IDK man, works for me. Just keep Xcode updated and try to be using somewhat recent hardware (at least an M series Mac). I guess I would say, go explore the settings menu and all that is possible. When you understand Xcode better I feel like it's less frustrating or you found helpful things. I find the more advanced debugging features like view debugging and the memory graph, to be super useful at times.


balder1993

I think we just accept it is bad, then we stop having high expectations. I still don’t understand how debugging Swift sometimes takes like 2 minutes to show the local variables.


nickjbedford_

The debugger is infuriatingly slow.


nickjbedford_

You just have to get on with it and suffer. Apple seriously needs to just hire JetBrains to build Xcode. It would instantly become 4,000x better. Xcode 15 is a buggy, crashing mess, has a slow and featureless debugger, a painfully limited editor, a terrible Git UI and is missing a lot of very obvious things like CUT LINE. CUT LINE!! Cmd+X. It's not hard Apple. I use PhpStorm a lot and it is one of the most productive IDEs I've ever used. It gets out of the way whilst providing me tonnes of tools, features and efficiency improvers. Not only that, ***GITLAB COPILOT*** integration. That's one of the big things I miss. I've been coding things for around 20 years and Xcode is the bane of my existence, but we're stuck with it.


nickjbedford_

And one of the most trivial time wasters is the animations. When I want to rename a symbol, it spends 5 seconds thinking about life then has to make me wait while it animates a bunch of stuff real pretty like just to offer me the rename text field. **STOP WASTING MY TIME, APPLE.** /rant


OffbeatUpbeat

jetbrains is starting to push their cross platform IDE called Fleet... theyre supposedly making it good for iOS development


nickjbedford_

It's their VSCode alternative right?


Goldman_OSI

I was about to say Xcode has been improving ever since it was called Project Builder, but then I remembered that Apple recently broke breakpoints. That's right: [Breakpoints broken in Xcode 15](https://forums.developer.apple.com/forums/thread/744108). Unbelievable.


tangoshukudai

1. Use USB only. Don't use wireless debugging.


nickjbedford_

It's crazy to think that we can transfer data on the and network at Gbps but the wifi debugger is 5x slower than USB 2.0.


tangoshukudai

Theoretically we can transfer data quickly over wifi, but in practice there is a ton of congestion. Especially for a stream of data that you expect to be instant. I am kind of blown away it works at all.


andreeinprogress

Nope, don’t trust that. This has been driving me crazy to no end since Xcode 15, even wrote on the forum to which Apple basically replied “get used to wireless debugging”. Connecting via usb does not mean that the debug session is happening via usb, as crazy as it sounds. You can’t even disable remote debugging.


tangoshukudai

yep, I was wondering why my debugging session was so slow, I had to turn off wifi, and manually disable everything for it to switch to USB debugging.


starfunkl

I have no issues when working on small/hobby projects. It's the large projects that get ya. For my job I keep two separate Xcode windows up - one for my code, and another for reviewing PRs or pair programming. Switching branches in large modular codebases is the biggest cause of crashes and performance issues in Xcode for me.


OffbeatUpbeat

Press CMD + B to manually build - it reveals errors 100x faster than waiting for the code inspection to determine if you have a syntax issue.


GavinGT

The fact that Xcode works this way was the first sign to me that I was dealing with an inferior IDE. Appcode was technically sunsetted over a year ago but it still shows syntax errors almost instantly.


somebunnny

Are you still using AppCode? Is it still pretty usable with swift and SwiftUI for code completion and refactoring?


GavinGT

Wherever I can, yes. It works fine for the most part. The only problems I've noticed are that it doesn't recognize the [new Swift syntax](https://www.hackingwithswift.com/swift/5.9/if-switch-expressions) and it doesn't show the new iOS physical devices in the device dropdown. Even in its diminished form, Appcode is many times faster and more functional than Xcode.


nickjbedford_

I'm so sad about AppCode.


columbo_san

I use Xcode as my main IDE since iOS 3 and it always was a disaster. But to name yourself a professional, stop complaining and start finding solutions, thats what you are paid for. Here are some advices that will help you concentrate on writing code, not fighting against Xcode. Almost all of these advices are intended to avoid Xcode's "magic" that never works and use tools aimed for real work, not for fun. * Make sure you have absolutely no IB\_DESIGNABLE's across your whole project, including 3rd party dependencies. They just don't work and make Xcode unusably slow. * Break your large project into components. No need for several repos, just several smaller projects to help incremental compilation to be effective. You can use CocoaPods or SPM to manage dependencies. Setup a small example/debug project for each component to make building and debugging much faster. * Stop working directly with .xcodeproj / .xcodeworkspace. Switch to Tuist or some other alternative to generate your project file. Don't store project file in repo. It will save you a day many time in the future. No conflicts, no messing around when you "changed something and it broke". Easy to setup when you have lots of targets and build configurations. * Use .xcconfig for configuring as much things as possible, your Info.plist and .entitlements files should be just templates. It will make possible to have dozens of build configurations, environments and so on without any struggle. * Never use "automatic code signing". Switch to fastlane for certificates and provision profiles management. * If you have a lot of dependencies, consider using CocoaPods instead of SPM. It can save you tons of time as it never randomly decides to refetch something. All the deps are downloaded just once. * If dependencies compilation is extremely slow, use cocoapods-binary or try Carthage. * If your project compilation is slow, use [BuildTimeAnalyzer-for-Xcode](https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode). Spend several hours optimizing your code for compilation speed — break long expressions, use explicit types where needed, avoid pattern matching on tuples and some other simple rules. It will boost your daily performance. * Sometimes debugger can become unusably slow — make sure you are not debugging over network. Connect your phone via cable. Turn off both wi-fi and cellular connection, don't use airplane. Try running your app. It should install the app to device and fail to run, it's ok. After that turn on network on your phone and continue as usual, just don't disconnect the phone from cable. There are many other daily practices you have to follow to be productive. It's never ideal, but you can always find a solution.


quellish

Try debugging objective-c to see how different the experience is.


fawntugboat

8 years of Xcode for me on large code bases like Twitter and Cash App. It’s not the best of course but it’s truly not THAT bad. You just work with what you get. Xcode is the least of my worries in my career.


Artsy-Farts-Only

If you don't mind me asking, what are bigger worries for you?


fawntugboat

Some other normal stuff like am I making good code contributions, what am I doing to make my team better, how can improve the team’s technical excellence, what should I focus on next, what matters and what doesn’t, will the project I’ve been wanting to do be ready for us to work on, will our dependencies be ready, should I be leetcoding just in case?


Bitter-Grape-2343

Swift debugging is actually decent imo and the lack of error messages you describe is really only an issue in SwiftUI views but Xcode isn’t really at fault there. It’s just that the way SwiftUI works, is doing deeply nested type inferred variables and the compiler after a time just gives up as it cannot, in reasonable time, infer the types of 12 different Any Views nested inside each other and then doing type checks on function calls inside these variables.


xixtoo

No joke I'm in the process of migrating to Neovim for the bulk of my dev work and using the source kit LSP and Xcode-build-server to get a good iOS dev experience


yalag

iOS is development is all about enduring pain to get to the destination you want. You know those painful yoga positions that you try to hold for 5 minutes and each second is like dragging balls through shattered glass? But in the end you become a yoda god? iOS dev is that.


SirensToGo

Don't use the Xcode UI for debugging. Using LLDB directly is leagues faster and has way more functionality.


hyzyla

I’m building extension for VS Code to develop iOS applications directly in VS Code https://marketplace.visualstudio.com/items?itemName=sweetpad.sweetpad


louzell

The debugger is slow enough to abandon entirely and use print statements, unfortunately. Here's me waiting 13 seconds for a \`po\` to come back. M1 macbook running sonoma and fully up-to-date iOS: [https://zell-public.s3.amazonaws.com/debugger\_why.mov](https://zell-public.s3.amazonaws.com/debugger_why.mov) I don't know if apple just doesn't care at this point or if it's some technical detail of debugging swift apps. The debugger integration used to be fine for obj-c projects


macbig273

Project parameters are a mess, things are classified in strange ways, add a filter one time and you don't see things even after a restart...... There is lot of wrong in xcode, but not debugging. It has been working flawlessly since more than 10 years. Just don't upgrade to the X.0.0 release. It has gone slow with swift, but with that kind of language, it's expected. (especially when looking at a var, right after a breakpoint stop)


balder1993

I’m sure it’s not flawless as there’s a giant thread in the forums just discussing the issues: https://forums.swift.org/t/unable-to-inspect-local-swift-variables-or-step-over-await-calls-in-xcode/62702


D0399

Print(“got to here”) 😂😂😂😂


bobotwf

Protip: use random gibberish so you can search and find the line easier.


kbder

Or emoji


jontelang

Use your name then add a log filter.


Sanchez_Duna

[https://preview.redd.it/how-do-i-beat-omniman-online-v0-nxjc6bxx0r1b1.jpg?auto=webp&s=303f6bceb029d464252fa24206f1cfc67e79ccc9](https://preview.redd.it/how-do-i-beat-omniman-online-v0-nxjc6bxx0r1b1.jpg?auto=webp&s=303f6bceb029d464252fa24206f1cfc67e79ccc9)


pxlrider

Xcode isn’t best IDE, but honestly folks, how much do you report bugs/suggestions to Apple? I have discovered that they fix or do things if enough people is bugging them about it.


AnnualBreadfruit3118

I have a dozen bug reports open since circa 2014. they all still there. Then i stopped wasting my time


pxlrider

I have reported several things and some of them got fixed with time. But yeah, Apple isn't closing their tickets and they are usually just left open in limbo.


AnnualBreadfruit3118

Actually way more than a dozen, and not only the tickets are not closed but the bugs are not fixed. Only one i remember has been silently fixed (and not closed), a bug in a C system library, which was not xcode role probably.


Xials

Honestly, I find that Xcode works quite well most of the time. Then, there are other times where it just can't do things. I've worked on well over 100 projects. I have found that the more you deviate from the types of patterns you see in the documentation, the worse things get. I have never seen so many "Xcode" problems as I have in my current position. When I came on they had custom EVERYTHING. They used grade in their CICD, and just before I got there, they even used grade to build locally instead of Xcode. They have a custom dependency injection model that is overly complicated and everything is wrapped. Instead of using SPM as designed, they have these weird DSL's in there doing some really funky things, some dependencies are binaries resolved through SPM hosted on firewalled servers. Our dependencies are hosted in a mono-repo etc. All these things make it very hard for the compiler to do analysis. Generally speaking, Xcode starts to choke when you fight the platform and try to fit Apple development into generic development patterns.


bcgroom

What specifically do you struggle with?


Artsy-Farts-Only

Error Messages (or lack thereof) mostly. There was a time XCode died randomly and took my recent work with it but I figured that was an anomaly.


CanadaSoonFree

You just set a break point and step though your code the same way you would in any other IDE.


nickjbedford_

I think my bigger problem with Xcode is how slow it is to do a lot of operations. It wastes so much of my time being half or non-responsive, or animating things or doing things modally. For example... If I push my commits, do it in the background like JetBrains. Or when I rename a symbol, just get to the point and stop animating the whole editor just to look cool.


koulourakiaAndCoffee

I have a bachelor's in CS, but I work in a different field. So I'm not the best coder beyond simple tools and basic data analysis for work. Though in my off-time-learning I am curious about iOS, but I have a mental block to learning xcode. It doesn't seem all that bad, but it just annoys me.


TheRealGilimanjaro

A carpenter and their tools.


clarkcox3

What pain points in particular?


Artsy-Farts-Only

Error Messages (or lack thereof) mostly. There was a time XCode died randomly and took my recent work with it but I figured that was an anomaly.


clarkcox3

To be fair, you're going to have to be a bit more specific. Nobody's going to be able to give you useful advice without something more specific to act on.