AppCode News

AppCode 2020.3 Is Here: Swift Localization, New Inspections and Intentions, SourceKit-Based Go to Declaration, XCFrameworks Support, Improved Refactorings, New Debugger Features, and More!

Read this post in other languages:

Welcome our third update this year – AppCode 2020.3!


Download AppCode 2020.3


Language Support

The following Swift changes are now supported in AppCode:

  • SE-0279, SE-0286: Multiple trailing closure syntax.
  • Allow synthesis of Equatable and Hashable in conditional conformances (see the SE-0185 amendment).
  • SE-0276: Multi-pattern catch clauses.
  • SE-0269: Increased availability of implicit self in @escaping closures when reference cycles are unlikely to occur.
  • SE-0044: Import as member improved as described in OC-20445.
  • SE-0280: Enum cases as protocol witnesses.


String localization was implemented for Objective-C a long time ago, and now it works for Swift:

  • Localize strings easily with a new intention for Swift:Intentions
  • See the actual value of a localized string in your code, with convenient folding for NSLocalizedString statements:Folding
  • Use completion, navigation, and Find Usages for localization keys.

Inspections and intentions

Remove redundant self qualifiers with a new Swift inspection:

Remove redundant self

Find unnecessary argument lists for closures and remove them in seconds:

Remove unnecessary arguments

Easily convert trailing closures to closure arguments, and vice versa, with a new intention:

Convert to closure argument

Press ⌥Space to see the quick-fix preview:

Quick-fix preview

Change Signature

With a cross-language Rename refactoring implemented, the next logical step was to implement a cross-language Change Signature – and here it is in AppCode 2020.3! And even more:

  • You can now change the function/method throw type right in the Change Signature dialog:
    Change Signature
  • Default argument values are now preserved when executing the refactoring.
  • Variadic parameters are now correctly updated.
  • The refactoring preview shows the correct preview for init methods.


Rename preferences are now available in an inlay hint. Press to display them:

Rename preferences

Go to Declaration

Go to Declaration now works even before indexing and caching are finished. Under the hood it uses SourceKit in the same way as our code completion.

Swift Package Manager

AppCode now shows the SPM executable and test run configurations in the Run Configurations chooser.


A heap of new features are available in the AppCode debugger:

  • Click on an inline hint and examine the selected variable:View inline watch
  • Add new inline watches right from the editor window:Add inline watch
  • View inline watches from the Variables tab:Watches tool window
  • Set the current location for the program counter in the left-hand gutter:PC location point

Code With Me

Code With Me

AppCode 2020.3 supports Code With Me – a new service from JetBrains for collaborative development and pair programming. Code With Me enables you to share the project you currently have open in your IDE with others, and work on it together in real time. You can download it today from the plugin marketplace (Preferences | Plugins | Marketplace). Check out these posts to learn more about Code With Me.

Version Control

Git Stage

Git Stage

Stage changes directly from AppCode: enable the staging area in Preferences | Version Control | Git to get access to the new Staged node in the Commit view. Learn more in this blog post.

Git Tab in Search Everywhere

Git tab

Find commit hashes and messages, tags, and branches in the Search Everywhere dialog on the new Git tab.

XCFrameworks Support

Code entities from XCFrameworks are now resolved correctly.

Quick Definition

Preview file contents right from the Project View by using ⌥Space:

Quick Definition

That’s it! Explore all the new features in detail on our website and start your free 30-day evaluation to see them in action for yourself!

Download AppCode 2020.3

Your AppCode team
The Drive to Develop