Incompatible Changes in IntelliJ Platform and Plugins API 2023.*
Edit pageLast modified: 05 November 2024Please 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.
note
Non-listed changesChanges from API marked with
@Deprecated(forRemoval=true)
or any ofApiStatus
@Experimental
,@ScheduledForRemoval
, or@Internal
are not listed here, as incompatible changes are to be expected.For API annotated with
@ApiStatus.Internal
/@IntellijInternalApi
, see Internal API Migration for more details and replacements.
note
warning
Gradle PluginThe Gradle plugin must be chosen depending on the target platform version.
- 2022.3+
Recommended IntelliJ Platform Gradle Plugin (2.x),
Requires Gradle IntelliJ Plugin (1.x) version 1.10.1+ (current: 1.17.4)
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.isAvailable
methodEditor
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
methodEditor
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 removedUse
showDumbModeWarning(Project project, AnAction action, AnActionEvent @NotNull ... events)
instead.org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil.buildDependencies(ProjectResolverContext, Map, Map, DataNode, Collection, DataNode)
method parameter type changed fromMap<String, String>
toArtifactMappingService
Update usages of this method. Change parameter
artifactsMap
value to anArtifactMappingService
instance. It can be obtained fromProjectResolverContext
, or created in-place using theMapBasedArtifactMappingService
.org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.CONFIGURATION_ARTIFACTS
field removedRelated 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 viaorg.jetbrains.plugins.gradle.service.project.ProjectResolverContext#getArtifactsMap()
.com.intellij.ide.plugins.enums.PluginsGroupType.FEATURED
enum renamed tocom.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS
Use
com.intellij.ide.plugins.enums.PluginsGroupType.STAFF_PICKS
instead.
Collaboration Tools Module 2023.3
com.intellij.collaboration.ui.codereview.action.CodeReviewCheckoutRemoteBranchAction
class 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.DiffEditorUtilKt
class removedMoved to
com.intellij.collaboration.ui.codereview.editor.EditorComponentInlaysUtilKt.controlInlaysIn
.com.intellij.collaboration.ui.toolwindow.ReviewListTabComponentDescriptor
class removedDescriptor removed in favour of tab type
com.intellij.collaboration.ui.toolwindow.ReviewTab
.com.intellij.collaboration.ui.toolwindow.ReviewTabsController
class 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.ReviewToolwindowProjectContext
class 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.CodeReviewChangesViewModelBase
class 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 fromFlow
toSharedFlow
Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommit()
method return type changed fromFlow
toSharedFlow
Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.ui.codereview.details.model.CodeReviewChangesViewModel.getSelectedCommitIndex()
method return type changed fromFlow
toSharedFlow
Concrete type usage forced to ensure correct behavior
com.intellij.collaboration.auth.ui.login.LoginTokenGenerator.generateToken(String)
method return type changed fromString
tovoid
Removed unused return value
com.intellij.collaboration.auth.ui.login.TokenLoginDialog(Project, Component, LoginModel, String, DialogPanelSupplier)
constructor parameter type changed from() -> DialogPanel
toCoroutineScope.() -> DialogPanel
Allow using dialog scope in dialog panel
Java Plugin 2023.3
com.siyeh.ipp.base.Intention
class removedAs 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 implementingLocalInspectionTool
directly.
JavaScript Plugin 2023.3
External System Run Configuration 2023.3
- Property
com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.completionInfo
replaced by suspend functionCompletionTableInfo.collectCompletionInfo
Implement the new function to support async completion collecting.
- Property
com.intellij.openapi.externalSystem.service.ui.command.line.CompletionTableInfo.tableCompletionInfo
replaced by suspend functionCompletionTableInfo.collectTableCompletionInfo
Implement the new function to support async completion collecting.
- Function
com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionField.getCompletionVariants
replaced by propertyTextCompletionField.completionCollector
Implement the new function to support async completion collecting.
com.intellij.openapi.externalSystem.service.execution.configuration.SettingsFragmentsContainer
class renamed tocom.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 packagecom.intellij.openapi.externalSystem.service.execution.configuration.fragments
Use the new run configuration fragment builders.
Kotlin Plugin 2023.3
Markdown Plugin 2023.3
org.intellij.plugins.markdown.editor.images
package removedUse
org.intellij.plugins.markdown.images
fromintellij.markdown.images
module.org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlBlockWithImage(Project, MarkdownImageData)
method removedUse
org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlBlockWithImage
instead.org.intellij.plugins.markdown.lang.psi.MarkdownPsiElementFactory.createHtmlImageTag(Project, MarkdownImageData)
method removedUse
org.intellij.plugins.markdown.images.editor.ImagePsiElementFactory.createHtmlImageTag
instead.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.text
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.browse.image.title
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.convert.to.html.label
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.description.label
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.height.label
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.path.label
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.screen.reader.text.panel.title
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.markdown.configure.image.dialog.title.label
property removed from resource bundlemessages.MarkdownBundle
Use
org.intellij.plugins.markdown.images.MarkdownImagesBundle
instead.
Python Plugin 2023.3
Database Plugin 2023.3
com.intellij.database.datagrid.DataGrid.getName(ModelIndex<GridColumn>)
method removedOnly recompilation is needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)
abstract method addedOnly recompilation is needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.getDisplayType(ModelIndex<GridColumn>)
abstract method addedOnly recompilation is needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.getPureDisplayType(ModelIndex<GridColumn>)
abstract method addedOnly recompilation is needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setBinaryDisplayType(ModelIndex<GridColumn>, BinaryDisplayType)
method removedUse
com.intellij.database.datagrid.DataGrid.setDisplayType(ModelIndex<GridColumn>, DisplayType)
instead.
Package Checker Plugin 2023.3
2023.2
IntelliJ Platform 2023.2
com.intellij.openapi.actionSystem.AnActionEvent.getInputEvent()
method return type changed fromInputEvent
to@Nullable InputEvent
This may break source-compatibility with inheritors written in Kotlin.
- Specify
displayName
/key
forConfigurable
To improve performance, provide either attribute for
com.intellij.applicationConfigurable
orcom.intellij.projectConfigurable
extension point (see Settings Guide).
Database Plugin 2023.2
com.intellij.database.dataSource.DataSourceStorageCore
class removedUse
com.intellij.database.dataSource.DataSourceStorage
instead.com.intellij.database.dataSource.DataSourceStorageUtil
class removedUse
com.intellij.database.dataSource.DataSourceStorage
instead.com.intellij.database.dataSource.DataSourceStorageCore$Listener
class renamed tocom.intellij.database.dataSource.DataSourceStorage$Listener
Core
class removed from hierarchy.com.intellij.database.datagrid.CoreGrid.showCell(ModelIndex<Row>, ModelIndex<Column>)
method parameter type changed fromModelIndex<Row>
toint
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 toint
to indicate that it is an absolute index in the DB table.
Maven Plugin 2023.2
Apache Velocity Plugin 2023.2
JSON Path Plugin 2023.2
- Moved package
com.intellij.jsonpath
It is now part of separate JSONPath plugin. Add dependency on
com.intellij.jsonpath
to 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 removed
Replaced 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 parameterString
removedLocal 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.
Database Plugin 2023.1
com.intellij.database.dataSource.url.TypeDescriptor.ParamEditor
class moved to packagecom.intellij.database.dataSource.url
The inner interface was moved to upper level.
com.intellij.database.dataSource.url.TypesRegistry.BaseTypeDescriptor
class moved to packagecom.intellij.database.dataSource.url.ui
UI extracted from
TypesRegistry
toTypesRegistryUi
. Usecom.intellij.database.urlParamEditorProvider
extension point to register parameter descriptor, usecom.intellij.database.urlParamEditorUiProvider
extension point to register parameter editor descriptor.com.intellij.database.datagrid.DataGrid.setAnonymousColumnName(String)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewAdditionalRowsCount(int)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewAllowMultilineColumnLabels(boolean)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewPaintHorizontalLines(boolean)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewShowRowNumbers(boolean)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewTransparentHeaderBackground(boolean)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.setResultViewVisibleRowCount(int)
method removedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.countSortedColumns()
abstract method addedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.getAppearance()
abstract method addedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.com.intellij.database.datagrid.DataGrid.getHoveredRowBackground()
abstract method addedOnly recompilation needed for classes that implement
DataGrid
and delegate calls to an actualDataGrid
implementation.
JavaScript Plugin 2023.1
JavaScript Debugger Plugin 2023.1
JetBrains Gateway Plugin 2023.1
com.jetbrains.gateway.ssh.HighLevelHostAccessor.isPathPresentOnRemote(String, FileSystemItem)
method parameter type changed fromString
tocom.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.
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()
.
Thanks for your feedback!