Incompatible Changes in IntelliJ Platform and Plugins API 2023.*
Please see Verifying Plugin Compatibility on how to use Plugin Verifier and IDE inspections to check such problems.
Early Access Program (EAP) releases of upcoming versions are available here.
2023.3
IntelliJ Platform 2023.3
- Threading Model changes
Please see updated Threading Model.
- Removal of commons-lang2 and commons-collections libraries
commons-lang2 library is going to be removed, a temporary compatibility layer (marked with
@Deprecated(forRemoval = true)to highlight usages) is bundled. Please consider migrating to either commons-lang3 or commons-text libraries and bundle them with your plugin. Library commons-collections is going to be removed.- JsonPath library unbundled
Bundle it explicitly with your plugin.
com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.isAvailablemethodEditorparameter marked@NotNullThis may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.
com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.invokemethodEditorparameter marked@NotNullThis may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.
com.intellij.openapi.actionSystem.ex.ActionUtil.showDumbModeWarning(Project, AnActionEvent[])method removedUse
showDumbModeWarning(Project project, AnAction action, AnActionEvent @NotNull ... events)instead.com.intellij.profiler.eventtracepackage removedUpdate code usages.
org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.buildDependencies(ProjectResolverContext, Map, Map, DataNode, Collection, DataNode)method parameter type changed fromMap<String, String>toArtifactMappingServiceUpdate usages of this method. Change parameter
artifactsMapvalue to anArtifactMappingServiceinstance. It can be obtained fromProjectResolverContext, or created in-place using theMapBasedArtifactMappingService.org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.CONFIGURATION_ARTIFACTSfield removedRelated mapping information is no longer accessible using this key. Artifacts mapping data is now stored in the instance of the
ArtifactMappingServiceand can be obtained viaorg.jetbrains.plugins.gradle.service.project.ProjectResolverContext#getArtifactsMap().com.intellij.ide.plugins.enums.PluginsGroupType.FEATUREDenum renamed tocom.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKSUse
com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKSinstead.com.intellij.ide.plugins.newui.SearchWords.ORGANIZATIONenum renamed tocom.intellij.ide.plugins.newui.SearchWords.VENDORUse
com.intellij.ide.plugins.newui.SearchWords.VENDORinstead.com.intellij.execution.console.ConsoleHistoryCopyHandler.PROMPT_LENGTH_MARKERfield removedUse
com.intellij.execution.console.ConsoleHistoryCopyHandlerKt#PROMPT_LENGTH_MARKERinstead.
Collaboration Tools Module 2023.3
com.intellij.collaboration.ui.codereview.action.CodeReviewCheckoutRemoteBranchActionclass removedAction moved to a view model.
com.intellij.collaboration.ui.codereview.details.CodeReviewDetailsBranchComponentFactory.create(CoroutineScope, CodeReviewBranchesViewModel, AnAction, DataContext)method removedAction moved to a view model.
com.intellij.collaboration.ui.codereview.diff.viewer.DiffEditorUtilKtclass removedMoved to
com.intellij.collaboration.ui.codereview.editor.EditorComponentInlaysUtilKt.controlInlaysIn.com.intellij.collaboration.ui.toolwindow.ReviewListTabComponentDescriptorclass removedDescriptor removed in favour of tab type
com.intellij.collaboration.ui.toolwindow.ReviewTab.com.intellij.collaboration.ui.toolwindow.ReviewTabsControllerclass removedController reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewToolwindowDataKeys.getREVIEW_TABS_CONTROLLER()method removedController reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectContextclass removedContext reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewToolwindowViewModel.getProjectVm()method return type changed fromSharedFlow<C>toSharedFlow<PVM>Context reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createReviewListComponent(CoroutineScope, PVM)abstract method addedContext reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createTabComponent(CoroutineScope, PVM, TVM)abstract method addedContext reworked to viewmodel
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel.com.intellij.collaboration.ui.toolwindow.ReviewToolwindowTabsManagerKt.manageReviewToolwindowTabs(CoroutineScope, ToolWindow, ReviewToolwindowViewModel, ReviewTabsController, ReviewTabsComponentFactory, String)method removedAdded a tab viewmodel type.
com.intellij.collaboration.ui.codereview.timeline.TimelineDiffComponentFactory.createDiffComponent(Project, EditorFactory, PatchHunk, Pair, Pair)method removedCoroutine scope was added to track editor lifetime.
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModelBaseclass removedIncorrect EDT-reliant implementation removed.
com.intellij.collaboration.async.CoroutineUtilKt.DisposingScope(Disposable, CoroutineContext)method removedUse
com.intellij.collaboration.async.CoroutineUtilKt.disposingScope(CoroutineContext)instead.com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getReviewCommits()method return type changed fromFlowtoSharedFlowConcrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommit()method return type changed fromFlowtoSharedFlowConcrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommitIndex()method return type changed fromFlowtoSharedFlowConcrete type usage forced to ensure correct behavior
com.intellij.collaboration.auth.ui.login.LoginTokenGenerator.generateToken(String)method return type changed fromStringtovoidRemoved unused return value
com.intellij.collaboration.auth.ui.login.TokenLoginDialog(Project, Component, LoginModel, String, DialogPanelSupplier)constructor parameter type changed from() -> DialogPaneltoCoroutineScope.() -> DialogPanelAllow using dialog scope in dialog panel
com.intellij.collaboration.ui.codereview.list.search.ChooserPopupUtil.showAsyncChooserPopup(RelativePoint, Flow<List<T>>, Mapper, ListCellRenderer, PopupConfig)method parameter type changed fromFlow<List<T>>toFlow<Result<List<T>>>Handle list loading errors inside the popup
com.intellij.collaboration.ui.codereview.list.search.ChooserPopupUtil.showAsyncChooserPopup(RelativePoint, Flow<List<T>>, Presenter, PopupConfig)method parameter type changed fromFlow<List<T>>toFlow<Result<List<T>>>Handle list loading errors inside the popup
Java Plugin 2023.3
com.siyeh.ipp.base.Intentionclass removedAs a part of migration to new experimental
ModCommandAPI, the class was removed completely. It's a part of implementation module and was never intended to be inherited by external plugins. Consider implementingLocalInspectionTooldirectly.com.intellij.codeInsight.TailTypesclass renamed tocom.intellij.codeInsight.JavaTailTypesUpdate code usages.
com.intellij.unscramble.ThreadDumpParserclass moved to packagecom.intellij.threadDumpParserUpdate code usages.
JavaScript Plugin 2023.3
com.intellij.lang.javascript.buildTools.npm.PackageJsonUtil.createPackageJson(PsiDirectory, boolean)method removedUse
com.intellij.lang.javascript.buildTools.npm.PackageJsonFileTemplate.create(PsiDirectory, boolean, Consumer<PsiFile>)instead.
External System Run Configuration 2023.3
- Property
com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.completionInforeplaced by suspend functionCompletionTableInfo.collectCompletionInfo Implement the new function to support async completion collecting.
- Property
com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.tableCompletionInforeplaced by suspend functionCompletionTableInfo.collectTableCompletionInfo Implement the new function to support async completion collecting.
- Function
com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField.getCompletionVariantsreplaced by propertyTextCompletionField.completionCollector Implement the new function to support async completion collecting.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsFragmentsContainerclass renamed tocom.intellij.openapi.externalSystem.service.execution.configuration.fragments.SettingsEditorFragmentContainerUse new run configuration fragment builders.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsEditorLabeledComponentclass moved to packagecom.intellij.openapi.externalSystem.service.execution.configuration.fragmentsUse the new run configuration fragment builders.
- Parameter type of fragment builder functions from
ExternalSystemRunConfigurationUtilfile changed fromCto(Disposable) -> C Use the new run configuration fragment builders.
- Fragment builder functions from
ExternalSystemRunConfigurationUtilfile moved toSettingsEditorFragmentBuildersandExternalSystemRunConfigurationFragmentBuildersfiles Use the new run configuration fragment builders.
Kotlin Plugin 2023.3
org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Companionclass renamed toorg.jetbrains.kotlin.idea.actions.JavaToKotlinAction.HandlerIn order to not load additional code eagerly on action instantiation.
org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersion.Companionclass removedNow, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use
com.intellij.openapi.application.ApplicationInfoto get the IntelliJ version.org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersionclass removedNow, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use
com.intellij.openapi.application.ApplicationInfoto get the IntelliJ version.
Markdown Plugin 2023.3
org.intellij.plugins.markdown.editor.imagespackage removedUse
org.intellij.plugins.markdown.imagesfromintellij.markdown.imagesmodule.org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlBlockWithImage(Project, MarkdownImageData)method removedUse
org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlBlockWithImageinstead.org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlImageTag(Project, MarkdownImageData)method removedUse
org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlImageTaginstead.org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createImage(Project, String, String, String)method removedUse
org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createImage.action.org.intellij.plugins.markdown.ui.actions.styling.InsertImageAction.insert.popup.textproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.browse.image.titleproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.convert.to.html.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.description.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.height.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.path.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.screen.reader.text.panel.titleproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.title.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.configure.image.dialog.width.labelproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.markdown.insert.image.dialog.titleproperty removed from resource bundlemessages.MarkdownBundleUse
org.intellij.plugins.markdown.images.MarkdownImagesBundleinstead.
Python Plugin 2023.3
org.jetbrains.plugins.notebooks.jupyter.variablespackage removedIt is now part of separate Jupyter plugin.
com.jetbrains.python.psi.PyClass.getPropertiesInherited(TypeEvalContext)abstract method addedShould implement this method.
Database Plugin 2023.3
com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>)method removedOnly recompilation is needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)abstract method addedOnly recompilation is needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>)abstract method addedOnly recompilation is needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>)abstract method addedOnly recompilation is needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setBinaryDisplayType(ModelIndex<GridColumn>, BinaryDisplayType)method removedUse
com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)instead.com.intellij.database.datagrid.DataGrid.getBinaryDisplayType(ModelIndex<GridColumn>)method removedUse
com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>)instead.com.intellij.database.datagrid.DataGrid.getPureBinaryDisplayType(ModelIndex<GridColumn>)method removedUse
com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>)instead.
Package Checker Plugin 2023.3
com.intellij.packageChecker.maven.MavenSharedDependenciesModelclass renamed tocom.intellij.packageChecker.java.BuildSystemDependenciesModelBaseRenamed to a more correct and generic name.
2023.2
IntelliJ Platform 2023.2
com.intellij.openapi.actionSystem.AnActionEvent.getInputEvent()method return type changed fromInputEventto@Nullable InputEventThis may break source-compatibility with inheritors written in Kotlin.
- Specify
displayName/keyforConfigurable To improve performance, provide either attribute for
com.intellij.applicationConfigurableextension point orcom.intellij.projectConfigurableextension point (see Settings Guide).com.intellij.remote.RemoteProcess.setWindowSize(int, int)abstract method addedShould implement this method.
Database Plugin 2023.2
com.intellij.database.dataSource.DataSourceStorageCoreclass removedUse
com.intellij.database.dataSource.DataSourceStorageinstead.com.intellij.database.dataSource.DataSourceStorageUtilclass removedUse
com.intellij.database.dataSource.DataSourceStorageinstead.com.intellij.database.dataSource.DataSourceStorageCore$Listenerclass renamed tocom.intellij.database.dataSource.DataSourceStorage$ListenerCoreclass removed from hierarchy.com.intellij.database.datagrid.CoreGrid.showCell(ModelIndex<Row>, ModelIndex<Column>)method parameter type changed fromModelIndex<Row>tointModelIndexclass is used to reference data in the table model. Row indexes in the table model start with 0, even when the table is scrolled to page N>1. Parameter type was changed tointto indicate that it is an absolute index in the DB table.com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>)abstract method addedOnly recompilation is needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.
Maven Plugin 2023.2
org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenConsole, MavenProgressIndicator)method removedUse
resolveProject(Collection, MavenExplicitProfiles, ProgressIndicator, MavenSyncConsole, MavenConsole, MavenWorkspaceMap, boolean)instead.org.jetbrains.idea.maven.server.MavenEmbedderWrapper.execute(VirtualFile, Collection, Collection, List)method removedUse
executeGoal(Collection, String, MavenProgressIndicator, MavenConsole)instead.
Apache Velocity Plugin 2023.2
com.intellij.velocity.psi.VtlVariable.getPsiType()method return type changed fromcom.intellij.psi.PsiTypetocom.intellij.velocity.psi.VtlVariableTypeUse
com.intellij.velocity.java.reference.VtlPsiTypeto wrap Java types to return result from implementations.
JSON Path Plugin 2023.2
- Moved package
com.intellij.jsonpath It is now part of separate JSONPath plugin. Add dependency on
com.intellij.jsonpathto use its API.
2023.1
IntelliJ Platform 2023.1
- Apache Batik library unbundled
Please bundle and use echosvg library instead.
com.intellij.grazie.text.RuleGroup.Companion.getLITERALS() method removedReplaced by constant field
LITERALS.com.intellij.ui.treeStructure.SimpleNode.doUpdate()method removedIt was replaced by
doUpdate(PresentationData)which should now only modify the state of its parameter.com.intellij.ide.ui.laf.darcula.ui.DarculaProgressBarUI.getFinishedColor()method removedUse
getFinishedColor(JComponent c)overload instead.com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String)method removedUse
setNameAndTooltip(PresentationData, String, String)overload instead.com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, String)method removedUse
setNameAndTooltip(PresentationData, String, String, String)overload instead.com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, SimpleTextAttributes)method removedUse
setNameAndTooltip(PresentationData, String, String, SimpleTextAttributes)overload instead.com.intellij.ssh.config.unified.SshConfigManager.register(boolean, String, String, String, String, AuthType, String, String, boolean, boolean, String, String)method parameterStringremovedLocal port is the part of the tunnel configuration, not SSH settings.
com.intellij.openapi.fileEditor.impl.HTMLEditorProvider.Companion.getAFFINITY_KEY()method removedIt was an accidentally exposed internal API. Please use
HTMLEditorProvider.openEditor()methods, or implement your own file editor provider.com.intellij.execution.RunnerAndConfigurationSettings.setFocusToolWindowBeforeRun(boolean)abstract method addedThe interface is not intended to be implemented in external plugins.
com.intellij.execution.RunnerAndConfigurationSettings.getFocusToolWindowBeforeRun()abstract method addedThe interface is not intended to be implemented in external plugins.
Database Plugin 2023.1
com.intellij.database.dataSource.url.TypeDescriptor.ParamEditorclass moved to packagecom.intellij.database.dataSource.urlThe inner interface was moved to upper level.
com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptorclass moved to packagecom.intellij.database.dataSource.url.uiUI extracted from
TypesRegistrytoTypesRegistryUi. Usecom.intellij.database.urlParamEditorProviderextension point to register parameter descriptor, usecom.intellij.database.urlParamEditorUiProviderextension point to register parameter editor descriptor.com.intellij.database.datagrid.DataGrid.setAnonymousColumnName(String)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewAdditionalRowsCount(int)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewAllowMultilineColumnLabels(boolean)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewPaintHorizontalLines(boolean)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewShowRowNumbers(boolean)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewTransparentHeaderBackground(boolean)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.setResultViewVisibleRowCount(int)method removedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.countSortedColumns()abstract method addedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.getAppearance()abstract method addedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.getHoveredRowBackground()abstract method addedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.datagrid.DataGrid.getStripeRowBackground()abstract method addedOnly recompilation needed for classes that implement
DataGridand delegate calls to an actualDataGridimplementation.com.intellij.database.plan.ExplainPlanProvider.createRawExplainTask(LocalDataSource dataSource, boolean analyze)abstract method addedShould implement this method.
JavaScript Plugin 2023.1
com.intellij.lang.javascript.JavascriptParserDefinition.createFile(FileViewProvider)method return type changed fromcom.intellij.lang.javascript.psi.JSFiletocom.intellij.psi.PsiFileRequired to support Astro file format.
JavaScript Debugger Plugin 2023.1
org.jetbrains.wip.WipVm.initDomains()method return type changed fromvoidtoorg.jetbrains.concurrency.Promise<*>initDomains()is now awaitable to make WIP/CDP domains-dependent initialization logic possible.org.jetbrains.wip.WipVm.ready()method return type changed fromvoidtoorg.jetbrains.concurrency.Promise<*>ready()is now awaitable to make WIP/CDP connection-dependent initialization logic possible.
JetBrains Gateway Plugin 2023.1
com.jetbrains.gateway.ssh.HighLevelHostAccessor.isPathPresentOnRemote(String, FileSystemItem)method parameter type changed fromStringtocom.jetbrains.gateway.ssh.deploy.RemotePathUsing strings instead of paths breaks a lot of things when doing cross-platform development, and is generally not a good idea. Use
com.jetbrains.gateway.ssh.HighLevelHostAccessor.makeRemotePathto prepare a path to pass into any of the methods requiring it.
PHP Plugin 2023.1
com.jetbrains.php.config.library.PhpIncludePathManager.getRoots()method removedThis class no longer handles all paths configured in non-runtime
com.jetbrains.php.config.library.PhpLibraryRootProvider. Paths configured in Include Path Settings are available withPhpIncludePathManager.getIncludePaths(). All additional paths to use as roots for resolving viaPhpIncludePathManager.getAllIncludedRoots().