List of known Breaking API Changes in 2023.*
Threading Model changes : Please see updated .
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.isAvailable
method Editor
parameter marked @NotNull
: This may break source-compatibility with inheritors written in Kotlin if they declare it as nullable.
com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction.invoke
method Editor
parameter marked @NotNull
: This 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 removed
: Use showDumbModeWarning(Project project, AnAction action, AnActionEvent @NotNull ... events)
instead.
com.intellij.profiler.eventtrace
package removed
: Update code usages.
org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.buildDependencies(ProjectResolverContext, Map, Map, DataNode, Collection, DataNode)
method parameter type changed from Map<String, String>
to ArtifactMappingService
: Update usages of this method. Change parameter artifactsMap
value to an ArtifactMappingService
instance. It can be obtained from ProjectResolverContext
, or created in-place using the MapBasedArtifactMappingService
.
org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.CONFIGURATION_ARTIFACTS
field removed
: Related mapping information is no longer accessible using this key. Artifacts mapping data is now stored in the instance of the ArtifactMappingService
and can be obtained via org.jetbrains.plugins.gradle.service.project.ProjectResolverContext#getArtifactsMap()
.
com.intellij.ide.plugins.enums.PluginsGroupType.FEATURED
enum renamed to com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS
: Use com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS
instead.
com.intellij.ide.plugins.newui.SearchWords.ORGANIZATION
enum renamed to com.intellij.ide.plugins.newui.SearchWords.VENDOR
: Use com.intellij.ide.plugins.newui.SearchWords.VENDOR
instead.
com.intellij.execution.console.ConsoleHistoryCopyHandler.PROMPT_LENGTH_MARKER
field removed
: Use com.intellij.execution.console.ConsoleHistoryCopyHandlerKt#PROMPT_LENGTH_MARKER
instead.
com.intellij.collaboration.ui.codereview.action.CodeReviewCheckoutRemoteBranchAction
class removed
: Action moved to a view model.
com.intellij.collaboration.ui.codereview.details.CodeReviewDetailsBranchComponentFactory.create(CoroutineScope, CodeReviewBranchesViewModel, AnAction, DataContext)
method removed
: Action moved to a view model.
com.intellij.collaboration.ui.codereview.diff.viewer.DiffEditorUtilKt
class removed
: Moved to com.intellij.collaboration.ui.codereview.editor.EditorComponentInlaysUtilKt.controlInlaysIn
.
com.intellij.collaboration.ui.toolwindow.ReviewListTabComponentDescriptor
class removed
: Descriptor removed in favour of tab type com.intellij.collaboration.ui.toolwindow.ReviewTab
.
com.intellij.collaboration.ui.toolwindow.ReviewTabsController
class removed
: Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowDataKeys.getREVIEW_TABS_CONTROLLER()
method removed
: Controller reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectContext
class removed
: Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowViewModel.getProjectVm()
method return type changed from SharedFlow<C>
to SharedFlow<PVM>
: Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createReviewListComponent(CoroutineScope, PVM)
abstract method added
: Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewTabsComponentFactory.createTabComponent(CoroutineScope, PVM, TVM)
abstract method added
: Context reworked to viewmodel com.intellij.collaboration.ui.toolwindow.ReviewToolwindowProjectViewModel
.
com.intellij.collaboration.ui.toolwindow.ReviewToolwindowTabsManagerKt.manageReviewToolwindowTabs(CoroutineScope, ToolWindow, ReviewToolwindowViewModel, ReviewTabsController, ReviewTabsComponentFactory, String)
method removed
: Added a tab viewmodel type.
com.intellij.collaboration.ui.codereview.timeline.TimelineDiffComponentFactory.createDiffComponent(Project, EditorFactory, PatchHunk, Pair, Pair)
method removed
: Coroutine scope was added to track editor lifetime.
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModelBase
class removed
: Incorrect EDT-reliant implementation removed.
com.intellij.collaboration.async.CoroutineUtilKt.DisposingScope(Disposable, CoroutineContext)
method removed
: Use com.intellij.collaboration.async.CoroutineUtilKt.disposingScope(CoroutineContext)
instead.
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getReviewCommits()
method return type changed from Flow
to SharedFlow
: Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommit()
method return type changed from Flow
to SharedFlow
: Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommitIndex()
method return type changed from Flow
to SharedFlow
: Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.auth.ui.login.LoginTokenGenerator.generateToken(String)
method return type changed from String
to void
: Removed unused return value
com.intellij.collaboration.auth.ui.login.TokenLoginDialog(Project, Component, LoginModel, String, DialogPanelSupplier)
constructor parameter type changed from () -> DialogPanel
to CoroutineScope.() -> DialogPanel
: Allow 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 from Flow<List<T>>
to Flow<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 from Flow<List<T>>
to Flow<Result<List<T>>>
: Handle list loading errors inside the popup
com.siyeh.ipp.base.Intention
class removed
: As a part of migration to new experimental ModCommand
API, the class was removed completely. It's a part of implementation module and was never intended to be inherited by external plugins. Consider implementing LocalInspectionTool
directly.
com.intellij.codeInsight.TailTypes
class renamed to com.intellij.codeInsight.JavaTailTypes
: Update code usages.
com.intellij.lang.javascript.buildTools.npm.PackageJsonUtil.createPackageJson(PsiDirectory, boolean)
method removed
: Use com.intellij.lang.javascript.buildTools.npm.PackageJsonFileTemplate.create(PsiDirectory, boolean, Consumer<PsiFile>)
instead.
Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.completionInfo
replaced by suspend function CompletionTableInfo.collectCompletionInfo
: Implement the new function to support async completion collecting.
Property com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.tableCompletionInfo
replaced by suspend function CompletionTableInfo.collectTableCompletionInfo
: Implement the new function to support async completion collecting.
Function com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField.getCompletionVariants
replaced by property TextCompletionField.completionCollector
: Implement the new function to support async completion collecting.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsFragmentsContainer
class renamed to com.intellij.openapi.externalSystem.service.execution.configuration.fragments.SettingsEditorFragmentContainer
: Use new run configuration fragment builders.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsEditorLabeledComponent
class moved to package com.intellij.openapi.externalSystem.service.execution.configuration.fragments
: Use the new run configuration fragment builders.
Parameter type of fragment builder functions from ExternalSystemRunConfigurationUtil
file changed from C
to (Disposable) -> C
: Use the new run configuration fragment builders.
Fragment builder functions from ExternalSystemRunConfigurationUtil
file moved to SettingsEditorFragmentBuilders
and ExternalSystemRunConfigurationFragmentBuilders
files
: Use the new run configuration fragment builders.
org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Companion
class renamed to org.jetbrains.kotlin.idea.actions.JavaToKotlinAction.Handler
: In order to not load additional code eagerly on action instantiation.
org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersion.Companion
class removed
: Now, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use com.intellij.openapi.application.ApplicationInfo
to get the IntelliJ version.
org.jetbrains.kotlin.idea.compiler.configuration.KotlinIdePluginVersion
class removed
: Now, the Kotlin plugin version does not include a compiler version, so the class is unnecessary. Use com.intellij.openapi.application.ApplicationInfo
to get the IntelliJ version.
org.intellij.plugins.markdown.editor.images
package removed
: Use org.intellij.plugins.markdown.images
from intellij.markdown.images
module.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlBlockWithImage(Project, MarkdownImageData)
method removed
: Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlBlockWithImage
instead.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlImageTag(Project, MarkdownImageData)
method removed
: Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlImageTag
instead.
org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createImage(Project, String, String, String)
method removed
: Use org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createImage
.
action.org.intellij.plugins.markdown.ui.actions.styling.InsertImageAction.insert.popup.text
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.browse.image.title
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.convert.to.html.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.description.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.height.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.path.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.screen.reader.text.panel.title
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.title.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.configure.image.dialog.width.label
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
markdown.insert.image.dialog.title
property removed from resource bundle messages.MarkdownBundle
: Use org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
org.jetbrains.plugins.notebooks.jupyter.variables
package removed
: It is now part of separate Jupyter plugin.
com.jetbrains.python.psi.PyClass.getPropertiesInherited(TypeEvalContext)
abstract method added
: Should implement this method.
com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>)
method removed
: Only recompilation is needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)
abstract method added
: Only recompilation is needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>)
abstract method added
: Only recompilation is needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>)
abstract method added
: Only recompilation is needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setBinaryDisplayType(ModelIndex<GridColumn>, BinaryDisplayType)
method removed
: Use com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)
instead.
com.intellij.database.datagrid.DataGrid.getBinaryDisplayType(ModelIndex<GridColumn>)
method removed
: Use com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>)
instead.
com.intellij.database.datagrid.DataGrid.getPureBinaryDisplayType(ModelIndex<GridColumn>)
method removed
: Use com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>)
instead.
com.intellij.openapi.actionSystem.AnActionEvent.getInputEvent()
method return type changed from InputEvent
to @Nullable InputEvent
: This may break source-compatibility with inheritors written in Kotlin.
Specify displayName
/key
for Configurable
: To improve performance, provide either attribute for com.intellij.applicationConfigurable
or com.intellij.projectConfigurable
extension point (see ).
com.intellij.remote.RemoteProcess.setWindowSize(int, int)
abstract method added
: Should implement this method.
com.intellij.database.dataSource.DataSourceStorageCore
class removed
: Use com.intellij.database.dataSource.DataSourceStorage
instead.
com.intellij.database.dataSource.DataSourceStorageUtil
class removed
: Use com.intellij.database.dataSource.DataSourceStorage
instead.
com.intellij.database.dataSource.DataSourceStorageCore$Listener
class renamed to com.intellij.database.dataSource.DataSourceStorage$Listener
: Core
class removed from hierarchy.
com.intellij.database.datagrid.CoreGrid.showCell(ModelIndex<Row>, ModelIndex<Column>)
method parameter type changed from ModelIndex<Row>
to int
: ModelIndex
class 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 to int
to indicate that it is an absolute index in the DB table.
com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>)
abstract method added
: Only recompilation is needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenConsole, MavenProgressIndicator)
method removed
: Use resolveProject(Collection, MavenExplicitProfiles, ProgressIndicator, MavenSyncConsole, MavenConsole, MavenWorkspaceMap, boolean)
instead.
org.jetbrains.idea.maven.server.MavenEmbedderWrapper.execute(VirtualFile, Collection, Collection, List)
method removed
: Use executeGoal(Collection, String, MavenProgressIndicator, MavenConsole)
instead.
com.intellij.velocity.psi.VtlVariable.getPsiType()
method return type changed from com.intellij.psi.PsiType
to com.intellij.velocity.psi.VtlVariableType
: Use com.intellij.velocity.java.reference.VtlPsiType
to wrap Java types to return result from implementations.
Moved package com.intellij.jsonpath
: It is now part of separate JSONPath plugin. Add dependency on com.intellij.jsonpath
to use its API.
Apache Batik library unbundled : Please bundle and use echosvg library instead.
com.intellij.grazie.text.RuleGroup.Companion.getLITERALS() method removed
: Replaced by constant field LITERALS
.
com.intellij.ui.treeStructure.SimpleNode.doUpdate()
method removed
: It 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 removed
: Use getFinishedColor(JComponent c)
overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String)
method removed
: Use setNameAndTooltip(PresentationData, String, String)
overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, String)
method removed
: Use setNameAndTooltip(PresentationData, String, String, String)
overload instead.
com.intellij.openapi.externalSystem.view.ExternalSystemNode.setNameAndTooltip(String, String, SimpleTextAttributes)
method removed
: Use 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 parameter String
removed
: Local port is the part of the tunnel configuration, not SSH settings.
com.intellij.openapi.fileEditor.impl.HTMLEditorProvider.Companion.getAFFINITY_KEY()
method removed
: It 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 added
: The interface is not intended to be implemented in external plugins.
com.intellij.execution.RunnerAndConfigurationSettings.getFocusToolWindowBeforeRun()
abstract method added
: The interface is not intended to be implemented in external plugins.
com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor
class moved to package com.intellij.database.dataSource.url
: The inner interface was moved to upper level.
com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor
class moved to package com.intellij.database.dataSource.url.ui
: UI extracted from TypesRegistry
to TypesRegistryUi
. Use com.intellij.database.urlParamEditorProvider
extension point to register parameter descriptor, use com.intellij.database.urlParamEditorUiProvider
extension point to register parameter editor descriptor.
com.intellij.database.datagrid.DataGrid.setAnonymousColumnName(String)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewAdditionalRowsCount(int)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewAllowMultilineColumnLabels(boolean)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewPaintHorizontalLines(boolean)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewShowRowNumbers(boolean)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewTransparentHeaderBackground(boolean)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.setResultViewVisibleRowCount(int)
method removed
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.countSortedColumns()
abstract method added
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.getAppearance()
abstract method added
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.getHoveredRowBackground()
abstract method added
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.datagrid.DataGrid.getStripeRowBackground()
abstract method added
: Only recompilation needed for classes that implement DataGrid
and delegate calls to an actual DataGrid
implementation.
com.intellij.database.plan.ExplainPlanProvider.createRawExplainTask(LocalDataSource dataSource, boolean analyze)
abstract method added
: Should implement this method.
com.intellij.lang.javascript.JavascriptParserDefinition.createFile(FileViewProvider)
method return type changed from com.intellij.lang.javascript.psi.JSFile
to com.intellij.psi.PsiFile
: Required to support Astro file format.
org.jetbrains.wip.WipVm.initDomains()
method return type changed from void
to org.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 from void
to org.jetbrains.concurrency.Promise<*>
: ready()
is now awaitable to make WIP/CDP connection-dependent initialization logic possible.
com.jetbrains.gateway.ssh.HighLevelHostAccessor.isPathPresentOnRemote(String, FileSystemItem)
method parameter type changed from String
to com.jetbrains.gateway.ssh.deploy.RemotePath
: Using 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.makeRemotePath
to prepare a path to pass into any of the methods requiring it.
com.jetbrains.php.config.library.PhpIncludePathManager.getRoots()
method removed
: This class no longer handles all paths configured in non-runtime com.jetbrains.php.config.library.PhpLibraryRootProvider
. Paths configured in Include Path Settings are available with PhpIncludePathManager.getIncludePaths()
. All additional paths to use as roots for resolving via PhpIncludePathManager.getAllIncludedRoots()
.