What’s New in IntelliJ IDEA 2023.2

IntelliJ IDEA 2023.2 introduces AI Assistant to enhance your development with a set of AI-powered features. The upgraded IntelliJ Profiler now provides in-editor hints, making the profiling process more intuitive and informative. This release also includes GitLab integration, which helps streamline your development workflow, and comes with many other notable updates and refinements described below.

Key updates

AI Assistant

AI Assistant
Limited access
Ultimate

With this release, we introduce a major addition to IntelliJ IDEA – AI Assistant. With the current starting set of AI-powered features, AI Assistant offers integrated AI chat and can do things like automatically write documentation comments for you, suggest names, generate commit messages, and more.

AI Assistant is powered by the JetBrains AI service, which can connect you to OpenAI for now and will include other language model providers in the future. To access the assistant’s AI features, you’ll need to install the AI Assistant plugin and log in to the JetBrains AI service using your JetBrains Account. The availability of the JetBrains AI service may vary initially. For more information on AI Assistant and instructions on how to access it, refer to this blog post.

AI Assistant

In-editor performance hints
Ultimate

In IntelliJ IDEA 2023.2, we've enhanced the IntelliJ Profiler to provide more valuable and easy-to-interpret insights into your application’s performance. The new in-editor hints offer a quick way to analyze code performance line by line, helping you identify and resolve issues faster. Color-coded annotations in the editor’s gutter highlight critical methods allowing you to focus right on the performance bottlenecks. This means you no longer have to perform a thorough, time-consuming analysis with the Flame Graph and Call Tree views. Learn more in this blog post.

GitLab integration

GitLab integration

IntelliJ IDEA 2023.2 introduces integration with GitLab to streamline your development workflow. You can now work with the Merge Request functionality right from the IDE: review the list of requests, check the changes, leave comments, and navigate to relevant views. Learn more.

User experience

Text search in Search Everywhere

Text search in Search Everywhere

Search Everywhere (Double Shift) is primarily used for searching through files, classes, methods, actions, and settings. With this update, it now includes text search capabilities similar to Find in Files. Now, text search results are displayed when there are few or no other search results available for a given query. The feature is enabled by default and can be managed in Settings/Preferences | Advanced Settings | Search Everywhere.

Colored project headers in the new UI

Colored project headers in the new UI

IntelliJ IDEA 2023.2 introduces colored headers to simplify navigation between multiple open projects. You can now assign a unique color and icon to each of your projects, making them easier to distinguish in your workspace. Headers now come with predefined colors by default, but you can customize them. To set a new color for your project, first right-click on a header to access the context menu. Then select the Change Project Color option and choose your desired color from the suggested list or by browsing the color palette. If you’d like to disable this feature, simply deselect the Show Project Gradient option in the context menu.

Reworked hamburger menu in the main toolbar on Windows and Linux

We’ve refined the behavior of the hamburger menu that is located in the main toolbar in the new UI on Windows and Linux. Once you click on the menu icon, the elements now appear horizontally over the toolbar. Also, there’s now an option to turn this menu into a separate toolbar, accessible via View | Appearance | Main menu as a Separate Toolbar.

File sorting by modification time in the Project view

File sorting by modification time in the Project view

IntelliJ IDEA 2023.2 brings the long-awaited ability to arrange your files in the Project view based on their modification times. This new functionality automatically reorders the files whenever the changes in your project are saved. To enable this feature, open the kebab menu (three vertical dots) in the Project view and then select Tree Appearance | Sort by Modification Time.

Light theme with light header in the new UI

Light theme with light header in the new UI

For v2023.2, we’ve refined the user experience with the Light theme by introducing the Light with Light Header alternative, which features matching light colors for window headers, tooltips, and notification balloons.

Updated window controls on macOS

Updated window controls on macOS

If you use full screen mode in the new UI on macOS, the window controls are now displayed right in the main toolbar, not in the floating bar as before.

Removed title bar on Linux in the new UI

Removed title bar on Linux in the new UI

For the convenience of Linux users, the native header of the operating system has been removed in the new UI, resulting in a cleaner interface. By default, you will now see the IDE’s custom header, which offers a range of customization options to tailor your workspace. If you want to revert the header to its previous appearance, uncheck the Merge main menu with window title option in Settings | Appearance & Behavior | Appearance | UI Options.

Syntax highlighting in inspection descriptions

Syntax highlighting in inspection descriptions

In Settings / Preferences | Editor | Inspections, code samples now include syntax highlighting, which makes it easier to understand what triggers an inspection and decide whether you want it to be active or inactive.

Single-click navigation between project directories

Single-click navigation between project directories

In the Project view, there’s a new Open Directories with Single Click option that makes expanding and collapsing the project folders quicker and more responsive. The option is available from the drop-down menu once you click on the kebab (three vertical dots) menu.

Improved main toolbar customization

Improved main toolbar customization

We’ve expanded the customization options for the new UI’s main toolbar. You can now use a dropdown menu to quickly choose actions that you want to add to the toolbar. To do so, right-click on any widget, select Add to Main Toolbar, and explore the available options.

Suggested plugins in Settings/Preferences

Suggested plugins in Settings/Preferences

To make it easier to configure the IDE for your specific projects and extend its functionality with plugins, we have updated the UI for the Settings/Preferences | Plugins section. It now includes a set of suggested plugins that is determined automatically based on your project specifics and appears at the top of the list.

Updated UI for the Run/Debug widget in the Services tool window

Updated UI for the Run/Debug widget in the Services tool window

We’ve reworked the UI for the running and debugging actions in the Services tool window to make the look and feel of the toolbar consistent with that of the main Run/Debug widget.

Pinned run configurations in the Run widget

Pinned run configurations in the Run widget

To make managing multiple run configurations easier, we’ve implemented the option to pin preferred configurations in the Run widget. To add a run configuration to the Pinned section, open the kebab menu (three vertical dots) next to its name and select Pin. If you have multiple pinned configurations, you can easily rearrange them by dragging and dropping within the list.

Java

New inspections and other code analysis improvements

We have improved and expanded Java inspections to help you maintain high-quality code and detect potential issues more effectively. The new Incorrect ‘MessageFormat’ pattern inspection will warn you when pattern references do not match the arguments, and it will also detect incorrect usages of quotes and braces in MessageFormat patterns. Also, the IDE now reports calls with explicit ChronoField or ChronoUnit arguments and suggests replacing them with calls of more specific methods, thus simplifying the code. Learn more about the new inspections and other code analysis improvements in IntelliJ IDEA 2023.2 in this blog post.

Сode highlighting and navigation for format strings

Сode highlighting and navigation for format strings

Now, once you place the caret on a format specifier, the IDE will highlight the corresponding argument and other specifiers that point to it. Also, you can now use Go To Declaration (Ctrl+B) to jump to the associated code location for a specific format string placeholder.

Improved support for the @snippet tag in Javadoc comments

IntelliJ IDEA now features improved @snippet tag functionality in Javadoc comments. It allows Markup comments within the @snippet tag and renders them properly in the documentation. Code regions are now supported, meaning you can specify a portion of code that you want to refer to in a Javadoc comment. In addition, the IDE now supports the inclusion of external snippets within the @snippet tag, allowing you to reference code snippets stored in separate files or sources and include them in Javadoc documentation.

Expanded refactoring options for multiple selected members

We’ve added new ways to apply certain refactorings to several members at once. You can now invoke Extract Delegate, Extract Interface, Extract Superclass, Pull Members Up, and Push Members Down on multiple members simultaneously by selecting them right in the Project or Structure tool window. In addition, IntelliJ IDEA now supports multi-caret selection for an extended range of refactorings, including Encapsulate Fields, Move Static Members, Extract Delegate, Extract Interface, and Extract Superclass. To utilize this feature, place a caret in each member you want to apply the refactoring to, and the IDE will automatically preselect and check these members in the refactoring dialog.

Improved navigation for stack trace analysis

Improved navigation for stack trace analysis

To facilitate stack trace analysis and make resolving bugs quicker, IntelliJ IDEA can now accurately guess the location of a method in the report even when line numbers are not available or have diverged.

Enhanced taint analysis for dynamic SQL queries

Enhanced taint analysis for dynamic SQL queries
Ultimate

IntelliJ IDEA can now better analyze concatenations and interpolations of SQL in Java and Kotlin, detecting potentially unsafe queries and thereby protecting the code from possible SQL injection vulnerabilities.

Scala

Better Scala 3 support

IntelliJ IDEA 2023.2 brings enhanced Scala 3 support, with a focus on providing a streamlined development experience. Notable improvements include fixes for Scala 3 enum highlighting, navigation to enum definitions, and the correct resolution of enum cases in various contexts. The TASTy decompiler has been significantly enhanced, ensuring accurate decompilation of popular Scala libraries, such as Akka, Cats, Play, ZIO, and others. Additionally, the integration of scala-expression-compiler into the debugger provides a better debugging experience for Scala developers. Other improvements include enhanced completion hints for Scala 3’s Universal Apply Methods, in-editor support for IArray, and improved support for the “fewer braces” syntax.

Better sbt support

Better sbt support

This release comes with many improvements to IntelliJ IDEA’s sbt support. Environment variables set for sbt are persisted and handled correctly after the project is reopened. The settings page File | Settings | Build, Execution, Deployment | Build Tools | sbt was redesigned for easier use, and a new Environment variables field was added so that you can now pass custom environment variables to the sbt-shell process.

ScalaDoc rendering

ScalaDoc rendering

In this release, ScalaDoc’s Quick Documentation aligns more closely with Javadoc's. Annotations, keywords, and literals in displayed declarations are now highlighted based on the selected theme. The list of extended traits and classes is split into multiple lines if it exceeds the available space. Additionally, Scala 3 keywords are now supported in the documentation.

Fixed type inference errors

Fixed type inference errors

The new release comes with many fixes to invalid type inference in some complex or simply rare cases, such as when types have complicated bounds, when a sealed trait hierarchy might be unclear, or in complex pattern matching.

Zinc as the default compiler

In light of Zinc’s recent performance improvements, we’ve made it the default incremental compiler in v2023.2. This ensures comprehensive support for incremental compilation of new Scala 3 features, including inline methods.

Improved management of sources and target directories

Sub-folders of the target folder are no longer included automatically as sources unless they are marked as managed. This speeds up searching in projects that generate source code. Also, the IDE now provides better support for sbt-projectmatrix.

Profiler

Profiling features available from the Run tool window

Profiling features available from the Run tool window
Ultimate

In IntelliJ IDEA 2023.2 you can conveniently access the IntelliJ Profiler’s functionality right from the Run tool window. The new buttons allow you to invoke the Attach IntelliJ Profiler and Capture Memory Snapshot actions in a click, without having to open the Profiler tool window or start the application from scratch.

Default wall-clock profiling mode

Default wall-clock profiling mode
Ultimate

We’ve enhanced the profiling experience in IntelliJ IDEA 2023.2 by making wall-clock profiling mode the default option. This profiling method considers the total time spent in a method, including waiting time. With milliseconds as the measurement unit, it takes center stage as the more powerful and intuitive option.

Run / Debug

Reactor Mono and Flux values evaluation
Ultimate

When debugging your reactive application, you can now easily evaluate values of watches and local variables for Mono and Flux types. The IDE now detects them during debugging sessions and provides a corresponding get or collectList link in the Variables view, which you can click to instantly compute reactive stream items. By default, the debugger fetches the first 100 items of Flux. You can configure this number in File | Settings | Languages & Frameworks | Reactive Streams.

Сontinuous testing for Gradle, Maven, and JPS projects

Сontinuous testing for Gradle, Maven, and JPS projects

We have expanded the capabilities of the auto-testing functionality, making it fully compatible with the Maven, Gradle, and JPS build systems. We’ve also made it easier to activate continuous testing mode. To enable it, use the new Rerun Automatically button located in the Run/Debug tool window. Whenever your changes are saved, the tests will run automatically, providing immediate feedback on your code updates.

Upgraded Scala inspections

Inline breakpoints for return statements

IntelliJ IDEA now offers improved support for setting breakpoints directly at the return statement, similar to how it was already being done with lambda expressions. This improvement offers developers improved debugging precision and deeper code analysis, providing valuable insights into code behavior and return values. To set an inline breakpoint, simply right-click on the gutter next to the statement and select the return option.

Version control systems

Option to commit specific lines of code

Option to commit specific lines of code

IntelliJ IDEA 2023.2 introduces a highly anticipated feature to selectively commit specific parts of code chunks. To perform a partial commit, select the lines within a chunk and call Include these lines into commit from the context menu. The chunk will be divided into individual lines, with the selected ones highlighted. You can add or exclude lines from the selection using checkboxes or the context menu.

Performance

New tool for easily generating shared indexes

IntelliJ IDEA 2023.2 features a new command line tool for quickly building and uploading shared indexes. It is designed to streamline teamwork and eliminate time wasted on locally indexing large projects. The new tool simplifies the process of generating shared indexes for your team, requiring just a few clicks instead of multiple scripts and services. Learn more.

Frameworks and technologies

Ability to run and debug Tomcat on WSL
Ultimate

As of IntelliJ IDEA 2023.2, you can run and debug applications deployed to Tomcat on the Windows Subsystem for Linux (WSL). To work with Tomcat-based applications on WSL, you’ll need to have the JAVA_HOME environment variable declared in either the /etc/environment or the ~/.bashrc file.

gRPC requests using TLS in the HTTP Client

gRPC requests using TLS in the HTTP Client
Ultimate

You can now send gRPC requests over Transport Layer Security (TLS) in the HTTP Client. TLS provides encryption and authentication, ensuring the confidentiality and integrity of your data transmission. Both https:// and grpcs:// schemas are supported in the request syntax.

Improvements for Swagger Codegen
Ultimate

The IDE now provides a better user experience when setting up Swagger Codegen configurations. We’ve reworked the Edit Swagger Codegen Configuration dialog to make it easier for you to tailor run configurations to your requirements. Additionally, you can now access Swagger Codegen run configurations right from the gutter without having to specify any additional settings.

Support for Swagger and OpenAPI schemas in the HTTP Client
Ultimate

The HTTP Client is now capable of understanding Swagger and OpenAPI specifications and providing corresponding code completion options for JSON request bodies.

Redoc UI previews for OpenAPI and Swagger files

Redoc UI previews for OpenAPI and Swagger files
Ultimate

IntelliJ IDEA now supports Redoc UI previews for OpenAPI and Swagger specification files, including YAML and JSON files, allowing you to switch between the Redoc and Swagger UIs within the IDE. With the Redocly integration, you can access the Try it console from within IntelliJ IDEA and use it to set parameters and send requests to your API.

JSON body completion in JavaScript

JSON body completion in JavaScript
Ultimate

The IDE now provides completion for JSON object keys in JavaScript code, such as in code that uses fetch() calls or references the Axios library. Spring MVC server endpoints are currently supported, with more server frameworks coming in the future.

Support for JavaScript imports in the HTTP Client

Support for JavaScript imports in the HTTP Client
Ultimate

With IntelliJ IDEA 2023.2, it is now possible to share common JavaScript code for HTTP Client request handlers via imported modules.

PDF and HTML previews for responses in the HTTP Client

PDF and HTML previews for responses in the HTTP Client
Ultimate

IntelliJ IDEA is now able to display previews of PDF and HTML files right in the request results in the HTTP Client.

Support for GraphQL and WebSocket in the HTTP Client CLI
Ultimate

You can now use the HTTP Client CLI in IntelliJ IDEA to interact with GraphQL APIs and establish WebSocket connections with services, for example for tests or automation scripts.

Auto-completion for Spring Boot configuration keys in VM options

Auto-completion for Spring Boot configuration keys in VM options
Ultimate

While setting up a new Spring Boot run configuration, the VM options field provides auto-completion options for keys appearing after the -D flag.

Spring configuration beans no longer require the annotation processor

Spring configuration beans no longer require the annotation processor
Ultimate

We have streamlined the user experience when working with custom configuration beans in Spring within IntelliJ IDEA. The IDE now provides code completion and validation in properties and YAML configuration files, without you needing to set up the Spring Boot Configuration Annotation Processor.

Support for Spring AOP in Kotlin

Support for Spring AOP in Kotlin
Ultimate

We’ve extended IntelliJ IDEA’s support for utilizing AspectJ in Spring applications. The IDE now provides analysis and completion for Kotlin code, just as it already did for Java code.

Inspection for the “Norway problem” in YAML files

New inspection for detecting mismatching value types in YAML files
Ultimate

In IntelliJ IDEA 2023.2, we’ve introduced a new inspection to eliminate the so-called “Norway problem” and prevent the unintended misinterpretation of Boolean values in YAML files. When a list primarily consists of strings but contains a Boolean-like literal, IntelliJ IDEA will highlight this literal, indicating a potential inconsistency, and suggest adding quotes to it. If the list is mostly composed of Boolean-like literals (such as true, false, off, on, yes, or no), any literal that deviates from this pattern is highlighted as a possible error, although no specific quick-fixes are suggested in this scenario.

Support for editing AsyncAPI files

Support for editing AsyncAPI files
Ultimate

Working with the AsyncAPI specification format in IntelliJ IDEA is now much easier. The IDE supports schema validation functionality and provides code completion for references, the Endpoints view, and the Editor Preview pane.

Docker

Preview of files inside Docker image layers

Preview of files inside Docker image layers

It is now easy to access and preview the contents of a Docker image layer in the Services tool window. Select the image from the list, select Show layers, and click Analyze image for more information. This opens a list of the files stored in the layer, from which you can easily open the selected file in the editor by right-clicking on the file and clicking Open File (or Download File for binaries).

Set Docker container to run as a Before Launch task for run configurations

Set Docker container to run as a Before Launch task for run configurations

It is now possible to set a Docker run configuration to run before another configuration by designating it as a Before Launch task. The IDE will wait for the container that is currently running to become healthy, and then it will launch the next run configuration. To put a Docker run configuration in a queue, first create it and then add it to the relevant container via Modify options | Add before launch task | Run configuration.

Kubernetes

Support for multiple kubeconfig files within a single project

Support for multiple kubeconfig files within a single project
Ultimate

We have introduced a new feature that allows you to set up multiple kubeconfig files within a single project. This simplifies the experience of handling multiple clusters or working with environments on different clusters in the same project. To set the files up, go to File | Settings | Build, Execution, Deployment | Kubernetes.

Ability to view deployment logs

Ability to view deployment logs
Ultimate

You can now view logs for deployments in Kubernetes clusters in the Services tool window. Right-click on Deployment in the tree and then select Follow Log or Download Log from the context menu.

Web development

Improved error formatting in JavaScript and TypeScript

Improved error formatting in JavaScript and TypeScript
Ultimate

In IntelliJ IDEA 2023.2, we’ve been working on improving how we present type errors in JavaScript and TypeScript. Your errors and warnings will now be formatted in a more readable way, making it easier to spot problems in your code. This works for all TypeScript errors, some of the most common JavaScript errors, and even localized errors.

CSS nesting support

CSS nesting support
Ultimate

IntelliJ IDEA 2023.2 supports CSS nesting. We’ve implemented syntax support and an inspection that alerts you if the nested selector starts with an identifier or functional notation.

Vue Language Server support

Vue Language Server support
Ultimate

Support for Vue Language Server (VLS), a.k.a. Volar, provides more accurate error detection and better type information in the quick navigation and documentation popups. By default, VLS will be used for TypeScript v5.0 and higher, and the wrapper over the TypeScript service will be used for earlier TypeScript versions. You can set the Vue service to use VLS integration on all TypeScript versions under Settings | Languages & Frameworks | TypeScript | Vue.

New live templates for React hooks

New live templates for React hooks
Ultimate

We’ve added a new set of live templates for React hooks, available under Settings | Editor | Live Templates | React hooks. To use a live template, type its abbreviation in the editor and press Tab to expand it.

Сode quality workflow

Bundled Qodana code quality platform

Bundled Qodana code quality platform

IntelliJ IDEA 2023.2 simplifies configuring static analysis tools by fully integrating JetBrains Qodana – our smart static analysis engine designed to fit any CI/CD pipeline. This integration brings you two important benefits. First, easy configuration allows you to trigger analysis with a few clicks, view project-wide problems, and set up quality gates in your preferred CI/CD system. Second, you can now see the server-side analysis results without leaving your IDE, right out of the box. Learn more about Qodana and its latest release in this blog post.

Database tools

Support for Redis Cluster

Support for Redis Cluster
Ultimate

You can now connect to Redis Cluster and have the same feature set as with standalone Redis. When connecting to a cluster, jdbc:redis:cluster: must be entered before the desired URL. Choose the appropriate connection type to achieve this. If SSH tunneling is required for the connection to the cluster, then the hosts and ports for all nodes in the cluster should be indicated in the URL.

New UI for the schema migration dialog

New UI for the schema migration dialog
Ultimate

For v2023.2, we’ve reworked the schema migration functionality. The main difference is that the same object is now placed on the same line in both parts of the dialog, making it easier to understand which objects are going to be added, removed, or changed in the target schema.

Time zone setting for the data editor

Time zone setting for the data editor
Ultimate

The Data Editor and Viewer settings page has a new Time zone field for setting the time zone in which the datetime value should be displayed.

Support for external databases and datashares in Redshift

Support for external databases and datashares in Redshift
Ultimate

Shared databases and their contents are now introspected. The datashares that these databases are created on are also introspected.

Build tools

Support for Maven 4.0.0-alpha

IntelliJ IDEA is now fully compatible with Maven 4.0.0-alpha, the latest version of Maven.

Other

  • With this release, we’ve introduced an LSP API for plugin developers who want to use a specific LSP server for coding assistance in the IDE. If you’ve made your own programming language or framework, you can get it supported in the IDE by creating an LSP server and a plugin. Please note that this feature is available only in the paid version of the IDE. Learn more.
  • We have decomposed the Big Data Tools plugin, allowing you to use its parts separately. This means six new plugins are available for IntelliJ IDEA: Kafka, Spark, Flink, Remote File Systems, Big Data File Viewer, and Zeppelin. If you need all six, installing the umbrella Big Data Tools plugin is still possible and a convenient way to get them all in one click.
  • IntelliJ IDEA's bundled Android plugin now provides the features of Android Studio Giraffe Beta 2, including support for Android Gradle Plugin (AGP) 8.0.0. Please note that this support doesn't include the features that require signing in to a Firebase account.
  • Starting from v2023.2, the default value of the maximum heap size (-Xmx) has been changed to 2 GB.