AppCode starts 2016.3 EAP: new Swift formatting features, completion improvements, UI testing support and more!

Today we are starting the Early Access Program for AppCode 2016.3, and the first build is already available on our confluence page. As usual, it contains a heap of new features and improvements, so let’s take a look at them right now!

Swift code formatting

AppCode comes with a first-class set of Code Style options for Objective-C and C++. Some platform formatting features for Swift were previously implemented in AppCode 3.1, but that initial implementation list was missing many language-specific formatting features. In this update we’ve decided to cover the most important ones based on the top-voted requests in our tracker and public resources.


Configure spaces before and after colon in type annotations, dictionary types and dictionary key:value pairs. You can find them in Preferences | Editor | Code style | Swift | Spaces | Other, directly after similar options for commas and semicolons:
As usual, look in the Preview pane to see how changes in formatting options will affect the look of your code.


Starting with this build, AppCode will keep closure arguments on the same line as they were specified when reformatting the code (⌘⌥L).

In the unlikely case you need closure arguments to be placed on the next line automatically, you can select Parameters on new line when multiline in Wrapping and Braces | Closures.

Sometimes it might be helpful to keep simple closures on one line when passing them as an argument to the function, and now it’s also possible – simply select Wrapping and Braces | Keep when reformatting | Simple closure arguments in one line. And finally, if you want to keep trailing closures and simple blocks on one line, this appropriately named option is there for you:Simple blocks and closures

Functions and methods

First of all, we’ve added a dedicated section for chained method calls formatting, similar to the one for Objective-C/C/C++:
Chained methods
Use settings in this section to select the wrapping behavior:

  • Do not wrap
  • Wrap if long (the maximum number of columns can be specified in Preferences | Editor | Code style)
  • Chop down if long
  • Wrap always

Align when multiline option is also available.

By using the Wrap first call option, you can specify if you want the first method in the chain to be wrapped. Note that in this case the space between the first method in the chain and the beginning of the line is controlled by the continuation indent value set on the Tabs and Indents tab.

Settings for the placement of opening/closing round brackets were added to the sections Method/function declaration parameters and Method/function call arguments:

Condition clauses

If you’d like to specify multiple condition statements on different lines, have them aligned simply by selecting the Align when multiline option in the Condition clauses section on the Wrapping and Braces tab.


Now all entities in the completion popup in Swift should be sorted according to scope in mostly the same way as it was implemented for Objective-C:

  • Local symbols (local variables, parameter names, local functions)
  • Member symbols (class/struct properties, methods) sorted in the following order:
    • Symbols from the same class
    • Symbols from class extensions (if any)
    • Superclass symbols
  • Global symbols

Objective-C users will be glad to know that argument placeholders for pure C/C++ functions are now available in AppCode editor again.

UI testing

This EAP comes with support for running and debugging UI tests on device and simulator in the same way as it was implemented for unit tests. Unfortunately, currently we have an issue with Xcode 8 which prevents the correct running of UI tests, but we are planning to resolve it before the AppCode 2016.3 release.

Semantic highlighting and C++ support

Objective-C developers (as well as C++ ones) will be glad to know that now they are able to switch to semantic highlighting:
Semantic highlightingLearn how to enable this feature here and in case you want it for Swift, vote for this feature request in our tracker.

There are also lots of C++ support improvements implemented by the CLion team which are also available in AppCode, including:

and more. Read about them in the corresponding series of posts.

Version control

Undo commit action is added to the Log context menu and allows you to undo the last change if it’s not pushed yet:Undo commitIn addition, now it’s possible to restore a deleted local branch or alternatively delete the tracked remote branch too.

For projects requiring Git –signoff commits to be used, the corresponding option was added to the Git Commit dialog.

IDE interface improvements

First of all, the default UI font is now San Francisco (SF NS Text) and it’s used across all the menus and tool windows both in the Default and Darcula themes. Another notable improvement is that all default editor color schemes bundled in AppCode are editable by default and do not require you to copy the color scheme first.

That wraps it up! The full release notes can be found here.

Download AppCode 2016.3 EAP

Your AppCode team
The Drive to Develop

Comments below can no longer be edited.

14 Responses to AppCode starts 2016.3 EAP: new Swift formatting features, completion improvements, UI testing support and more!

  1. Avatar

    Sidney Just says:

    September 30, 2016

    Can we please get the class property keyword fixed? It basically breaks any app that makes use of UIKit, where its usage is pretty much ubiquitous. I understand that Swift is the new hot thing, but I would really rather not be the guy who changes the whole company code base to another language just because his IDE didn’t support one keyword. The issue in question is # OC14107.

    Also, on a more personal level: Could you guys stop breaking my Afterglow plugin with every major release? :p

    • Stanislav Dombrovsky

      Stanislav Dombrovsky says:

      September 30, 2016

      We are working on it right now, and most probably it will be ready soon. About the plugin – could you please submit an issue to our tracker? May be we will find some solution after sorting out the issue, so next time it won’t be broken 🙂

  2. Avatar

    Ivan says:

    October 3, 2016

    When you will be fix this error: ?

    • Stanislav Dombrovsky

      Stanislav Dombrovsky says:

      October 3, 2016

      It’s caused by this issue and we plan to fix it soon (the issue is already in internal review).

  3. Avatar

    Alex says:

    October 3, 2016

    Hi thanks for the update! Is any work planned on fixing up the interop syntax issues that are piling up?

    It’s getting somewhat unwieldy:
    (None of those are errors or warnings in Xcode..)

    • Stanislav Dombrovsky

      Stanislav Dombrovsky says:

      October 3, 2016

      It’s not completely clear, which issues do you have, but it looks like the most of them are related to the Swift 3 support and this issue. We are working on them right now and plan to include both into 2016.3 release and backport to 2016.2.x update.

      • Avatar

        Joan Zapata says:

        October 4, 2016

        Hi, I’m a newcomer in AppCode, is there any workaround for the issue you mentioned? It seems it makes AppCode unusable with Swift 3. Thanks for saving us from XCode! 🙂

        • Stanislav Dombrovsky

          Stanislav Dombrovsky says:

          October 4, 2016

          For the moment there is no workaround, but I believe we’ll fix it soon.

          • Avatar

            Joan Zapata says:

            October 4, 2016

            That’s very good to read thanks. 🙂

      • Avatar

        Dave Yost says:

        October 23, 2016

        I love Jetbrains and your products. They are fantastic to use. Except that I can’t use them!

        There is one very painful area that needs emergency attention: keeping up with language changes. I cannot use your beautiful products because of this area of severe neglect.

        Please take language parsing correctness to Priority #1.

        Swift 3!

        • Stanislav Dombrovsky

          Stanislav Dombrovsky says:

          October 24, 2016

          This post is about first EAP build and as usual it contains:

          a) features that could be in progress for a long time. They could be finished at the EAP time and we include them.
          b) features from IntelliJ platform which all product teams get without spending a single hour on it.
          c) C++ support features delivered mostly by the CLion team (because AppCode and CLion share the same codebase for C++).

          So, if you see the feature related to the general IDE functionality (such as, for example, some VCS improvements) – we do not spend our time on it, cause it’s platform feature and it’s ready for all products. If you see some C++ feature – most probably it’s from the CLion and we also do not spend our time on it. If you see some Objective-C feature included – most probably this feature was implemented by both AppCode and CLion team. And if you see new Swift features – all of them were made by the AppCode team. As you can see, our development activities are distributed here.

          The feature scope included in this first build is not final. As you can see in this series of posts, Swift support is one of the top-priority tasks for us.

          But it’s important to understand here, that there 3 main languages in AppCode: Swift, Objective-C and C/C++. For now we spend more time on Swift because we need to deliver the same experience as for Objective-C/C/C++. But we always will continue to work on important Objective-C support tasks (such as support for class properties) or project-model related tasks. Because lots of people use Objective-C or C++ in AppCode.

  4. Avatar

    liushuaikobe says:

    October 11, 2016

    When will the 2016.3 release finally?

    • Stanislav Dombrovsky

      Stanislav Dombrovsky says:

      October 11, 2016

      End of November – middle of December.

  5. Avatar

    ysnows says:

    October 19, 2016

    first,i don’t like xcode.but the appcode is too slow,specially when i develop game with cocos2dx (c++ project). and the livetemplate has delay, these let me crazy. finally,please improve the c++ support and the performance.

Discover more