IntelliJ IDEA 2023.1

Enhances IDE startup experience, streamlines commit process and improves navigation for Spring security.
March 30, 2023
New Version

Features

Key updates

  • New UI enhancements (Beta) - Compact Mode has been introduced which provides a more consolidated look and feel of the IDE thanks to scaled-down spacing 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.
  • Earlier availability of IDE features on project opening - 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, this release 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 - 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 - 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 - To simplify seeing applied security rules, IntelliJ IDEA now 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 - It is now possible to zoom into and out of the IDE entirely, increasing or decreasing the size of all UI elements at once.
  • Option to save multiple tool window layouts - In this release, you can now save and manage several tool window layouts and switch between them when needed.
  • New Remember size for each tool window setting - In this release, a new layout option has been introduced 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.
  • Onboarding tips in a sample project - 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 - This release adds an option to predefine the behavior of Actions on Save for new projects.
  • ML-powered search for classes in Search Everywhere enabled by default - To provide you with more relevant and accurate search results, machine-learning ranking has continued to be integrated 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 - In this release, there is 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 now 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 - In this release, the user experience when pasting a line that was copied or cut without selection has been fine-tuned. There is now a setting that allows you to control the placement of the pasted content.
  • Option to show whitespaces only in selected code - This release 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 this release, 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.
  • New intention action for reformatting tables in Markdown files - A new intention action allows you to correct the formatting of tables in 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.
  • New Smart Keys settings page for Markdown - 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 - 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 - 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.
  • Java 20 support - This release supports the latest updates added in Java 20, including the changes to the language features Pattern Matching for switch and Record Patterns.
  • Improved Extract Method refactoring - 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 - 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.

Scala

  • 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 - 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 this release, this dialog is now available for sbt projects, as well.
  • 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 has been 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 - 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. This release 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. The auto-import action for Enums has also been fixed.
  • Improvements for Scala 3 and Scala 2 decompilers - This release 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 - 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. The overall color scheme of the Flame Graph tab has also been reworked to make it more eye-friendly.

Version control systems

  • VCS status color hints in the Structure tool window - To make tracking changes to files more convenient, color hints have been added 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 - To simplify the process of reviewing code inside the IDE, the Pull Request tool window has been reworked. 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 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 - This release 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 - 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 - When importing a project, IntelliJ IDEA 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 this release, 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.
  • Option to filter classes in the Coverage view - In this release, 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 - This release 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 - 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.
  • Option to share Spring and JPA facet settings via VCS - With this release you can change and share Spring and JPA settings via custom facets in File | Project Structure | Modules.
  • Ability to run MongoDB queries in the Database console from Spring and Micronaut Data repositories - This release makes it possible to run MongoDB queries in the Database console from Spring and Micronaut Data repositories.
  • Project Reactor: Improved inspections for reactive code - This release 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 - 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 - If you define additional metadata for APIs using Swagger 2.X annotations in Spring controllers, IntelliJ IDEA 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 - 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 - With this release, it is now possible to run GRPC requests from proto files that contain imports from .jar archives.code completion for request bodies has also been improved, like for the OneOf and Map<K,V> types. The HTTP Client tab for Protobuf endpoints has also been added in the Endpoints tool window.
  • Improved editing support for application.yaml configuration files in Ktor - 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 - 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 Microsoft 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 - 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.
  • Docker container health statuses in the Services tool window - This release 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 - To make creating new Kubernetes files easier, a new action has been added 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 - This release 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 - When you use the View YAML action for resources from a cluster and make any changes in the opened file, IntelliJ IDEA 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 - This release 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 - You can now assign shortcuts for most Kubernetes actions in the Services view, like Forward Ports, Delete Resource, and Describe Resource, among others.

Remote development and collaboration

  • Additional insight into items only available to Сode With Me session hosts - When guests connect to a session, their client now 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 - 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 - 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. More useful options have also been added, such as selecting which version of the IDE to use on the host.

Web development

  • Astro support - Added support for Astro in IntelliJ IDEA. You can get it through the 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 - 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 - 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 - Added support for configuration options, such as custom class name completion under the classAttributes option, or experimental ones like tailwindCSS.experimental.configFile.

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.
Improved IDE startup experience

IntelliJ IDEA

Comprehensive Java development environment.

Got a Question?

Live Chat with our JetBrains licensing specialists now.