What's New in AppCode

AppCode becomes even swifter than before, bringing you support for lots of new Swift language features, new Create from usage actions, Override/Implement improvements and even 🎉😃🔥 support in the editor!

Free 30-day trial
See in action
2017.1 Mar 28


Swift 3

Language support

AppCode 2017.1 brings long-awaited improvements in Objective-C/Swift translation, support for nullability audited regions and lots of the latest Swift 3 features.

Check which new features are added

Create from usage

Create from usage

Generate new classes, structs, protocols or enums together with needed initializers right from their usages in your code.



Override or implement multiple methods at once – now even faster thanks to a UI showing Swift members hierarchically and more accurate code generation.



Benefit from function completion, which now takes into account parameter names in function signatures.

Structure view

Structure view

See all the //TODO, //FIXME and //MARK comment tags in the Structure view (⌘7) and File Structure popup (⌘F12).

C++ support

C++ 14


AppCode 2017.1 delivers support for the following C++14 features:

  • auto return type
  • generic lambdas
  • variable templates
  • generalized lambda captures
Nested namespaces


As the C++17 standard is just around the corner and the upcoming features are being finalized, AppCode starts supporting C++17 with nested namespaces.

Convert to auto intention

Convert to auto intention

For the sake of code readability and accuracy, AppCode now suggests to modernize your C++ code by converting variable type to auto.

As this feature should be used carefully across your code base, it’s implemented as a non-intrusive intention.

General improvements

General improvements

We continue to improve AppCode's parser and code analysis to make it even more accurate:

  • Decltype used in trailing return and constructors doesn’t confuse AppCode anymore
  • AppCode no longer suggests making static or friend functions pure virtual
  • Hidden functions from the base class are no longer suggested in completion


Build messages

Build messages

Filter compiler messages in your application – select the necessary message types via the Filter messages button on the left-hand side of the Build Messages tool window (⌘0).

Xcode-like breakpoints

Xcode-like breakpoints

Welcome a new option, Drag to the editor area, available in Preferences | Build, Execution, Deployment | Debugger | Remove breakpoint. Click a breakpoint in your code to disable it, or drag a breakpoint into the editor area to remove it.

Emoji support

Emoji support

Insert emojis into your source code easily with the native emoji chooser (^⌘Space) and have them correctly rendered in the AppCode editor and IDE windows.

Find in path

Find in path

Change Find in Path settings faster with all of them gathered on a single pane.

Remote hosts

Remote hosts

Upload your project sources to the remote server painlessly, by using the Remote Hosts Access plugin bundled in AppCode.

And even more

  • The Branches popup has been redesigned and can now mark important branches as Favorites.
  • VCS Log viewer now allows you to use regular expressions, and to match or ignore case when searching.
  • Fixes for Dvorak as well as Korean, Chinese and Japanese keyboard layouts.
  • Zero-latency typing enabled by default.
Free 30-day trial
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.

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.