2017.2 Jul 18


Smart completion

Chain Completion, which was available on the second call of Smart Completion, gets even better. Now the suggestions are displayed after the first call of Smart Completion, and they’re sorted by how frequently they’re used in the project. This feature works only for Java and requires the project to be built with the IDE’s (not Gradle’s) compiler.

Smart Completion is now aware of builder classes in the project and suggests their usage where relevant.

Control flow analysis

Control flow analysis has become much smarter and now detects a wider variety of problems in the code.

For example, if Collection#isEmpty() returns true, the IDE understands that there are no elements in that collection to iterate over.

The IDE also understands that String#charAt(int index) throws an exception when called with an empty string, or when the index exceeds the value returned by the String#length() method.

The same intelligence applies to: String#isEmpty(), String#charAt(int index), List#get(int index), Set#contains(Object item), Map#containsKey(Object key), Map#containsValue(Object value), and many other methods.

The IDE also gains a better understanding of reporting nullability issues, in particular when it comes to working with Collection and Map type parameters.

Java 9 module diagrams

Embracing Java 9 and its new module system, the preview introduces Module Diagrams. Use them to see the dependencies between the selected modules. To see the diagram, invoke Diagrams | Show Diagram (Ctrl+Alt+Shift+U), and then choose Java Modules Diagram.

The diagram works for JRE modules as well.

Refactoring to Java 9

The IDE finds the code where you construct sets and pre-fill them with data, and suggests replacing it with Set#of(String…items) where possible.

The IDE finds the loops spinning on a volatile field and suggests calling Thread#onSpinWait() inside such a loop. This call may significantly improve the performance of your code.

Extracting an expression as a map operation

Now, when you call Extract Variable inside a Stream API map call, the IDE offers to extract it as a separate map() expression.

Extracting a functional variable

Embracing Java 8 in one of the earlier releases, we introduced Extract Functional Parameter. With this preview, we’re going further and introducing Extract Functional Variable.

Extracting a lambda to a method reference

IntelliJ IDEA now offers you a quick-fix that replaces a lambda expression with a method reference. This combines Extract Method and Replace Lambda with Method Reference.

Replacing multiple equals with Set.contains

When you are checking whether an expression is equal to one of several literals, the IDE now offers you to replace these checks with a Set#contains(Object key) call.

JUnit 5 M4: parameterized and repeated tests

Following the recent JUnit 5 changes, the IDE adds dedicated coding assistance for Parameterized Tests and Repeated Tests.

Reflection API

Coding assistance for Reflection has gotten better. Also, we’ve introduced similar coding assistance for Method Handlers and Variable Handlers.

IntelliJ IDEA provides code completion for method and field names as well as their signatures.

JVM debugger

Filtering arrays & collections

The debugger now allows you to filter arrays and collections in Variables, Watches, Evaluate Expression and other similar views.

Java Stream Debugger

Out of the release scope, but you may also find it interesting to know that recently we introduced a new plugin called Java Stream Debugger. This plugin provides visualization of Java Stream operations.

You can use the plugin if you’re running IntelliJ IDEA 2017.1 or newer.

Spring Boot

Run Dashboard

For Spring Boot applications, the traditional Run tool window has been replaced with Run Dashboard. This dashboard lets you manage Run configurations and see their application-specific information on the right.

Actuator endpoints

For Spring Boot applications, the Run/Debug tool window now has a tab called Endpoints. This tab shows information about the Health, Beans, and Mappings endpoints.


Progress indicator

When Gradle is downloading a wrapper distributive, the IDE now displays the progress bar in both the Console tool window and the Background Tasks popup.

Environment variables

When you run a Gradle task via a Run Configuration, you can now specify and/or override environment variables.

On macOS, the Gradle build is now consistent with the command line behavior because the IDE now respects environment variables defined on the system level.

Kotlin 1.1.3

Semantic highlighting

Now, if you enable Semantic highlighting in the Colors & Fonts settings, the IDE highlights the definitions and all occurrences of local variable, and parameter with a distinct color.

TODO highlighting

The usages of the TODO() method are now highlighted in the editor as TODOs and shown in the TODO tool window.

Parameter names

To make the code even more readable, the editor now shows hints for the parameter names in method calls where the meaning of the arguments may not be clear from the context.

Type hints

Similarly to Parameter Hints, the editor now is capable of showing inferred types for the variables, functions, and parameters. This functionality is disabled by default; you can enable it in the editor appearance settings.

Groovy 2.5.0

The update brings the support for the new features introduced with Groovy 2.5.0: @groovy.transform.builder.Builder#includeSuperProperties, @groovy.transform.AutoImplement, and @groovy.lang.Delegate for methods


Debugging in SBT Shell

Earlier this year we introduced SBT Shell to make the work with SBT projects more convenient. Now, you can easily attach a Debugger to it with just one click.

Play 2.6 support

The support for Play Framework has been updated according to its latest version.

Implicits management

The Type Annotations inspection has been improved with implicit declarations processing. Any implicit is worth being explicitly annotated. It significantly increases the performance of compilation and IDE code analysis. It reduces the risk of a type inconsistency.

Completion for implicits

Now, if you call Smart Completion for following types: akka.actor.ActorRef, scala.concurrent.Future, it also suggests implicit conversions, and adds import statements automatically.

Version control

Reverting and rewording commits

The Git Log now provides two new actions: Revert and Reword. The first one lets you revert selected commits.

The second one lets you change the commit message for any commits that have not been pushed yet.

Formatting commit messages

The settings related to the Commit dialog have been reworked and moved to a separate page called Commit Dialog.

The new settings let you customize the rules applied to commit messages: a blank line between the subject and the body, and the maximum length. Also, now the IDE offers a quick fix and the Reformat action inside Commit Message.


The Shelf tab has been reworked for better performance and ergonomics.

The Show Diff action now by default compares the shelved version to the base version instead of local (when possible). The old behaviour, which is comparing to the local version, is available via the Compare with Local action (listed in the context menu).

The raw patch content can be viewed in the Preview tab.

User interface

Find in Path

The Preview panel in Find in Path now has a Gutter (a left-hand pane like that in the editor) with line numbers, navigation icons, and local change markers.

Search results from the same lines are now merged together.

A small icon indicates when a search is in progress.

Window 10 native UI

The appearance of certain UI elements on Windows 10 has been updated to follow the system look and feel. This includes buttons, radio buttons, checkboxes, text fields, select controls, spinner and a few others.

Better HiDPI support

The IDE used to scale its UI based on the global settings of the primary display. This scale factor was applied even to non-primary monitors. Now it scales its UI based on the scale factor for the monitor the UI is shown on. This improvement has a limitation: it works only for Windows and doesn’t support fractional values.

The font settings are now automatically adjusted based on the display resolution.

JavaScript & TypeScript

Parameter hints and type info

Parameter hints make the code easier to read by showing parameter names in method and function calls. Now, you can also now see the inferred type for objects by hovering over them with the mouse and holding Ctrl.

Code arrangement

The new Arrangement code style options allow you to configure how different blocks of code such as the constructor, fields and methods are ordered in your JavaScript and TypeScript classes. Call the Rearrange Code action or use it together with Reformat Code to make the code more readable and consistent.

Import code style from .eslintrc

You can now import some of the ESLint code style rules to the IDE’s JavaScript code style settings. Reply Yes when prompted about this in the .eslintrc file – that will apply the matched rules and make the IDE formatting more consistent with your ESLint configuration.

Move symbol refactoring

With the new Move Symbol refactoring you can now safely move classes, global functions or variables across ES6 modules – all the imports and exports will be updated automatically.

CSS modules

Using CSS Modules? Now when you’ve imported a CSS Module in your JavaScript file, you will get code completion and navigation to the definition for the class names in that module.

Angular Material

Support for Angular Material improvement: you can now use code completion and navigation for the Material attributes in addition to completion, for the components that were available before.


Coding assistance in JavaScript files now respects the webpack module resolution. Now when you’re using a complex webpack configuration with aliases and multiple modules, the IDE properly resolves the paths in import statements and suggest symbols to import.

Code coverage for Mocha

Run Mocha tests with coverage and see the coverage reports created by Istanbul right in the IDE. The report shows how many files were covered with tests and the percentage of covered lines in them. From it, you can jump to the file and see what lines were and were not covered.


Unloading modules

The preview brings a new experimental feature called Unloaded Modules. This feature gives you the ability to select which modules you are going to work on in your project. Those you are not working with at the moment are marked as Unloaded. The IDE will not index or otherwise touch any files in Unloaded Modules. This helps conserve CPU and memory resources when dealing with large codebases.

To access the feature, invoke the Project tree context menu and select Load/Unload Modules.

Then, if you’re are looking for usages of a symbol, or are about to refactor something, the IDE will warn that there are unloaded modules that depend on the modules you are working with, and therefore might contain code that should have been affected by the action, but won’t be.

Excluding files by pattern

To remove irrelevant files from search results and also improve indexing performance, now it's possible to specify a set of filename patterns to be excluded from indexing.

Pausing indexing

The indexing process now can be paused, e.g. if you need your CPU power for an urgent task.

2017.1 Mar 21


Java 9

The update brings support for the upcoming Java 9 and its new module system. The IDE supports the latest versions of JDK, helps import projects, and offers coding assistance when editing module declarations.

A built-in inspection validates module declarations and provides a quick-fix to adjust the project dependencies accordingly when necessary.

learn more

Java 8

The quick-fixes introduced earlier, which help migrate for loops to Stream API calls, have been improved and now support more complicated cases. We’ve also introduced a quick-fix that can migrate Stream API calls back into for loops.

When possible, the IDE suggests replacing Map.put statements and updating a value associated with a given key with a call of Map.merge.

Also, the IDE suggests replacing certain Map operations with Map.getOrDefault.

JUnit 5 inspections

All JUnit 4 inspections are now available for JUnit 5.

Regexp syntax highlighting

Dedicated section in SettingsEditorColors & Fonts for RegExp syntax highlighting.

JVM debugger

Async stacktraces

The new feature called Capture alters the stacktrace by substituting its parts related to asynchronous code execution with the corresponding parts of the stacktrace captured from where the asynchronous code is passed.

learn more

Stepping into async code

The Smart Step Into action now also supports asynchronous code and steps into lambda expressions executed on other threads.

Drag a breakpoint to remove it

We’ve added a new option called Drag a breakpoint to the editor area to remove it (available in SettingsBuild, Execution, DeploymentDebugger, disabled by default). If you enable the option, a click on a breakpoint, instead of removing it, will enable/disable it. This option may saves you from accidentally removing a breakpoint and losing its parameters such as a condition.

Memory view in Debug

The JVM Debugger Memory View, introduced with IntelliJ IDEA 2016.3 as a separate plugin is bundled and available inside the Debug tool window.

Emulated method breakpoints

Method breakpoints are now emulated by the IDE as a combination of regular line breakpoints. As a result, we have method breakpoints that are a little slower to set but do not slow down application performance.

Version control

More display and search options in Log

Now you can choose whether you want to use regular expressions and case sensitivity when searching over commit messages.

Also, you can choose how much information about branches and tags the Log viewer displays.

Ignore imports and formatting in Diff

The Diff dialog got a new option called Ignore imports and formatting. As its name says, it ignores changes within import statements and whitespaces (at the same time it respects whitespaces within String literals)

File history: performance and branches

The File History feature for Git has become faster. Besides better performance, it now can display the revisions graph, and even has a button to include changes from branches other than the current.

Branches popup: favorites and speed search

Now you can mark any branch as a favorite, for easier access.

The new popup also provides better search

User interface

Find in Path

The Find in Path dialog, which had received a Preview tab earlier, has been reworked from the ground up and now shows instant results in the first place

Emoji in Editor

The editor now supports Unicode emoji characters (which are sometimes used in comments and String literals). On Mac OS X, emoji characters are rendered as colored images, while on Windows and Linux, emoji are rendered as monochrome characters


Spring Data

Support for Spring Data has been also updated following the changes introduced with Spring Data 2.0. The improvements include support for many new annotations and types (reactive types), new inspections, code completion, navigation, and other coding assistance features.

The Spring tool window now has a new tab called “Data” to help you quickly navigate through the repositories defined in your project.

learn more

Spring Testing

Support for Spring Testing has been updated based on the changes introduced with Spring Boot 1.4.3 and the upcoming Spring 5.0 (test runners and inspections).

Spring MVC

Support for Spring MVC has been updated with coding assistance for path attribute in JSP form tags.


The Kotlin plugin bundled with the IDE has been updated to Kotlin 1.1, which enables the use of the language in many new scenarios.

JavaScript support

JavaScript target is no longer experimental, and supports all Kotlin language features, a large part of the standard library, as well as JavaScript interoperability. This allows you to migrate the browser frontend of your applications to Kotlin, while continuing to use modern JavaScript development frameworks such as React.


As a lightweight alternative to threads, coroutines enable much more scalable application backends, supporting massive workloads on a single JVM instance. In addition to that, coroutines are a very expressive tool for implementing asynchronous behavior, which is important for building responsive user interfaces on all platforms.



Coding assistance for Akka gets several new features:

  • Find Usages is now aware of the differences between Ask and Send usage types.
  • Warnings are fired for Actor's factory method arguments that aren't consistent with defined Actor's constructors.
  • The new action helps to auto-generate factory methods for an Actor companion object at the caret.


SBT tool window now lets you to easily run SBT tasks and has a button that opens SBT Shell tool window where you can use code completion to type and run SBT commands.

You can now delegate your IDE Build process to SBT. The option is still experimental and should be manually enabled via Build, Execution, DeploymentBuild ToolsSBTUse SBT shell for build and import

Last, but not least, Run Configurations for tests now offer two new options: Use sbt (delegates the Run process to SBT) and Use UI with sbt (uses the IDE's Test Runner UI, WIP).

Project Wizard

The Project Wizard has been reworked for better user experience and now offers the SBT project as the default option. Settings dialog for SBT projects has been also simplified.

Dotty become a subtype of the Scala SDK and now can be selected with both the SBT and IDEA project templates.

Worksheet REPL mode

The Worksheet editor has been extended with the REPL mode (WIP), that simulates REPL and executes only the newly appended lines of code, which results in better performance because the unchanged code is not compiled or evaluated.



Composite Builds

Support for Composite Builds, introduced earlier, has been greatly improved. Now the IDE automatically detects “includeBuild” in Gradle settings and configures the project accordingly. No manual configuration is required

learn more

Logback and Parameter Hints

This update brings coding assistance for editing Logback appender configurations. It includes code completion, finding usages, navigation and renaming.

The Parameter Hints option, which was added for Java in IntelliJ IDEA 2016.3, is now available for Groovy as well.



We've published a plugin that adds first-class support for Vue.js. The IDE not only understands the template, script and style blocks with various lang attributes in the .vue files, but also provides completion for Vue directives and component names.

Auto import for React components

Select a component defined in your application in the completion popup – and the IDE will add an import for it automatically. Forgot to import React? IntelliJ IDEA will provide a quick-fix.

New ES6 quick-fixes

The IDE now helps you convert for..in loops on arrays to for..of statements introduced in ECMAScript 6. All you have to do is press Alt+Enter on the loop and select this conversion option. Another new intention can convert iterations with forEach to for..of.

Sorting imports by module

The Optimize imports action can now automatically sort JavaScript and TypeScript imports alphabetically by module and reorder the imported members. You can configure this behavior in the Code Style settings.

Angular language service

To help you work with Angular even more, the IDE adds support for the Angular language service, developed by the Angular team to improve code analysis and completion for Angular-TypeScript projects.

Run npm install @angular/language-service --save-dev to enable that in your project.

Improved TSLint support

Integration with TSLint adds support for TSLint-powered quick-fixes. You can also import some of the code style rules defined in tslint.json to the IDE code style settings – just reply ‘Yes’ when prompted about this in the tslint.json file.

Better testing experience

Running Mocha and Jest tests is even easier now with the new Run icon on the gutter. Click the icon next to the test or the suit name and select Run or Debug.

The test status will be displayed next to the test name for all supported test frameworks.

Completion in package.json

Adding new project dependencies to package.json became easier: the IDE now provides code completion for package names.

The IDE also suggests the latest versions of the packages.

Support for Standard code style

The Code Style settings now support JavaScript Standard Style. To use it, go to SettingsEditorCode StyleJavaScript and click Set from Predefined Style – Standard.

Module dependency diagram

To overview the application structure, you can now visualize the module dependencies that a file, group of files or folder has. Right-click on a file or directory in the Project view or in the editor, and then select DiagramsShow diagram.

New code style options

This update brings lots of new code style options for JavaScript and TypeScript. You can now configure the use of semicolons to terminate statements, trailing commas, quotes type, and wrappings for ternary operators and variable declarations with single var.

Database tools

Managing schemas

The Schemas tab comes back to the Data Sources and Drivers dialog. Now it’s a tree with the ability to choose the current schema.

We added the Pattern field where you can describe what you want to be introspected. The Ctrl+Q shortcut will give you information about the syntax.

Importing tables

The IDE now allows you to import table schema and data from one database to another (even of a different type, e.g. from MySQL to Sql Server). To import a table, simply drag it with mouse to the data source where you'd like it to copy.

The information about the progress is published on the Database tab of Event Log.

SQL resolution scopes

Now, you can map any SQL file (or entire folder) to any datasource in SettingsToolsDatabaseSQL resolution scopes. If you do that, all unqualified objects from these locations will be resolved to the selected datasource (or database, or schema).

Default search path

Before, we set the search path according to the context of the console opening. At some point we discovered it wasn’t very convenient for many of our users. Now the default search path is set for any console. You can change it in any moment or go back to the default one.



The update includes all the Android Studio changes from v2.2.1 and v2.2.2:

The updated Docker plugin now supports Docker for Mac and works via unix://.

The Windows installer now comes with a 64-bit JDK, which means that now you can give your IDE more RAM.

Better support for Dvorak and some other non-standard (e.g. German, French, Italian, etc.) keyboard layouts.

GoLand, the new Go IDE that we announced several months ago now also becomes IntelliJ IDEA Ultimate plugin, which ends JetBrains support for the existing third-party Go plugin.

You're welcome to try the new plugin and use this FAQ to see how exactly it differs from existing one.

2016.3 Nov 22

JVM debugger

Class-level watches

Now you can define watch expressions on the class level. These watches appear as extra fields of the class but are evaluated based on your expressions. An expression for class-level watches is defined in the context of the class.

Primitive type renderers

Now you can define custom Java Type Renderers for primitive types too, including arrays.

Memory view

With the help of the new JVM Debugger Memory View plugin you can explore objects in the JVM heap during a debug session.

When you’re stepping over the code, the Diff column shows you how the number of objects changes between debugger stops. A double click on a class name, opens a dialog with instances of the class. If needed, the plugin is also capable of tracking stacktraces for chosen classes.

Detecting JRE

Also, the debugger got better at detecting JREs used by the running application. Now, if the application uses a JRE different from the project JDK and you’re stepping into the JDK sources, the IDE will try to use another JDK configured in the IDE that better matches the running JRE version.

Version control

Log for Git & Mercurial

  • Search speed has improved dramatically, particularly for the Text, Author and Path filters.
  • Commit details have moved to the right, giving more space to the Log itself.
  • Commit messages in the table are now aligned and thus more readable.
  • Labels have been moved to the right side and are now displayed in a more elegant way.

Resolving conflicts

Now, the IDE is capable of resolving simple conflicts. When such a resolve is possible, the IDE shows a Resolve icon on the left side of the editor. Click the icon to have the conflict resolved by the IDE. To undo, press Ctrl+Z.

Syntax highlighting in the Diff and Merge dialogs

We've added full syntax highlighting for non-local revisions in the Diff and Merge dialogs.

To get it working, we’re building the PSI tree rather than relying on lexer tokens. As a nice side effect you get code navigation here as well.

Line markers in the Merge dialog

Also, we’ve added line markers to the Merge dialog to indicate actual changes to the base revision.

This makes it easier to understand what changes are actually going to be applied.

Undo commit

Now you can undo your last change (that you haven't yet pushed) in one click via the Log's context menu.

Restore and Delete tracked branch actions

Now, when you delete a local branch, you get a notification that lets you quickly undo it or delete the tracked remote branch too.

Sign-off commit

The Commit Changes dialog allows you to sign-off your commit. This may be a requirement for getting patches into some projects (including the Linux kernel).

Managing Git remotes

We’ve added a way to manage Git remotes: via VCSGitConfigure Remotes. Now you can add, edit and remove remotes for every repo in the project.

Note that adding a remote is also available in the Push dialog.

User interface

Parameter hints

The editor now shows parameter hints for literals and nulls used as method arguments. These hints make code much more readable.

If you find hints redundant for a certain method, you can tell the IDE not to show hints for this method. To disable hints completely, uncheck SettingsEditorGeneralAppearanceShow parameter name hints.

Semantic highlighting

Semantic highlighting, previously introduced in KDevelop and some other IDEs, is now available in IntelliJ IDEA. It extends the standard syntax highlighting with unique colors for each parameter and local variable.

To enable this feature, check SettingsEditorColors & FontsLanguage DefaultsSemantic highlighting.

Flat file icons

In this update we've reworked the file icons to achieve a flatter design. While the new icons may look unusual, hopefully they feel sharper and less noisy to you.

Later, we may introduce flat icons to other parts of the IDE as well.

Recent tests

Now you can press Shift+Ctrl+; and get a popup with recent tests. The popup shows successful test configurations and failed individual tests. Press Enter to re-run the selected test or F4 to navigate to its declaration.

Resource bundle editor

The Resource Bundle editor now shows you which properties are unused in the project.

Find in path settings

Previously, the Find in Path dialog would reset some of its settings if you called it from the Editor. This behavior didn't seem convenient so we've changed it. Now the dialog always preserves previous settings independently of where you call it from.

Fira Code font

Another font-related change, now affecting all platforms, is Fira Code which is now bundled with the IDE and allows everyone to use Font Ligatures.

SF font for macOS

macOS users will notice that the default font of the UI (SettingsAppearance & BehaviorAppearanceUI Options) has changed to San Francisco (in particular SF NS Text), now the standard for the macOS platform.


Refactoring to Java 8

Now, if you press Alt+Enter inside a non-trivial for-loop, the IDE will prompt you to replace it with a chain of stream API calls. It supports count, flatMap, map, mapToInt, collect, filter, anyMatch, and other Stream methods. learn more

Also, when appropriate, the IDE will prompt you to replace certain code with Map.computeIfAbsent, Collections.removeIf or ThreadLocal.withInitial. learn more

Reporting nullability issues

Now, if you have a method with a @NotNull, Objects.requireNonNull or Guava’s Preconditions.checkNotNull contract and the IDE notices that this contract is broken somewhere in the project, it will notify you immediately about that next to your parameter definition.

The corresponding inspection also allows you to navigate to those usages breaking your contract–so you can fix that.

Inlining local variables used only by return statements

The new inspection finds local variables used only by return statements, and provides a quick fix that inlines these variables–by replacing their assignments with return statements.

When the returned value can’t be inlined into a return statement, the quick fix attempts to move the return statement as close to the computation of the returned value as possible.

learn more

Runtime assertions for not-null-annotated code

IntelliJ IDEA’s compiler (SettingsBuild, Execution, DeploymentCompiler) has an option to generate runtime assertions for methods and parameters annotated with org.jetbrains.annotations.NotNull.

Starting now it supports non-JetBrains annotations as well, in particular JSR-305.

learn more

Some intentions became quick-fixes

Unlike intention actions, inspection quick-fixes can be applied to many files at once. We've chosen several intentions that may work better as quick-fixes and converted them: Lambda can be replaced with anonymous class and Diamond can be replaced with explicit type arguments to name a few.

Lambdas in Structure view

Now if you press Ctrl+L in the Structure view, it will show lambda expressions.

Unused declaration options

Now you can manage the Unused declaration inspection by choosing which members to report.

learn more

Meta-annotations hierarchy

The Type Hierarchy view now works for meta-annotations as well.


Loop to Lambda Conversion

The Kotlin plugin can now detect many non-trivial cases where imperative for loops can be rewritten in a more compact and idiomatic manner using standard library functions such as filter, map, flatMap, count, etc. To trigger the conversion, put the caret on the for keyword and press Alt+Enter.

New Refactorings

The Kotlin plugin now supports Extract Interface and Extract Superclass refactorings, as well as an entirely new refactoring Introduce Type Parameter, providing an easy way to change a class or function into a generic one.

Postfix Completion

IntelliJ IDEA’s postfix code completion is now supported for Kotlin, with a large array of templates.



We’ve added better support for js.Dynamic. The Scala plugin now provides code completion and quick navigation to fields and methods defined in JavaScript libraries or project files.

learn more


Another major plugin improvement is the support for scala.meta. IntelliJ IDEA supports new-style macro annotations and provides coding assistance for scala.meta quasiquotes.

learn more


The plugin now suggests actor constructor parameters in Akka’s Prop method (Ultimate only).


Last but not least, we’re working on a new “Migrators API” that will allow library authors to tell IntelliJ-based IDEs how to migrate of projects that are using different library versions. This will make it possible to automatically migrate code, replace certain APIs, and so on. The plugin uses this API itself for providing migration of code to Scala 2.12, e.g. replacing it with SAM. Available migrators can be enabled via SettingsLanguage & FrameworksScalaMigrators.


We’ve added actions that build Groovy files located in resource folders. They’re available via the main menu BuildGroovy Resources. Build Resources is incremental while Rebuild Resources builds from scratch.


Delegate IDE build/run actions

We’ve added an option that delegates the native IntelliJ IDEA actions Build, Build Artifacts (both WAR and EAR) and Run to Gradle. Select SettingsBuild, Execution, DeploymentBuild ToolsGradleRunnerDelegate IDE build/run actions to gradle.

When this option is enabled, all these actions are performed via corresponding Gradle tasks.

learn more

Composite builds

For Gradle 3.1 and higher, we've added support for Composite Builds, so you can substitute any of your project dependencies with another project.

All you have to is to attach the Gradle projects of these libraries via the Add button in the Gradle tool window (my-utils in our case), and then select Compose Build Configuration from the context menu for the original project.

learn more


The added support for Polyglot Maven allows you to write the POM file in any language, including Groovy, Scala, and even Ruby.

The Show Effective POM action works as usual and is especially useful if you want to see how Maven interprets the DSL.


Project Wizard

The layout of the Spring Initializr (Project Wizard) has been reworked to fit more items, and provide Search and additional information.

Meta annotations

We've added support for meta annotations based on @Autowired and @RequestMapping (including user-based and built-in annotations such as @GetMapping and @PostMapping).


Last but not least, we've improved the IDE's performance and responsiveness when handling large projects with numerous beans, regardless of whether they’re configured via XML descriptors or annotations.


The Grails view is back for Grails 3, as a tab inside of the Project tool window. All the Project tool window settings are now applicable to Grails, including Flatten Packages.

Items under the Plugins node (always the last in the list) navigate to the corresponding GrailsPlugin class.


In Spring Boot projects the Console now doesn’t require persistence.xml in the JPA facet. Also, the IDE now respects the naming strategies provided with Spring configuration files.

Support for queries has been updated according to the changes introduced with Hibernate 5.2.

Application servers


Loose applications now can be run from the IDE. To run a loose application, open the Deployment tab of your WebSphere Run configuration and select the loose application XML file, instead of an artifact.

TomEE 7

Support for TomEE has been updated to its major version 7.



Now, when you set JavaScript version to Flow, the IDE reports problems in files annotated with "// @flow" on the fly.

Make sure you've specified the installation path for Flow in SettingsLanguages & FrameworksJavaScriptFlow.

ECMAScript 6

Convert var to const/let

Now, the IDE reports all var declarations and help replace them with let or const declarations, depending on value semantics.

Replace require() with import

For all require() calls, the IDE now provides a quick-fix that replaces them with import statements.

Convert to class

The IDE can now convert complicated prototype chains into a hierarchy of classes.

Default exports

The Find usages and Show usages actions have been extended to support default-exported functions and classes.


Rename refactoring

When you rename a method that overrides or implements another method, the IDE now offers to rename the base method too.

If you choose to rename the current method only, the IDE makes sure to rename all methods that override the current one.

Optimizing imports

Also, we've added a new inspection that warns you when an import statement can be shortened, and provides a quick-fix to do that.


Templates coding assistance

Coding assistance within templates is now more precise and aware of available types.

Generating code

Now you can quickly generate components, directives, services, and other blueprints by pressing Alt+Ins and choosing Angular CLI from the Generate popup.


Integration with Protractor, an end-to-end testing framework for Angular apps, now lets you easily run and debug tests in the IDE and see test results in a tool window, with options to filter them and quickly jump to the test source.

React Native


Now you can run and debug React Native apps without leaving IntelliJ IDEA.

All it takes is a new React Native Run/Debug configuration. Just create one, select the target platform, and make sure that the path to the React Native CLI package is correct.


When working with React Native apps, IntelliJ IDEA will now provide code completion (and color preview) for properties inside StyleSheet.



IntelliJ IDEA now offers a plugin for PostCSS. The plugin provides code completion, formatting, navigation, inspections, rename refactoring, and more.


Stylelint, a code quality tool for stylesheets, is now integrated so that you can see errors reported by it right in the editor.


Blueprint mode

The new Blueprint mode in the Designer hides all of the visuals from views and shows only their outlines. You can choose to have it side by side with the Designer.

learn more

Constraint Layout

Constraint Layout is a new layout manager for creating large and complex layouts with a flat view hierarchy. It’s similar to Relative Layout in that all views are laid out according to relationships between sibling views and the parent layout, but it’s more flexible and easier to use.

learn more

APK analyzer

The new APK Analyzer lets you drill into your APK to help you reduce your APK size, debug 64K method limit issues, view contents of Dex files and more.

Instant run

This release adds many stability and reliability improvements to Instant Run. If you have previously disabled Instant Run, the Android team encourages you to re-enable it.


Editing multiple cells

Now you can edit several similar cells at once. Select several cells and start typing a value. If you need a cell editor (e.g. a Data Chooser), click Enter.

Submitting changes in bulk

Now changes made in the Table Editor are stored locally and submitted in bulk, via Ctrl+Enter.

Changes not yet submitted can be canceled via Ctrl+Z.

Finding usages

Now you can find usages of objects inside the source code of other objects. For instance, you can learn in which stored procedures, functions or views your table is used. As usual, press Alt+F7 on the table name or call it from the context menu.

Editing triggers

Triggers now can be edited for MySQL, PostgreSQL, SQL Server, Oracle and Sybase.

Local changes

Now when you edit the source code of any object, the IDE tracks your changes and highlights edited rows in the left editor panel. If you click on a highlighted row, a small toolbar is displayed with a Show Diff link.

Executing large scripts

If you run large script files from the context menu, you'll notice that now they are executed much faster.

Coding assistance

Now if you use JOIN USING for Postgres, the IDE offers you only the field names common for both tables.

The INSERT statement completion offers you not only the list of all fields but also the list of fields which have no default value.

If a variable or parameter is not used within its scope, you'll get a warning.

You'll also get a warning if there is a mismatching number of columns in queries used in set operators (UNION, INTERSECT and EXCEPT).

Integration with mysqldump and pg_dump utilities

We've integrated the IDE with the mysqldump and pg_dump utilities. To use the utility, choose the Dump with… option from the context menu.

Introspect schema/database

Now, when you access a schema or database not introspected by the IDE yet, it will provide a quick-fix for that.

Managing datasource driver

Now the IDE helps you manage the version of the datasource driver and update it if it's not up-to-date.

If want to use a particular version of the driver, choose it in the driver's settings. Also, you can uncheck Use provided driver and use only files added to the Additional list.


Google Cloud Tools

Google has introduced their own IDE plugin for deploying to Google App Engine. Eventually this plugin will replace the Google App Engine plugin provided by JetBrains.


On our side, we've updated the OpenShift integration with support for OpenShift V3. The updated plugin lets you create applications and manage their resources such as projects, services and pods.

your edition


For web and enterprise development


For JVM and Android development
License Commercial Open-source, Apache 2.0?
Java, Kotlin, Groovy, Scala
Android ?
Maven, Gradle, SBT
Git, SVN, Mercurial, CVS
Detecting Duplicates ?
Perforce, TFS
JavaScript, TypeScript ?
Java EE, Spring, GWT, Vaadin, Play, Grails, Other Frameworks ?
Database Tools, SQL