What's New in AppCode

AppCode becomes swifter than ever before, bringing you
the first part of Swift 3 support, lots of helpful formatting options,
and new Swift code generation and editor features.

Free 30-day trial
See in action
2016.3 Dec 6


Swift 3

Swift 3

AppCode 2016.3 delivers the first huge part of Swift 3 support covering lots of changes introduced in this new major language version.

Check what features are supported



We've re-worked our Swift resolution engine and made code highlighting, completion and navigation much faster than ever before, even in complex projects.

With significant performance optimizations made in SourceKit integration, AppCode shows warnings, errors and fix-its in Swift code almost instantly.

Code style


AppCode 2016.3 comes with a first-class set of Swift formatting options allowing you to easily reformat your code.

Set your preferred formatting options for closures, chained method calls, condition clauses or function parameters, define the wrapping behavior, and stop caring about spaces and indents when writing your code.

Learn more about formatting changes

Create from usage

Create from usage

Have you ever dreamed about creating a function, constant, variable or property declaration just by using it in your code? Simply press ⌥⏎ and have it created automatically in the right place!

Learn more


UI tests

UI tests

AppCode test runner now supports UI tests.

Run all tests in your test file or execute a single one simply by pressing ^⇧R.

Re-run only failed tests in one click and easily filter them out from successful ones.


Semantic highlighting

Semantic highlighting

Unlike the usual highlighting that picks out language keywords, types and values, semantic highlighting helps understand how data flow through the code by highlighting each variable/parameter with its own color.

Enable it in Preferences | Editor | Color & Fonts | Language Defaults and use it when writing Swift, Objective-C or C++ code.

Highlighting and configurations

Highlighting and configurations

When your code depends on a set of variables and flags set in the run/build configuration, you can see the difference in the editor immediately as you switch the configuration in AppCode. Resolve context is updated automatically, while a manual switcher is still available as before.

C/C++ support

User-defined literals

User-defined literals

This C++11 feature brings the concept of built-in type into the language and is now supported by AppCode, including correct parsing, type preview in Quick Documentation popup (F1) and Rename refactoring.

Overload resolution

Overload resolution improvements

The process of selecting the most appropriate overloaded function or operator can be tricky. AppCode 2016.3 handles this well and even introduces two new code inspections for such situations:

  • Ambiguous call
  • No matching function to call
Code analysis

Code analysis improvements

We’ve reworked dozens of checks to avoid false-positives. This work includes:

  • correct tracking of variable usages in sizeof(), cin and cases when variable is passed by reference
  • correct handling of non-trivial destructors in the Unused variable inspection
  • support for __builtin_unreachable and __attribute__(unused)
  • platform-dependent code analysis
  • and more
C11 keywords

C11 keywords

AppCode 2016.3 adds support for _Generic keyword, as well as code completion for specific C11 keywords such as _Thread_local, _Alignas, _Noreturn, _Static_assert, and _Atomic.

This version also brings support for gcc atomic builtins.

Version control

Undo commit

Undo actions

Sometimes when working with version control, you change your mind at the last moment. AppCode helps you undo certain actions to avoid any harm:

  • undo the last change that you haven’t pushed yet;
  • restore a deleted local branch.
Sign-off commit

Sign-off commit

Some projects require Git –signoff commits to be used. AppCode now makes this possible to do from the commit changes dialog.

Resolve conflicts in one click

Simple conflicts can now be resolved by the IDE. If you have several nonoverlapping changes on one line, AppCode will show a special resolve icon in the merge dialog. Click the icon to have the conflict resolved by the IDE.

Git remotes

Manage remotes through the VCS | Git menu. Now you can add, edit and remove remotes for every repo in the project.

Filters in Git/Mercurial log

AppCode now builds an index for all commits on first-time project opening and later update it on a log refresh. This improves the performance of text, author and path filters in the Git log.

Git/Mercurial log UI changes

A new design for branches and tags in Git/Hg Log makes it cleaner and easier to use:

  • labels have moved to the right;
  • commit messages in the table are now aligned;
  • commit details have moved to the right.

UI enhancements

Find in path

Find in Path

The Find in Path dialog now keeps previously used settings (scope, file name filter, context, etc.), regardless of where you call it from.

San Francisco

San Francisco font

The default font in the Default and Darcula themes is now San Francisco. It’s used across all the menus and tool windows.

Fira Code

Fira Code font

AppCode 2016.3 bundles the FiraCode font, so font ligatures are now much easier to use. To set is as your editor font, select it in settings Editor | Colors & Fonts | Font.

Free 30-day trial
2016.2 Jul 20


Introduce Variable

Introduce variable

With the new Introduce Variable refactoring for Swift, you can easily extract a part of a complex expression into a local variable. The variable name will be suggested automatically, as well as options for automatic type specification and variable mutability.

Learn more in our blog

SourceKit inspections

Inspections & intentions

See all errors and warnings immediately in the editor when writing Swift code with SourceKit inspections integrated into AppCode

Read the tutorial to learn more about inspections in AppCode

SourceKit fix-its

Use the same fix-its as in Xcode for Swift – simply press ⌥Enter on a highlighted region to apply them.

Multiple fix-its
Select the necessary action in case of multiple fix-its available.
Spelling inspection

Spelling inspection

If you happen to mistype something in your comments or code constructs, fix it simply by pressing ⌥Enter

Live Templates

Live templates

Use Live Templates in Swift to insert frequently-used or custom code constructs into source code quickly.

Read the tutorial to learn more

Argument placeholders

Argument placeholders

Have parameter names and value placeholders autofilled simply by invoking completion on a Swift method or function.

Argument placeholders for closures

Generate closure stub for function parameter simply by pressing on the corresponding placeholders and easily fill closure argument names.

Closure variables completion

Invoke completion for the closure defined as a local variable and simply select an option to generate closure stub in the same way as you do for blocks in Objective-C.

Completion for subscripts

Subscripts in Swift may contain multiple parameters – that's why AppCode makes it easier for you to deal with them by filling the corresponding placeholders.


Complete Statement

Complete statement

Use Complete Statement (⇧⌘Enter) in Objective-C code to insert parentheses, braces, semicolons and quotes for such code constructs as if, switch or else. Quickly jump to the place where you can start typing the next statement automatically.

Learn how to use this and other types of completion



Generate documentation comments for Objective-C/C++ methods in no time, simply by pressing /**, /*! or /// and have parameter names inserted into the comment stub automatically.

Completion in comments

Use completion inside documentation comment to quickly insert documentation tag or method parameter name.

Quick Documentation

Benefit from the significantly improved formatting in Quick Documentation (F1).

Rename in comments

Save your time when updating your documentation – use Rename for method parameters and have them changed automatically in documentation comments.

Mixed code

Rename in the mixed code

Easily rename Swift methods and method parameters used in Objective-C and quickly find their usages with ⌥F7.

Version control

Unversioned files

See all unversioned files right in the Commit window.

Commit log navigation

Navigate through the commit log easily by using tooltips with target commit information.

And even more

  • New code generation options, Generate Operators and Generate Definitions, recently implemented in the CLion, are also available in AppCode for C++. Read more.
  • LLVM and LLDB predefined coding styles added for Objective-C/C++.
  • Font ligatures are officially supported by IntelliJ-based IDEs. If you have a font that supports ligatures installed (e.g. FiraCode, Hasklig, Monoid or PragmataPro), then simply go to Preferences | Editor | Colors & Fonts | Font, choose a corresponding font there and select Enable font ligatures.
  • You can now set any custom background image for the editor window via Find Action (⇧⌘A) | Set Background Image.
  • Apply somehow interactive mode is supported for applying patches.
  • Git/Hg log shows commit details for several selected commits.
  • IDE notifications are now friendlier – they appear in the bottom right corner and are grouped by subsystem.
2016.1 Mar 30


Swift parser improvements
AppCode delivers parsing, highlighting and completion for the following Swift 2.2 constructs:
  • associatedtype keyword
  • #file, #line, #column and #function debug identifiers:
  • New typesafe #selector directive
  • #if (swift>=) configuration option
  • Keywords used as argument labels
  • Function naming with argument labels
Swift code folding
Use code folding for Swift declarations and focus on the most important parts of your code:
  • Expand/collapse current code block using ⌘+/⌘-
  • Expand or collapse any declaration recursively via ⌥⌘+/⌥⌘-
  • Expand or collapse all declarations in the current file using ⇧⌘+/⇧⌘-

Read about all code folding features

Completion improvements

Completion for Objective-C types used from Swift is improved and shows relevant substitutions for any type used.

Swift debugger

Swift debugger

Change values of Core Data objects without stopping your debugging session with the Set value action (F2).

Build messages

Build messages

Parsing of build messages is significantly improved: now Messages tool window (⌘0) displays all errors and warnings in a convenient way, skipping all irrelevant information.

Build progress messages were updated to show user-friendly descriptions for particular build phases.

CocoaPods support

CocoaPods support

Edit your Podfiles with all recent syntax additions supported including use_frameworks!, abstract_target and other keywords

Watch demo

C++ language support

C++ language support

Variadic templates

C++ parser in AppCode now supports variadic templates providing a lot of fixes, especially for problems in overload resolution and false positives in code analysis for related code constructs.

C++ language support


Symbol completion and import quick-fix for STL headers now generate correct imports.

C++ language support

Quick documentation improvements

Quick Documentation popup (F1) now provides additional details covering lambda expressions, namespace aliases and explicit instantiation, as well as links to the referenced types.

Source directories management

Source management

Manage your project sources and libraries independently from the project structure and choose where to perform sources indexing, code generation, refactorings and more.

Read how to use it in our blog

Structure View

Structure view sort modes

Two new sorting modes are available in Structure View (⌘7) for Objective-C and C++: Sort by Type and Sort Alphabetically.

Read more

Version control

By-word difference

By-word diff

Find changes faster in Diff Viewer with by-word difference highlighting

Work with multiple Git worktrees directly from AppCode and manage them as regular repositories.

Rebase your feature branches on master in one click using the Checkout with Rebase action in Branches context menu, and easily Rename it.

If using Mercurial, now you can compare file revisions between branches.

And even more

  • Right-to-left languages (Arabic and Hebrew) are now supported in the editor.
  • CoffeeScript and Stylus are bundled in AppCode
  • Improved UI for Attach to local process... action
  • Edit custom properties/VM options at no additional cost: just select Help | Edit Custom Properties... or Edit Custom VM Options...
    AppCode will automatically suggest the appropriate files to be created.