Best IDEs and Tools for Swift Development: Advanced Level

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Introduction: The Swift Ecosystem for Professionals



Swift is not just a language for iOS/macOS development, but a powerful ecosystem that requires a developer not only to know the syntax but also to be able to choose the right tools. At an advanced level, standard Xcode may not be enough: you need fast linters, advanced profilers, alternative editors, and continuous integration systems. In this article, we will review the best IDEs and tools for a Swift developer who wants to go beyond basic functionality.



1. Revolution in IDEs: Xcode, AppCode, and VSCode



Xcode 15: Configuration for the Advanced User



Xcode remains the primary IDE for Swift, but at an advanced level it needs to be customized.



  • Build Settings: Use SWIFT_COMPILER_MODE = wholemodule to speed up Release builds.
  • Behaviors: Configure automatic test execution on build errors.
  • Code Snippets: Create snippets for MVVM patterns and Combine.


Example of an advanced Run Script for optimization:



if [ "${CONFIGURATION}" = "Release" ]; then  echo "Removing debug symbols..."  strip -S "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"fi


AppCode: When Xcode is Slow



JetBrains AppCode is an alternative to Xcode with the IntelliJ engine. It offers:

  • Higher-order refactoring: Extract protocols, replace inheritance with delegation.
  • Code inspections: Find memory leaks and unused code.
  • Navigation: Quick jump to protocol implementation (Cmd+Alt+B).


However, AppCode does not support SwiftUI Preview and Storyboard, so it is used in a hybrid way: code is written in AppCode, and UI is designed in Xcode.



Visual Studio Code + Swift Extension



For those who want a lightweight editor with a powerful plugin ecosystem. Install the Swift for Visual Studio Code extension (from Swift.org).



Configure settings.json for advanced autocompletion:



{  "swift.sourcekit-lsp.serverPath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp",  "swift.buildArguments": ["-Xswiftc", "-Xfrontend", "-Xswiftc", "-warn-long-function-bodies=100"]}


Drawback: No built-in debugger for SwiftUI Preview.



2. Static Analysis and Linting Tools



SwiftLint: Custom Rules for Your Team



SwiftLint is a mandatory tool for CI. Create a .swiftlint.yml with advanced rules:



disabled_rules:  - trailing_whitespaceopt_in_rules:  - empty_count  - force_unwrapping  - closure_spacingtype_body_length:  warning: 200  error: 350reporter: "xcode" # for Xcode


Run it in the build scheme as a script:

if which swiftlint >/dev/null; then  swiftlint --strictelse  echo "warning: SwiftLint is not installed"fi


Periphery: Finding Dead Code



Periphery analyzes the call graph and finds unused methods, classes, and protocols. Example run:



periphery scan --workspace MyApp.xcworkspace --schemes MyApp --targets MyApp --index-store-path ~/Library/Developer/Xcode/DerivedData/MyApp-abc/Index/DataStore


This tool is especially useful when refactoring large legacy projects.



3. Profiling and Debugging: Tools for Finding Bottlenecks



Instruments: Advanced Templates



Xcode Instruments is not just the Time Profiler. Use: