It’s good practice to try and stay up-to-date, but sometimes you need the ability to release an app built with an older version. Having multiple versions of Xcode available provides more flexibility. You can’t release app updates built with a beta version of Xcode. If you want to start testing against beta OS versions or take advantage of new APIs, you’re going to need to use a beta version of Xcode. At the time of writing, WWDC 2019 is about to start.
If you want simulator support for more than the current and previous two or three major iOS versions, you often can’t use the latest Xcode release. Xcode is quite aggressive at dropping simulator support for older iOS versions. Upgraded your code to Swift 5? You can’t use Xcode 10.1 or lower. Still using Swift 3? You can’t use Xcode 10.2 or higher. This was particularly important during the Swift 2.x to 3.0 timeframe when the language underwent many significant, and incompatible, changes. For Swift code, the version of the language itself can change.See How iOS Apps Adapt to the iPhone XS Max and iPhone XR Screen Sizes for more information. Build with Xcode 9.x (against the iOS 11 SDK) and even when opened on an iPhone XS Max running iOS 12, your app will use the iPhone X resolution and be scaled to fill the larger screen. For example, building against the iOS 12 SDK in Xcode 10.x opts your app in to support the iPhone XS Max and iPhone XR screen sizes. This can implicitly opt you in to certain OS features or device support. It sets the base SDK version that you are building against.The version of Xcode you use to build your app has a number of important consequences. If using the latest version of Xcode was always the best thing to do, life would be simple.