Apple focused on tools for version 11. Specifically, it wants to make the tools you use faster and more productive. To that end, the IDE has a host of new shortcuts and capabilities meant to make it simpler to navigate and faster to complete your projects, as well as some Swift stability that makes compiling faster.
The new Xcode also makes some UX changes to better serve these new tools. For example: the source control log inspector is now housed in the inspector pop-out. This move was, in part, an attempt to reduce the number of top bar and navigation buttons. It works; Xcode 11 looks lighter and breezier, and those subtle changes make a ton of sense.
There are new navigation and layout items, too. The assistant editor still goes side-by-side, but each pane allows you bisect it. You can now have a 2:1 view for three total panes, or 2:2 for four total panes open. It’s worth noting that a side-by-side 1:1 view will always default to a SwiftUI view when it’s used and available for the file you’re working on.
Minimap is another new feature, and clearly meant for making sense of large codebases. It sits on the right side of the screen, and offers a thumb-nailed view of the code you’re working on. It shows the entirety of your code in unreadably-small text, which can be expanded if you like (though it’s still quite small, even then).
Minimap is great when you’re pretty sure you know where that function or
struct you need is in your code-file. You can also choose to make all code types viewable in the editor and Minimap (this view tags your functions, methods, and such so you can poke through your code a touch faster).
One of the more interesting tweaks comes with the
//MARK comment, and comments in general. When you use the
//MARK comment, it automatically creates a divider in your code and bolder text in the Minimap. Documentation is now treated like a part of your code, not something different altogether.
Xcode 11 Documentation
Documentation changes in Xcode 11 are one of the more interesting changes we think most developers will experience with this launch. First, documentation styling has changed to make it easier to read and less like command-line code. In other words, it looks a lot nicer, and will (hopefully!) encourage more documentation.
This new-look documentation can also auto-generate features it thinks you should note. For example, if you comment a function to note its overall purpose, then add items to that function, your documentation will add a bit about your parameters to remind you to note more specifically what they’re for.
Swift Package Manager
Xcode 11 has stronger support for the Swift Package Manager, which Apple says is now fully integrated into Xcode 11. It works with GitHub, BitBucket, and GitLab’s various package finding features. You can add Swift packages you’ve favorited in GitHub through Xcode’s project editor, which has a “new Swift Package” tab. It checks for diffs and compatibility; if you’re trying to load a package targeting Swift 3 or an older variant of iOS, for instance, it’ll tell you and try to rectify issues before loading the package.
Xcode 11 has a long list of smaller tweaks and upgrades, as well. Debugging allows you to feign test issues such as poor network connectivity or a device that’s running hot. Test Plans are defined sets of tests to run across schemes, making it easier to reuse tests. A new code review button shows diffs in code, and you can view diffs in-line within your code-base and see changes in real time.
Like SwiftUI, Xcode 11 is a bit of a fresh start, with a load of encouragement for developers not yet using Swift to do so. It’s a strong nod toward the path Apple plans to walk developers down: This IDE shines brightest with SwiftUI. Its inclusion of the Swift Package Manager and Swift Runtime are additional peeks into the future of coding with Xcode, which is just now starting to flex its Swift-enabled muscle.
All told, the future of app development for Apple’s platforms is less low-level or boilerplate coding. That means more focus on the logic in your app, and less time tweaking the app’s interface.