What’s New in IntelliJ IDEA 2023.1

IntelliJ IDEA 2023.1 includes a host of improvements for the new UI, which has been overhauled based on the valuable feedback we’ve received from users. We've also implemented performance enhancements resulting in faster Maven import and IDE features becoming available earlier when opening projects. The new version provides a streamlined commit process thanks to background commit checks. IntelliJ IDEA Ultimate now supports navigation for Spring Security matchers and request mappings. This release contains a range of other notable upgrades and refinements, described in detail below.

Key updates

New UI enhancements
Beta

Visit this page to learn more about the new UI.

In response to the feedback we’ve received about the IDE’s new UI, we’ve implemented a number of updates addressing the most popular requests. We’ve introduced Compact Mode which provides a more consolidated look and feel of the IDE thanks to scaled-down spacings and elements. The new UI now offers an option to vertically split the tool window area and conveniently arrange the windows, just like in the old UI. The Run widget in the main window header has been redesigned so that its appearance is unobtrusive and easier on the eyes. Learn more about the new UI enhancements introduced in this release, and give it a try if you haven't already!

Earlier availability of IDE features on project opening

Earlier availability of IDE features on project opening

We’ve improved the IDE startup experience by performing the Scanning files to index process in smart mode. Doing so makes the IDE’s full functionality available much earlier in the startup process. When opening a project, IntelliJ IDEA 2023.1 uses existing caches from your previous session with the project and simultaneously looks for files to index. If no changes are found in the scan, the IDE will be ready, eliminating the delays that were previously caused by indexing on startup.

Faster import of Maven projects

Faster import of Maven projects

We’ve notably improved the IDE’s performance in importing Maven projects by optimizing dependency resolution as well as reworking the processes behind importing and configuring facets.

Background commit checks

Background commit checks

We’ve reworked the behavior of commit checks for Git and Mercurial to speed up the overall commit process. Checks are now performed in the background after you commit but before you push.

Navigation to Spring Security matchers and request mappings

Navigation to Spring Security matchers and request mappings
Ultimate

To simplify seeing applied security rules, IntelliJ IDEA Ultimate 2023.1 provides easy navigation to security matchers from Spring controllers. The navigation works both from security matchers to controllers and vice versa.

User experience

Full IDE zoom

In v2023.1 it’s possible to zoom into and out of the IDE entirely, increasing or decreasing the size of all UI elements at once. From the main menu, select View | Appearance and adjust the IDE’s scaling. Additionally, you can assign custom shortcuts for calling these actions in Settings/Preferences | Keymap | Main Menu | View | Appearance.

Option to save multiple tool window layouts

Option to save multiple tool window layouts

In IntelliJ IDEA 2023.1, you can save and manage several tool window layouts and switch between them when needed. To save a new layout, arrange the tool windows as desired and go to Window | Layouts | Save Current Layout as New. If you further adjust the arrangement, you can either update the current setup using the Save Changes in Current Layout option or save these changes as a separate custom layout. To activate a saved layout, find it in the list in Window | Layouts, hover on its name, and then click Apply.

New Remember size for each tool window setting

In IntelliJ IDEA 2023.1, we’ve introduced a new layout option that allows you to unify the width of the side tool windows or retain the ability to freely adjust their sizes as you customize your layout. The new Remember size for each tool window checkbox is available in Settings/Preferences | Appearance & Behavior | Tool Windows. Learn about how this setting works for the new and the old UI in this blog post.

Onboarding tips in a sample project

For those who are new to IntelliJ IDEA and coding, we’ve introduced an option to open a new project containing sample code with onboarding tips. In the New Project wizard, check Generate code with onboarding tips to get a basic sandbox project with tips demonstrating some of the IDE’s essential features. By following this small guide, users can try out the Search Everywhere functionality, apply a quick-fix, and run and debug the code, making it easier to familiarize themselves with the IDE.

Setting to configure Actions on Save for new projects

Setting to configure Actions on Save for new projects

IntelliJ IDEA 2023.1 adds an option to predefine the behavior of Actions on Save for new projects. For this, go to File | New Projects Setup | Preferences For New Projects | Tools | Actions on Save and select which actions you want to be triggered when saving changes in your future projects.

ML-powered search for classes in Search Everywhere enabled by default

ML-powered search for classes in Search Everywhere enabled by default

To provide you with more relevant and accurate search results, we continue our efforts to integrate machine-learning ranking into the Search Everywhere (Double Shift) functionality. The sorting algorithm in the Classes tab is now also powered by machine learning by default, along with the results in the Actions and Files tabs.

New suggestion to reconfigure Microsoft Defender settings for better performance

New suggestion to reconfigure Microsoft Defender settings for better performance

In IntelliJ IDEA 2023.1, there’s a new notification that is triggered when Microsoft Defender with Real-Time Protection is running. Given that these antivirus checks can significantly decrease the IDE’s speed, IntelliJ IDEA suggests adding certain folders to Defender’s list of exclusions. The notification provides options to either reconfigure these settings automatically or first check Defender’s configuration instructions and do it manually.

Editor

Option to specify the placement of pasted content

Option to specify the placement of pasted content

In v2023.1, we’ve fine-tuned the user experience when pasting a line that was copied or cut without selection. There’s now a special setting that allows you to control the placement of the pasted content. In Settings/Preferences | Advanced Settings, find the Editor section and select the desired behavior for the Paste action from the drop-down list.

Option to show whitespaces only in selected code

IntelliJ IDEA 2023.1 features a new Selection checkbox in Settings/Preferences | Editor | General | Appearance | Show Whitespaces that allows you to configure this setting so that the IDE shows whitespaces as small dots only when you select code.

Custom regexp-based search and replace inspections

With IntelliJ IDEA 2023.1, you can use regular expressions to create your own search and replace inspections. These inspections can be especially useful for highlighting style-based or formatting-based problems. Learn more in this blog post.

New intention action for reformatting tables in Markdown files

New intention action for reformatting tables in Markdown files

A new intention action allows you to correct the formatting of tables in Markdown files. You can access the quick-fix via the Context actions shortcut (Alt+Enter) or by clicking the yellow bulb icon and selecting Reformat table from the list that appears.

Fill Paragraph for Markdown files

Fill Paragraph for Markdown files

The Fill Paragraph editor action is now supported for Markdown files, allowing you to break long texts into several lines of even length. To do this, set the caret inside the paragraph you want to edit and call the action from the Edit menu, or search for the Fill Paragraph command using Find Action (Ctrl+Shift+A).

New Smart Keys settings page for Markdown

New Smart Keys settings page for Markdown

We’ve added a dedicated page for configuring and editing your Markdown preferences in Settings/Preferences | Editor | General | Smart Keys. This page should make managing your preferences easier, as it provides separate checkboxes for various editor features, replacing the single checkbox previously stored in Settings/Preferences | Languages & Frameworks.

No spell checks for hashes and special values

No spell checks for hashes and special values

We’ve updated the Typo inspection so that it no longer checks the spelling of hashes and special values and doesn’t report them as misspelled. This update covers the following values:

  • Md5, Sha1, and Sha256 hex values.
  • Sha384 and Sha512 base64-encoded integrity values with the shaNNN- prefix.
  • JWT tokens.

Java

New Java inspections

To help keep your code clean and error-free, we’ve upgraded some existing Java inspections and added new ones. The Malformed format string inspection now reports illegal time conversions that don’t comply with common Java syntax. The Redundant String operation inspection is now capable of detecting redundant StringBuilder.toString() calls and providing a quick-fix to replace them with contentEquals() so that you don’t create an intermediate String object. It also reports unnecessary arguments in String constructor calls and suggests a quick-fix that removes them. Learn more about other code inspection improvements in IntelliJ IDEA 2023.1 in this blog post.

Java 20 support

Java 20 support

Continuing to reduce the cognitive load for Java developers, IntelliJ IDEA 2023.1 supports the latest updates added in Java 20, including the changes to the language features Pattern Matching for switch and Record Patterns. For details, check out this blog post.

Improved Extract Method refactoring

Improved Extract Method refactoring

We’ve upgraded the Extract Method refactoring by introducing the option to apply it even when the selected code fragment features several variables that need to be returned. In these cases, the IDE first suggests wrapping these variables into a new record or bean class and then performing the method extraction.

Auto-completion in the VM Options field

Auto-completion in the VM Options field

We’ve integrated auto-completion functionality into the VM Options field of the Run/Debug configuration popup. Now, when you start typing the name of a flag, the IDE suggests a list of available command line options. This works for -XX: and -X options, as well as for some standard options that are not configured by IntelliJ IDEA automatically, like -ea, but not for -cp or –release.

Scala

Improved support for braceless Scala syntax

Improved support for braceless Scala syntax

IntelliJ IDEA can now desugar braceless Scala code properly, and it handles refactorings where the “fewer braces” feature is used. It also supports braceless syntax in worksheets and correctly interprets indentation when you move extensions methods up and down in your code.

Better support for sbt projects

Better support for sbt projects

In Gradle, when you have an empty module and want to create the root directory for the source code, you can use the New Directory dialog, which contains some helpful suggestions. With v2023.1, this dialog is now available for sbt projects, as well. You can also specify the sbt launcher’s parameters in Settings/Preferences | Build, Execution, Deployment | Build Tools | sbt, and the Find Usages (Alt+F7) action now searches for symbols in sbt files.

Upgraded Scala inspections

Upgraded Scala inspections

The Unused declaration inspection has received a number of fixes and improvements. IntelliJ IDEA can now detect symbol usage in your project’s XML files. The inspection also distinguishes between references to terms and references to types, not tagging the one as in use if it is actually the other that is. The Can be private inspection was updated, as well. For example, you will no longer see highlighting for top-level definitions in worksheets and local classes. For recursive calls, you will now see a gutter icon to the left of the line with the call.

Code editing improvements for Scala 3

Code editing improvements for Scala 3

We’ve improved the performance of Scala 3 highlighting when many implicit parameters are imported and are needed to parse the code, for example, when the Cats library is being used. IntelliJ IDEA 2023.1 also features many syntax support improvements, such as the proper automatic generation of overriding methods with using clauses.

Streamlined import management

If you use compiler-based highlighting, until now all imports have been marked as used. Scala 3.3, however, introduced a new compiler option, -Wunused:imports. The IDE can now identify unused imports if your project uses this option. We’ve also fixed the auto-import action for Enums.

Improvements for Scala 3 and Scala 2 decompilers

IntelliJ IDEA 2023.1 brings numerous fixes and improvements to the Scala 3 and Scala 2 decompilers. The output of decompiling Scala 2 and Scala 3 bytecode has been unified and is now easier to read.

Profiler

Improved UI for the Flame Graph tab

Improved UI for the Flame Graph tab
Ultimate

We’ve updated the Flame Graph tab by introducing color-coded highlighting for calls. Methods belonging to the currently opened project are now highlighted in yellow. This way, you can easily distinguish the code that you can modify to resolve a given performance problem. We’ve also reworked the overall color scheme of the Flame Graph tab to make it more eye-friendly.

Version control systems

VCS status color hints in the Structure tool window

VCS status color hints in the Structure tool window

To make tracking changes to files more convenient, we’ve added color hints to the Structure tool window. The names of modified objects will now become blue, and the names of the newly added objects will appear in the tool window highlighted in green.

Improved code review workflow for GitHub

Improved code review workflow for GitHub

To simplify the process of reviewing code inside the IDE, we’ve reworked the Pull Request tool window. It now features a dedicated tab for each pull request you open. The tab instantly displays the list of changed files, but it now provides less information than before, allowing you to better focus on the current task. There is now also a dedicated button to easily execute the action that’s considered the most relevant given the pull request’s current state.

Improved Branches popup

Improved Branches popup

We’ve improved the usability of the Branches popup. For instance, navigating between branches is now easier, as they are grouped and stored in expandable lists.

Auto-completion in the Create New Branch popup

Auto-completion in the Create New Branch popup

IntelliJ IDEA 2023.1 provides auto-completion in the Create New Branch popup. Once you start typing a name for your new branch, the IDE will suggest relevant prefixes based on the names of existing local branches.

Build tools

Option to specify the Gradle version on project creation

Option to specify the Gradle version on project creation

When configuring a new Gradle project, it is now possible to select the required wrapper version right in the New Project wizard. Expand the Advanced Settings section, uncheck Auto-select, and specify the preferred option. You can have the IDE remember your choice by enabling Use these settings for future projects below the Gradle version combobox.

Java SDK detected from the Gradle toolchain

Java SDK detected from the Gradle toolchain

When importing a project, IntelliJ IDEA 2023.1 can now detect the Gradle toolchain configuration and set up the matching Java SDK in the module’s settings.

Run / Debug

Option to assign a custom shortcut to run the current file with coverage

In IntelliJ IDEA 2023.1, it is possible to create a shortcut to launch the Run with coverage action for the file you currently have open, even if the run configuration hasn’t been created yet. To assign such a shortcut, go to Settings/Preferences | Keymap, look for the Run with Coverage context configuration option and then add a new key combination for it.

Option to filter classes in the Coverage view

Option to filter classes in the Coverage view

In IntelliJ IDEA 2023.1, you can filter classes in the Coverage view to focus on recently updated classes and methods that require special attention when testing. By default, you’ll see a list of classes with uncommitted changes. The second filtering option allows you to hide classes that are fully covered.

Frameworks and technologies

Spring Security 6 support

Spring Security 6 support
Ultimate

IntelliJ IDEA Ultimate 2023.1 provides updated support for navigation to URL mappings and security roles for APIs introduced in Spring Security 6.

Delegation of building and running to Gradle in the Spring run configuration
Ultimate

In the Spring run configuration, Gradle is now the default option for running and building projects. The IDE now uses the main setting to build and run the project using Gradle as defined in Settings/Preferences | Build, Execution, Deployment | Build Tools | Gradle.

Spring Security 6 support

Option to share Spring and JPA facet settings via VCS
Ultimate

With IntelliJ IDEA Ultimate 2023.1 you can change and share Spring and JPA settings via custom facets in File | Project Structure | Modules. For instance, to share a selected data source for JPA within your team, you can now create a JPA facet and commit its settings to the version control system by adding a module file with the *.iml extension.

Ability to run MongoDB queries in the Database console from Spring and Micronaut Data repositories

Ability to run MongoDB queries in the Database console from Spring and Micronaut Data repositories
Ultimate

IntelliJ IDEA Ultimate 2023.1 makes it possible to run MongoDB queries in the Database console from Spring and Micronaut Data repositories. To do this, use the new Run query in console intention action in the query string. The IDE will generate the appropriate JavaScript calls, including additional request parameters such as sort.

Project Reactor: Improved inspections for reactive code

Project Reactor: Improved inspections for reactive code
Ultimate

IntelliJ IDEA Ultimate 2023.1 provides a wider array of inspections for reactive code. For example, the IDE now reports usages of transformation operators with the Mono<Void> type described in the Reactor 3 Reference Guide.

Apache Dubbo support
Ultimate

We’ve implemented a new dedicated plugin that integrates Apache Dubbo, providing the framework’s functionality as part of IntelliJ IDEA’s support for Spring. You can download this plugin from JetBrains Marketplace or install it right in the IDE via Settings/Preferences | Plugins.

Recognition of Swagger annotations for OpenAPI generation

Recognition of Swagger annotations for OpenAPI generation
Ultimate

If you define additional metadata for APIs using Swagger 2.X annotations in Spring controllers, IntelliJ IDEA Ultimate now includes these annotations when generating OpenAPI files from the URL inlay popup dialog or from the Endpoints tool window.

Option to edit parts of OpenAPI specifications split over several files

Option to edit parts of OpenAPI specifications split over several files
Ultimate

It is now possible to edit parts of bigger OpenAPI specifications in separate files while easily navigating between them. In addition, the IDE provides code completion and highlighting for these files in the same way it does for the main specification file.

Option to run GRPC requests from the Endpoints tool window

Option to run GRPC requests from the Endpoints tool window
Ultimate

With IntelliJ IDEA Ultimate 2023.1, it is possible to run GRPC requests from proto files that contain imports from .jar archives. We’ve also improved code completion for request bodies, like for the OneOf and Map<K,V> types. Furthermore, we’ve added the HTTP Client tab for Protobuf endpoints in the Endpoints tool window.

Improved editing support for application.yaml configuration files in Ktor

Improved editing support for application.yaml configuration files in Ktor
Ultimate

The IDE now provides all of the editing features necessary to work with application.yaml configuration files in Ktor, including code completion, highlighting, and validation.

Docker

Merged logs from all Docker Compose containers

Merged logs from all Docker Compose containers

The Dashboard tab of the Docker Compose node now pulls together logs from every Docker Compose container and displays them all in one place, updated in real time.

Support for Azure Container Registry

Support for Azure Container Registry

You can now easily connect to Azure Container Registry. Go to Settings/Preferences | Build, Execution, Deployment | Docker | Docker Registry and set it up by selecting the Docker V2 option in the Registry input field.

New setting to apply the :z mount option to bind volumes on SELinux

New setting to apply the :z mount option to bind volumes on SELinux

You now have the ability to add :z configuration flags to Docker bind mounts, allowing you to connect volumes to Docker containers on SELinux workstations. To enable this functionality, go to Settings/Preferences | Advanced Settings | Docker.

Docker container health statuses in the Services tool window

Docker container health statuses in the Services tool window

IntelliJ IDEA 2023.1 informs you about the results of Docker health checks. You can now see health statuses of the running Docker containers next to their names in the Services tool window. Also, to make it easier to parse the statuses at a glance, containers that are starting and operating normally feature a small green dot on the icon, while the unhealthy containers are marked with red.

Docker debug deprecated

The Docker debug functionality has been deprecated. To debug your applications using Docker containers, please use Run targets instead.

Kubernetes

File templates in the New Kubernetes Resource popup

File templates in the New Kubernetes Resource popup
Ultimate

To make creating new Kubernetes files easier, we’ve added a new action to the File | New menu. Once you select the New Kubernetes Resource option, you’ll see a popup that features a list of the most popular resource types, such as Pod, Deployment, ConfigMap, and others.

Action to create new Kubernetes Secrets

Action to create new Kubernetes Secrets
Ultimate

IntelliJ IDEA Ultimate 2023.1 introduces a new dialog for creating Kubernetes Secrets. To define a new Secret, you can input Key and Value data manually or specify a file whose content will be used.

Color-coded change markers for Kubernetes resources loaded from cluster
Ultimate

When you use the View YAML action for resources from a cluster and make any changes in the opened file, IntelliJ IDEA Ultimate now highlights all of your edits with color-coded marks in the gutter. This way, you can be sure that the changes are made to the required parts of the resource before you apply them back to the cluster. Additionally, using the Compare with Cluster icon opens a full diff view that will fetch the resource’s current version from the cluster and compare it with the local version.

Improved user experience with kubeconfig files
Ultimate

IntelliJ IDEA Ultimate 2023.1 refines the user experience for working with kubeconfig files. You can now easily access a kubeconfig file in the Services view and open it in the editor. If you change a kubeconfig file outside of the IDE, IntelliJ IDEA will detect this and automatically refresh the configuration in the Services tool window. Code highlighting and completion for kubeconfig files are also provided.

Ability to assign custom shortcuts for actions in the Services view

Ability to assign custom shortcuts for actions in the Services view
Ultimate

You can now assign shortcuts for most Kubernetes actions in the Services view, like Forward Ports, Delete Resource, and Describe Resource, among others. Follow this path to set your custom shortcuts: Settings/Preferences | Keymap | Plugins | Kubernetes.

Remote development and collaboration

Additional insight into items only available to Сode With Me session hosts

Additional insight into items only available to Сode With Me session hosts

Now, when guests connect to a session, their client looks more like a regular JetBrains IDE. They can see all of the items the host sees, including grayed-out ones that only the host can access. Guests can clearly see what is unavailable and ask hosts to implement those actions on their behalf.

One-click permission requests and approvals in Code With Me

One-click permission requests and approvals in Code With Me

Guests can now request additional permissions by simply clicking on a key icon next to an unavailable item. Now hosts don’t have to determine necessary access from the start and can easily approve extra permissions from any guest on the fly.

Improved overview of recent remote development projects

Improved overview of recent remote development projects
Ultimate

Recent projects are now stored on the host instead of the client. This gives you accurate, up-to-date information even if you connect from a different client. We’ve also added more useful options, such as selecting which version of the IDE to use on the host.

Web development

Astro support

Astro support
Ultimate

Long-awaited Astro support has landed in IntelliJ IDEA 2023.1! You can get it through our new Astro plugin, which can be installed from Settings/Preferences | Plugins. The plugin provides basic functionality including syntax highlighting, code completion with automatic imports, refactorings, navigation, correct formatting, and more.

Support for TypeScript in Vue templates

Support for TypeScript in Vue templates
Ultimate

We’ve added TypeScript support in Vue templates. It’s enabled when you set the lang attribute in a script tag to ts. Previously, JavaScript was used regardless of the lang attribute in the script tag. IntelliJ IDEA will now provide support for inline casting, improved type narrowing, and correct information about inferred types in quick documentation in templates of Vue Single-File Components.

Automatic conversion of strings to template literals

Automatic conversion of strings to template literals
Ultimate

IntelliJ IDEA will now transform your single- or double-quoted strings into template literals automatically whenever you type ${. This works for raw strings as well as for JSX properties.

Tailwind CSS configuration

Tailwind CSS configuration
Ultimate

In this release, we've added support for configuration options, such as custom class name completion under the classAttributes option, or experimental ones like tailwindCSS.experimental.configFile. You can set up these configuration options under Settings/Preferences | Languages & Frameworks | Style Sheets | Tailwind CSS.

Other

  • The Android plugin bundled with IntelliJ IDEA now provides all the features of Android Studio Electric Eel, including support for the Android Gradle Plugin (AGP) 7.4.0.