List of known Breaking API Changes in 2025.*
Several modules were extracted from the core plugin to separate modules with their own classloaders.
This shouldn't affect binary compatibility, but an explicit dependency should be added in build.gradle.kts using bundledModule(<moduleName>) if a plugin uses API from these modules:
intellij.platform.collaborationTools.auth.baseintellij.platform.collaborationTools.authintellij.platform.scriptDebugger.backendintellij.platform.scriptDebugger.protocolReaderRuntimeintellij.platform.scriptDebugger.uiintellij.platform.vcs.dvcsintellij.platform.vcs.logintellij.platform.vcs.log.graph
The annotation com.intellij.openapi.components.Storage cannot be used at top-level
: Actually, it has never been correct.
The annotation can be used only in @State.storages.
See IJPL-207245 for details.
The org.intellij.intelliLang plugin requires Gradle dependency on bundled module intellij.platform.langInjection
: Change bundledPlugin("org.intellij.intelliLang") to bundledModule("intellij.platform.langInjection") in Gradle build script.
Write-Intent lock acquisition was removed during processing of input events in Swing and AWT
: Consider using explicit calls to com.intellij.openapi.application.WriteIntentReadAction#run in your input event listeners. See IJPL-219144 for details.
com.intellij.openapi.application.Application.acquireReadActionLock() method removed
: Consider using higher-order functions like com.intellij.openapi.application.Application#runReadAction.
com.intellij.openapi.application.Application.acquireWriteActionLock() method removed
: Consider using higher-order functions like com.intellij.openapi.application.Application#runWriteAction.
com.intellij.openapi.application.WriteAction.start() method removed
: Consider using higher-order functions like com.intellij.openapi.application.Application#runWriteAction.
com.intellij.openapi.application.WriteIntentReadAction.compute(com.intellij.openapi.util.ThrowableComputable) method removed
: Use com.intellij.openapi.application.WriteIntentReadAction.computeThrowable. See IJPL-221464 for details.
com.intellij.openapi.application.WriteIntentReadAction.run(com.intellij.openapi.util.ThrowableRunnable) method removed
: Use com.intellij.openapi.application.WriteIntentReadAction.runThrowable. See IJPL-221464 for details.
org.jetbrains.plugins.cucumber.java.steps.JavaStep1xDefinition class removed
: Use org.jetbrains.plugins.cucumber.java.steps.JavaAnnotatedStepDefinition.
org.jetbrains.plugins.cucumber.java.steps.JavaStep2xDefinition class removed
: Use org.jetbrains.plugins.cucumber.java.steps.JavaAnnotatedStepDefinition.
org.jetbrains.plugins.cucumber.java.steps.factory.JavaStepDefinitionFactory abstract class removed
: Create instances of org.jetbrains.plugins.cucumber.java.steps.JavaAnnotatedStepDefinition or org.jetbrains.plugins.cucumber.java.steps.Java8StepDefinition directly.
org.jetbrains.plugins.cucumber.java.steps.factory.JavaStep1xDefinitionFactory class removed
: Create instances of org.jetbrains.plugins.cucumber.java.steps.JavaAnnotatedStepDefinition or org.jetbrains.plugins.cucumber.java.steps.Java8StepDefinition directly.
org.jetbrains.plugins.cucumber.java.steps.factory.JavaStep2xDefinitionFactory class removed
: Create instances of org.jetbrains.plugins.cucumber.java.steps.JavaAnnotatedStepDefinition or org.jetbrains.plugins.cucumber.java.steps.Java8StepDefinition directly.
com.intellij.json.JsonParserDefinition.createParser(Project) method removed
: Instantiate com.intellij.json.JsonParser directly.
After porting JSON parsers to syntax-api, com.intellij.json.JsonParserDefinition.createParser(Project) that creates com.intellij.lang.PsiParser became obsolete.
com.intellij.json.JsonFileElementTypesKt#JSON_FILE has been refactored to use syntax-api to parse JSON files, but you it is still possible to instantiate the legacy com.intellij.json.JsonParser.
The createParser method can't be removed from the com.intellij.lang.ParserDefinition interface, so to prevent accidental usage of this method, it throws UnsupportedOperationException now.
These changes shouldn't affect plugins that implement ParserDefinition on their own or that call JsonParser directly in any other way.
However, if the plugin uses com.intellij.psi.tree.IFileElementType(JsonLanguage.INSTANCE) for non-JSON files, it can cause an exception to be thrown.
To avoid this, instantiate JsonParser directly or consider using com.intellij.platform.syntax.psi.SyntaxGrammarKitFileElementType(JsonLanguage.INSTANCE) instead.
Several modules were extracted from the core plugin to separate modules with their own classloaders.
This shouldn't affect binary compatibility, but an explicit dependency should be added in build.gradle.kts using bundledModule(<moduleName>) if a plugin uses API from these modules:
intellij.platform.tasksintellij.spellcheckerintellij.relaxng
icons.JavaUltimateIcons class moved to package com.intellij.java.ultimate.icons
: Update code usages and make sure your plugin depends on the Java plugin.
com.intellij.psi.xml.HtmlFileElementType.getHtmlStubVersion() method removed
: Use com.intellij.xml.HtmlLanguageStubVersionUtil.getHtmlStubVersion() instead.
com.intellij.openapi.actionSystem.ActionGroup.getChildren(AnActionEvent, ActionManager) method removed
: Avoid expanding an action group manually
com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(AnActionEvent, ActionManager) method removed
: Avoid expanding an action group manually or use DefaultActionGroup.getChildren(ActionManager)
com.intellij.diff.util.ThreeSide.map(Function) method parameter type changed from com.intellij.util.Function to kotlin.jvm.functions.Function1
: Use kotlin.jvm.functions.Function1 as a parameter.
The experimental com.intellij.webSymbols package together with all the classes and extension points has been renamed to com.intellij.polySymbols.
: The classes were renamed using pattern WebSymbol[s]?(.*) -> PolySymbol$1. Some classes have also been moved
to more specific packages.
: From other notable changes:
PolySymbolinterface no longer extendsPolySymbolScopePolySymbolinterface no longer contains documentation-specific properties (description,docUrl,sectionsanddefaultValue), insteadgetDocumentationTargetmethod should be overridden and the newPolySymbolDocumentationTarget.createmethod used to lazily build documentation for the symbolPolySymbolno longer hasabstract,requiredandvirtualproperties. They've been replaced by a more genericmodifierspropertyPolySymbolno longer haspropertiesproperty, which returned a map of properties. It's been replaced bygetmethod, which should return value for the requested property.PolySymbolno longer hasattributeValueproperty, insteadgetmethod should be overridden to return the value forcom.intellij.polySymbols.html.PROP_HTML_ATTRIBUTE_VALUEproperty- The
WebSymbolsQueryConfigurator$getScopehas been removed and replaced with a pattern-basedPolySymbolQueryScopeContributorAPI - The
PolySymbolDelegateandPsiSourcePolySymbolDelegateare interfaces now - All APIs have been refactored to use
PolySymbolQualifiedKindinstead of separate parametersnamespaceandkind - Builder patterns have been introduced in various classes, like
PolySymbolQueryExecutor,PolySymbolQueryParams, orPolySymbolDocumentationinstead of now removed Kotlin methods with default parameters. : Please note that the module is under active development and further major API changes are to be expected in the upcoming releases.
com.intellij.packageChecker.api.PackageDeclaration(Package) method parameter type changed from org.jetbrains.security.package.Package to com.intellij.packageChecker.model.Package
: Use com.intellij.packageChecker.model.Package as a parameter.
com.intellij.packageChecker.api.PackageDeclaration(Package, PsiElement, TextRange) method parameter type changed from org.jetbrains.security.package.Package to com.intellij.packageChecker.model.Package
: Use com.intellij.packageChecker.model.Package as a parameter.
com.intellij.packageChecker.api.PackageDeclaration.getPkg() method return type changed from org.jetbrains.security.package.Package to com.intellij.packageChecker.model.Package
: Update code usages.
com.intellij.packageChecker.PackagesInterner.intern(Package) method parameter type changed from org.jetbrains.security.package.Package to com.intellij.packageChecker.model.Package
: Use com.intellij.packageChecker.model.Package as a parameter.
com.intellij.packageChecker.PackagesInterner.intern(Package) method return type changed from org.jetbrains.security.package.Package to com.intellij.packageChecker.model.Package
: Update code usages.
com.intellij.lang.javascript.JSStubElementTypes.DEFINITION_EXPRESSION field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.XML_ATTRIBUTE field type changed from com.intellij.psi.stubs.IStubElementType to com.intellij.psi.tree.IElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.XML_JS_SCRIPT field type changed from com.intellij.psi.tree.IElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.ES6_EMBEDDED_CONTENT field type changed from com.intellij.psi.tree.IElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.VARIABLE field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.LITERAL_EXPRESSION field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.EMBEDDED_EXPRESSION field type changed from com.intellij.psi.tree.IElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.typescript.TypeScriptStubElementTypes.TYPESCRIPT_VARIABLE field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.ARRAY_LITERAL_EXPRESSION field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.CALL_EXPRESSION field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.ecmascript6.ES6StubElementTypes.FIELD_STATEMENT field type changed from com.intellij.lang.javascript.psi.JSStubElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.EMBEDDED_CONTENT field type changed from com.intellij.psi.tree.IElementType to com.intellij.lang.javascript.psi.JSElementType
: Recompile code usages.
org.jetbrains.vuejs.lang.expr.VueJSLanguage.Companion class removed
: Use org.jetbrains.vuejs.lang.expr.VueJSLanguage instead.
com.intellij.kubernetes.api.KubernetesApiProvider.getInstance(Project) method return type changed from com.intellij.kubernetes.api.KubernetesApiProvider to com.intellij.kubernetes.api.KubernetesApiProviderInterface
: Update code usages.
com.intellij.kubernetes.api.KubernetesApiProvider.Stateclass renamed to com.intellij.kubernetes.api.KubernetesApiProviderInterface.KubeconfigState
: Update code usages.
Code scheduled with SwingUtilities.invokeLater and SwingUtilities.invokeAndWait does not hold the write-intent lock
: Consider using an explicit wrapping with ReadAction.compute() or WriteAction.run(ThrowableRunnable<E>).
See .
Coroutines running under Dispatchers.Main do not hold the write-intent lock
: To restore the old behavior, consider using Dispatchers.EDT.
See .
com.intellij.psi.xml.XmlTokenType class now interface
: Use XmlTokenType constants directly.
Class com.intellij.psi.xml.XmlElementType no longer extends com.intellij.psi.xml.XmlTokenType
: Update code usages.
filetype.xml.description property removed from resource bundle messages.XmlPsiBundle
: Use property from resource bundle messages.XmlParserBundle
xml.parsing.closing.tag.matches.nothing property removed from resource bundle messages.XmlPsiBundle
: Use property from resource bundle messages.XmlParserBundle
xml.parsing.unclosed.attribute.value property removed from resource bundle messages.XmlPsiBundle
: Use property from resource bundle messages.XmlParserBundle
xml.parsing.unescaped.ampersand.or.nonterminated.character.entity.reference property removed from resource bundle messages.XmlPsiBundle
: Use property from resource bundle messages.XmlParserBundle
Kotlin UI DSL Version 1 must not be used from 2025.1 : Migrate to Kotlin UI DSL Version 2.
com.intellij.database.view.models package removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.database.schemaEditor.model.DeObject class removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.database.view.editors.DatabaseEditorContext class removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.database.view.editors.DatabaseTableEditor class removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.database.view.ui.DbRefactoringDialogHelper class removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.database.view.ui.DbTableDialog class removed
: Old table modification dialog was finally removed. Use com.intellij.database.actions.ddl.ModifyObjectAction.showDialog() for new dialog invocation.
com.intellij.openapi.externalSystem.service.internal.ExternalSystemProcessingManager class now interface
: Recompile code usages.
com.intellij.lang.javascript.service.JSAsyncLanguageServiceBase.JSLanguageServiceInfoReporter class moved to package com.intellij.lang.javascript.service
: Update all usages
com.intellij.lang.javascript.JSElementTypes.toModuleContentType(IElementType type) method removed
: Use com.intellij.lang.javascript.JSModuleContentType.toModuleContentType(IElementType type) method instead
com.intellij.lang.javascript.BaseJSTokenTypes class removed
: Use com.intellij.lang.javascript.JSTokenTypes class instead
com.intellij.lang.javascript.highlighting.TypeScriptHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights) constructor removed
: Use constructor without skipKeywordHighlights parameter
com.intellij.lang.javascript.dialects.ECMA6SyntaxHighlighterFactory.ECMA6SyntaxHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights) constructor removed
: Use constructor without skipKeywordHighlights parameter
com.intellij.lang.javascript.highlighting.JSHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights) constructor removed
: Use constructor without skipKeywordHighlights parameter
org.jetbrains.kotlin.KtFakeSourceElement class renamed to org.jetbrains.kotlin.KtFakePsiSourceElement
: Update code usages.
org.jetbrains.kotlin.ir.linkage.IrDeserializer.IrLinkerExtension class removed
: This class was removed from the Kotlin compiler and is no longer available.
org.jetbrains.kotlin.ir.builders.TranslationPluginContext class removed
: This class was removed from the Kotlin compiler and is no longer available.
org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsClassFinder.isKotlinInternalCompiledFile$default(ClsClassFinder, VirtualFile, byte[], int, Object) method removed
: Recompile code usages.
com.jetbrains.rd.ide.model.AddToGroupRuleModel class removed
: Remove all usages.
com.jetbrains.rd.ide.model.ActionConstraintModel class removed
: Remove all usages.
com.jediterm.terminal.model.TextBufferChangesListener.historyCleared() abstract method added
: Must be implemented.
com.intellij.terminal.ui.TerminalWidget.connectToSession(TerminalSession session) abstract method added
: Must be implemented.
com.intellij.terminal.ui.TerminalWidget.getSession() abstract method added
: Must be implemented.
com.intellij.terminal.ui.TerminalWidget.getTerminalSizeInitializedFuture() abstract method added
: Must be implemented.