Java 12

IntelliJ IDEA 2018.3 comes with initial support for Java 12! Preview the Raw String Literals (JEP 326 ) in the IDE now and take advantage of loads of useful inspections and quick-fixes. For example, convert multiline string literals to raw string literals and vice versa, detect redundant leading or trailing backticks (`), and more. Learn more

Read the legal notice here

Please note that Java 12 is not released yet. You must accept the terms of the legal notice of the beta Java specification to enable support for Java 12. The implementation of an early-draft specification developed under the Java Community Process (JCP) is made available for testing and evaluation purposes only and is not compatible with any specification of the JCP.

Detecting more duplicates

IntelliJ IDEA can now quickly spot duplicates even in more complicated cases, such as if the variable names are different. The IDE will display duplicates in the diff viewer, so you can compare them side by side to one another.

Java Stream API improvements

The IDE detects situations where unnecessary sorted calls are made before the subsequent min call. A quick-fix to remove the redundant sorted call is provided as well.

Data flow enhancements

We’ve created a new data-flow-based inspection called Condition is covered by further condition. It detects situations where the first condition is unnecessary as it’s covered by the second one. The IDE provides a quick-fix to remove such redundant conditions.

Redundant usages of a suppressed inspection

IntelliJ IDEA now detects redundant usages of the @SuppressWarning annotation, or // noinspection line comment, or /** noinspection */ JavaDoc comment. When a suppressed inspection no longer addresses any warnings in the associated method body, class, or statement, the IDE will not only give you a warning, but it will also provide a quick-fix to remove such unnecessary annotations and comments.


Multiline TODO comments

IntelliJ IDEA 2018.3 now supports multiline TODO comments, now the first and all subsequent TODO comment lines are highlighted in the editor and listed in the TODO Tool Window. Simply add an indent starting from the second line of your multiline TODO comment, and the IDE will differentiate it from an ordinary comment.

Disabling code formatting for specific files and folders

We’ve made it possible to lock off certain files from formatting, imports optimization, and code rearrangement – actually from any operations where formatting is involved, explicitly or implicitly. Simply create a scope and add to it any files that must not be formatted!

New indentation status bar

IntelliJ IDEA displays the size of the indent in the current file in a new indentation status bar. If the file’s indentation doesn’t match the current settings of your project, an asterisk will be added to the indent view. You now have a choice of actions that control the current indentation in the status bar popup.

Improvements in EditorConfig support

The IDE now provides syntax highlighting and code completion for EditorConfig files. You can also use the new indentation status bar popup to easily navigate to the EditorConfig file being used.

Version Control

GitHub Pull Requests

IntelliJ IDEA comes with initial support for GitHub Pull Requests. Preview all the pull requests in your GitHub repository from the brand new GitHub Pull Requests tool window. Use the diff to preview the changes, or create a local branch from a Pull Request via the context menu then merge it as a regular branch.

“History up to Here” can show the full history

Previously, the History up to Here action only displayed the file's history up to the selected commit, but now it can show what happened to the file afterward, by switching to Show All Branches on the toolbar. This could be especially useful if the file was later deleted, as it is no easy task to find out about such occurrences.

Advanced navigation in VCS Log

You can now use the Forward and Back navigation actions while you are in the VCS Log after you navigate from the commit hashes to the commit in the VCS Log tab, or after you use the Go to hash/branch/tag action. Use the left and right arrow keys to navigate to the child or parent commit.

Ignore whitespaces

Now the IDE can ignore whitespace changes while merging. In the Merge Revisions for dialog, there is a new Ignore drop-down menu with options to hide or trim whitespace changes on merge.

Copy a file from one Git branch to another

IntelliJ IDEA 2018.3 allows you to easily copy a file from one Git branch to another via the handy new Get from Branch action which is available from the Files tab of the Compare branches dialog.

Branch name in commit dialog

The IDE displays the branch name you are committing the files to, right inside the Commit dialog. We have implemented this for Git, Mercurial, and SVN.

Preview differences in the File History tab

Diff Preview is now available in the File History tab of the Version Control tool window.

Git submodules support

IntelliJ IDEA 2018.3 now supports Git submodules! Clone or update your project, commit changes, view diff, and resolve conflicts.

Search and Replace

New Search Everywhere

IntelliJ IDEA 2018.3 introduces a new better way to navigate over the project and the IDE. Please give a warm welcome to reworked Search Everywhere! Actually, it’s much more than just Search Everywhere now as it incorporates all of the other navigation dialogs: Search Everywhere, Find Action, Go to class, Go to file, and Go to symbol. Note that all these navigation dialogs are still accessible through their own keyboard shortcuts, as before.

Search for multiline fragments in Find in Path

Now it’s possible to perform search / replace for a multiline fragment in Find in Path / Replace in Path dialogs. You no longer need to use regular expressions to perform a multiline search.

New Structural Search & Replace dialogs

IntelliJ IDEA 2018.3 delivers an updated and streamlined Structural Search & Replace dialog. Now autocompletion works in the predefined templates in the search field. You can view the search history in the drop-down menu under the search icon. Scope configuration is now easier and more flexible, too. The complicated Edit Variables form has been replaced with a filters panel, which you will find in the updated dialog.

Plugins Preferences Page

We've updated the Plugins page in Preferences (Settings) to make it easier to manage, install, uninstall, and update plugins. Now you can not only search for plugins by name but also by tags. It gets even better, as you now can also sort the results by downloads, name, rating, featured, or updates.

Run Anything

Run Anything

IntelliJ IDEA 2018.3 comes with a new centralized way to run a command in the IDE via the new Run Anything action (Double Ctrl). Use the new action to launch a run configuration, including Maven and Gradle, run a Gradle task, or run terminal commands.

Debug Anything

Simply press the Shift key to switch the Run Anything dialog to the Debug Anything mode.


The Kotlin plugin bundled with the IDE has been updated to v1.3

Kotlin 1.3 support

Just recently Kotlin had a major release for the language, tooling, and libraries. IntelliJ IDEA can help you migrate your Kotlin project to Kotlin 1.3 and perform all the required changes in obsolete code to make it compliant with the latest state of the libraries.

Enhancements in multiplatform project support

In Kotlin 1.3, the model of multiplatform projects has been completely reworked in order to improve expressiveness and flexibility, and to make sharing common code easier. IntelliJ IDEA provides a set of project examples that cover the most common use cases.

New Kotlin Inspections & Quick-fixes

Since the release of IntelliJ IDEA 2018.2, the Kotlin plugin has got over 30 new inspections, quick-fixes, and intentions that help you write a code much more effectively.

Spring & Spring Boot

Spring Boot 2.1 support

IntelliJ IDEA 2018.3 fully supports the recently released Spring Boot 2.1. Configuration values annotated with @DataSize are validated using the default @DataSizeUnit, if specified.

Spring Initializr improvements

Now, when you create a project using Spring Initializr, the IDE will suggest installing or enabling appropriate plugins to ensure that support for all selected technologies is present.

Better JPA and Spring Data support for Kotlin

Now the IDE can automatically inject JPQL into query strings, providing completion for entity names and parameters. You can write Spring Data interfaces in Kotlin, and IntelliJ IDEA will understand the entities you use. The IDE provides smart completion for method names, and quick-fixes for parameters.


High-contrast theme

We are committed to providing a great experience for all of our users. With IntelliJ IDEA 2018.3, we’re rolling out a few important accessibility improvements, such as the brand new High-contrast theme.

Better support for screen readers

We’ve improved our support for screen readers, allowing them to read line numbers, VCS annotations, the debugger, and our gutter icons.

JVM Debugger

Attaching to java processes

Attach to Java processes that were started without a debug agent. After attaching to a process, you’ll be able to view the current thread’s state and variable values, and use the memory view.

If you want to attach the debugger to your local process, you can use the handy new Attach Debugger action, which is available in the Run Tool Window

Automatically restart listening to a remote connection

Now, while you are debugging a remote process, the IDE can restart a configuration automatically. Simply enable the new Auto restart option for remote debug configurations.

Async stack traces in remote JVMs

IntelliJ IDEA 2018.3 now supports async stack traces in remote JVMs. To start using the agent remotely:

  • copy /lib/rt/debugger-agent.jar to the remote machine.
  • add -javaagent:debugger-agent.jar to the remote JVM options.

Now you can define your own Async annotations in the Async Annotations Configuration dialog.

Action to remove all breakpoints

IntelliJ IDEA 2018.3 comes with handy new actions that remove all the breakpoints in a project, or all the breakpoints in the file. You can assign your own shortcuts for these in Preferences (Settings) | Keymap | Debugger Actions.


Now, it is possible to delegate all your build and run actions to Maven. Go to Preferences (Settings) | Build, Execution, Deployment | Build Tools | Maven | Runner and select the new Delegate IDE build / run actions to maven option.


Improvements were made to the embedded terminal, so now IntelliJ IDEA 2018.3 will save the terminal tab names, current working directory, and shell history when you close the project or IntelliJ IDEA.

We’ve also redesigned the terminal tabs to look like the other tool window tabs.

Run Configuration

Macros in Java run configurations

IntelliJ IDEA now allows you to use macros in the ‘Application’ and ‘npm’ run configurations. You can enter a predefined macro in the Program arguments field.

Ability to use text files as input

If you want to use a text or log file as an input, simply select the Redirect input from option in the Run/Debug Configurations dialog, and then specify the path to the file that has your input data.

Run configuration is run as a single instance only, by default

By default, a run configuration is now run as a single instance only. However, there is the Allow running in parallel option in the Run/Debug Configuration dialog which you can enable if you ever want to run several instances of the same run configuration in parallel.

JavaScript & TypeScript

Autoimports in JavaScript

IntelliJ IDEA can now automatically add imports for symbols from the project’s dependencies, in JavaScript files. This works as long as there’s a TypeScript definition file inside the package, or the package contains sources written as ES module.

Improved Angular support

Code completion and Go to definition for variables, pipes, async pipes, and template reference variables in Angular templates are now more accurate.

Support for Node.js worker threads

You can now debug Node.js workers in IntelliJ IDEA – just make sure that you are using Node.js 10.12 or above and the --experimental-worker flag. The IDE provides code completion for the worker threads’ API.

More flexibility with ESLint and TSLint

You can override severity levels from the linter’s configuration file and see all problems from the linter as errors or warnings.

For TSLint errors, press Alt-Enter and then the right arrow key. Now you have an option to add a special TSLint disable comment for this rule.


Support for Helm resource files

The IDE now correctly resolves the Helm resource template files and provides you with our well-known editing support: code completion, rename refactoring, and, of course, inspections and quick-fixes.

Navigation in Helm resource files

The IDE lets you navigate from a value’s usage to its declaration in the chart’s values.yaml file. You can use the gutter icons to navigate between a label definition and its selector. Moreover, there are new gutter icons in values.yaml files that you can use to navigate to overridden / overriding values.

Helm template result preview

The IDE can now preview the result of the Helm template rendering in the diff. Simply choose the new Kubernetes | Helm Template action from the context menu.

Helm dependency update

A new Helm Dependency Update action is available to download the external tgz dependencies (or update the existing ones) and display them in the project tree.

Database Tools

Cassandra database

With this release, we've added support for one more NoSQL database – Cassandra.

Improvements in SQL code completion

Now code completion works for: non-aggregated fields in GROUP BY, all the columns are listed in SELECT, MERGE, and INSERT INTO table variable, named parameters of stored procedures, numeric fields in SUM() and AVG(), FILTER (WHERE) clause, and field types in SQLite.

Introduce table alias

You can now use the Introduce table alias action to create an alias directly on the table, and this alias will automatically replace usages of the table’s name.

Single connection mode

Each new console means a new connection. In IntelliJ IDEA 2018.3 though, it’s possible to use only one connection for the data source, and have all consoles then use this single connection. You can view any temporary objects in the database tree. Also, it’s possible to use the same transaction in different consoles. To turn it on, go to Data source properties | Options | Single connection mode.