Early Access Program Features

What’s New in IntelliJ IDEA 2017.3 EAP?

Last week we announced the opening of the EAP for IntelliJ IDEA 2017.3, the upcoming IDE update which will be released this fall. In the announcement we briefly mentioned some of the major changes the update will deliver. Let’s talk about them in a bit more detail.


First of all, we continue enhancing our data flow analysis for Java code.

IntelliJ IDEA 2017.3 now detects possible nullability issues even in Stream API call chains:

The quick-fixes that help migrate plain for loops to Stream API have been extended to cover a few more sophisticated but quite common cases.

Usages of StringBuilder can now be replaced with Stream.collect and Collectors.joining:

Code that iterates to find a maximum or a minimum can now be automatically replaced with Stream.max and Stream.min:

The data flow analysis for the Optional type has also become smarter:

Now, it reports even non-obvious issues:

We’ve improved the way nullability annotations are inferred. Earlier annotations were inferred only for library methods’ parameters and for any methods’ return types. Now it also infers nullability annotations for parameters of sealed and private methods:

The IDE shows the inferred annotations in Parameter Info and Quick Doc popups. When the caret is at such a parameter, the IDE offers a quick-fix to explicitly declare the inferred annotation:

Finally, there are many brand new inspections, which you can easily see in Settings by typing “2017.3” in the Search field:

JVM debugger

Just like data flow analysis, the Debugger is another area we’ve constantly been enhancing in recent releases, and IntelliJ IDEA 2017.3 is no exception.

First, the Debugger tool window adds a new Overhead tab:

As its name suggests, this tab shows you the overhead added either when stepping over the code or when Data Renderers evaluates values to display them in Variables, Watches, or other places.

When not needed, the tab can be easily hidden and restored later.

Speaking of possible overhead, the Debugger now lets you reduce it – by using the On-demand Data Renderers. Now evaluation of values in Variables, Watches, or other places can be done on click when needed, rather than automatically.

This new feature can be enabled in the Data Renderers settings for each renderer:

Then, in Variables, Watches, and other places, simply click the renderer’s expression placeholder to see the value:

Any renderer can be “muted” from the context menu: this will enable the On-demand setting for the selected renderer:

Same functionality is automatically enabled for any object if you disable the default toString renderer.


Support for Spring and Spring Boot is also getting better with each update. First of all, we’ve introduced initial support for auto-configured MVC web applications, already available in the EAP.

Another thing related to Spring, and project configuration in particular, is auto-detection of Spring facet and context. We hope this will make your life much easier, since facet configuration is always a painful process required to have Spring-dedicated coding assistance.


In Git integration, we’ve sped up branch operations (especially for large projects) and added slight UX improvements, such as the Interactively Rebase from Here action in the Log viewer. In addition, Compact References View and Show Tag Names settings are now project-level instead of global.


The biggest highlight here is the brand new editor-based REST client. This new client reuses the approach from VS Code and Emacs for testing HTTP requests:

To use the new client, simply open a new Scratch File and select ‘HTTP Requests’ as its type. This will create a scratch file with the “.http” extension. The file format is basically a mixture of HTTP RFC and custom injections, similar to what VS Code uses.

To run a request, use the icon on the left-hand panel of the editor:

Once the IDE has run a request, it will embed a link with the results to the file for easier navigation:

In other news, the Docker plugin now supports alternative names for docker-compose.yml files.


Support for Vue.js has gotten a lot better with the update, adding automatic closing of curly braces, and coding assistance for props (including props as arrays) and data properties/methods.

The Change Signature refactoring now also works better for ES6 methods: the IDE correctly updates all usages of the method across the project.

The Extract Parameter refactoring now uses the ES6 parameter syntax. Speaking of ES6, when possible, import statements are now added automatically when code is pasted from the clipboard.

The TypeScript support additions include the Extract Type Alias refactoring and

Convert type to interface intention. Also, the TypeScript compiler can now be used by the IDE to report problems in JavaScript (this requires you to set allowJs to true in tsconfig.json).

Finally, code styles are now imported automatically from ESLint and TSLint when a project is opened.


One more notable change in this update is the new code style settings format. Now all code style settings are located under “<PROJECT_ROOT>.idea/codeStyle” directory. The ultimate intention is to support multiple project code styles linked to different scopes. The new format is also cleaner and contains all code style settings properly grouped by language.

The old “.idea/codeStyleSettings.xml” is imported to two new files: “.idea/codeStyles/codeStyleConfig.xml” containing a link to preferred project code style, and “.idea/codeStyles/Project.xml” with code style settings for different languages. The latter is optional and created only if there are non-default settings. If the “.idea” directory is under version control, both files can be added to VCS too. The old codeStyleSettings.xml is kept for backwards compatibility.

Last but not least, the Go to File action now doesn’t require slashes between folder names and before the file name:

That’s it for today. To try these new features, download the EAP build from the EAP page on our website, or even better, from Toolbox App.

Since this is an early build, things sometimes may not work as expected. If you come across anything that doesn’t work like it’s supposed to, let us know in our issue tracker.

Happy developing!

Comments below can no longer be edited.

18 Responses to What’s New in IntelliJ IDEA 2017.3 EAP?

  1. Avatar

    David Zemon says:

    September 14, 2017

    Anybody else notice infinite indexing? My project has been indexing all night long. Ubuntu 17.04, 64-bit Intel. Trying to index this project: https://github.com/DavidZemon/LearnSpring

  2. Avatar

    Mike says:

    September 14, 2017

    Can the .http files be saved permanently instead of being a scratch file? The biggest problem with the current rest tester is you can’t save requests for future use. If the new functionality uses scratch files then they can’t be reused and what is the point?

    • Avatar

      Rasmus says:

      September 14, 2017

      Even better: Can we save them in a way that can be used for automatic api testing?

    • Avatar

      Vadym says:

      September 14, 2017

      you can create such files and push them along with your project into GIT repository so your colleagues can use it as well.

  3. Avatar

    Gerard says:

    September 14, 2017

    Will the REST client also get the code-generation capabilities of the VSCode extension?

  4. Avatar

    B says:

    September 14, 2017

    David, yes, the indexing issue was raised as a bug in clion two years ago. It’s especially apparent on network drives

  5. Avatar

    Malek Boubakri says:

    September 15, 2017

    Any news for YARN Support!?

    • Avatar

      Andrey Cheptsov says:

      September 21, 2017

      I believe IntelliJ IDEA’s NPM support should be compatible with YARN. Do you have any issues with it?

  6. Avatar

    Jacob says:

    September 21, 2017

    What version of Android Studio will you include/merge into 2017.3 EAP? Have you done that already? I’m specifically interested in a bug fix (https://issuetracker.google.com/issues/37137335) released in Android Studio 2.3.1, that will probably make ‘Instant Run’ work for me in 2017.2.4 (I’m using revision 2.3.3 of the Android plugin for Gradle and version 4.1 of the Gradle wrapper). Thanks!

  7. Avatar

    Mathieu says:

    September 28, 2017

    Just switched from 2017.2.4 to 2017.3 EAP, when running gradle run config it runs in the “Build” view where runs is listed in a dropdown instead of tabs (as it was previously handled in the “Run” view).
    My main issue is that this runs dropdown lists everything without a state displayed so when you run multiple commands, you don’t know anymore what’s running or not. do I lack a configuration?

    • Avatar

      Mathieu says:

      September 28, 2017

      Plus I can’t stop the running build except the last one.

  8. Avatar

    Honza says:

    October 2, 2017

    A small typo: in the example “Usages of StringBuilder can now be replaced with Stream.collect and Collectors.joining” you use “]” as a suffix AS WELL as a prefix. So the result will be (in both the cases – Stringbuilder and Collectors.joining) something like “]first,second,third]”.

    • Trisha Gee

      Trisha Gee says:

      October 2, 2017

      It’s true, and it’s unusual but it’s not necessarily incorrect 🙂 An example with non-identical prefix and suffix may have shown the feature more clearly. Thanks for paying attention though, and clarifying what the code does.

  9. Avatar

    Anton Triputen says:

    October 3, 2017

    Sorry, I’m new to java so my question can be stupid, but why StringBuilder from example works like this?

    • Avatar

      Liam Bryan says:

      November 30, 2017

      You’re using `sb.append(sb);`. Pretty sure you’re looking for `sb.append(string);` in that case.

  10. Avatar

    Yoav Vainrich says:

    October 15, 2017

    Where did the “Node.js Remote Debug” configuration go?
    I can’t find it.
    Also, a project that had it already configured, lost this configuration.

    Is there an alternative/workaround?

  11. Avatar

    goksel eryigit says:

    December 1, 2017

    Looks like “Fix eslint problems” feature is gone

  12. Avatar

    zerohope says:

    December 5, 2017

    WEB-INF is gone when I build struts2 project- –

Discover more