Incompatible Changes in IntelliJ Platform and Plugins API 2025.*
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.
2025.3
IntelliJ Platform 2025.3
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.Storagecannot 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.intelliLangplugin requires Gradle dependency on bundled moduleintellij.platform.langInjection Change
bundledPlugin("org.intellij.intelliLang")tobundledModule("intellij.platform.langInjection")in Gradle build script.
2025.2
IntelliJ Platform 2025.2
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.JavaUltimateIconsclass moved to packagecom.intellij.java.ultimate.iconsUpdate code usages and make sure your plugin depends on the Java plugin.
com.intellij.psi.xml.HtmlFileElementType.getHtmlStubVersion()method removedUse
com.intellij.xml.HtmlLanguageStubVersionUtil.getHtmlStubVersion()instead.com.intellij.openapi.actionSystem.ActionGroup.getChildren(AnActionEvent, ActionManager)method removedAvoid expanding an action group manually
com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(AnActionEvent, ActionManager)method removedAvoid expanding an action group manually or use
DefaultActionGroup.getChildren(ActionManager)com.intellij.diff.util.ThreeSide.map(Function)method parameter type changed fromcom.intellij.util.Functiontokotlin.jvm.functions.Function1Use
kotlin.jvm.functions.Function1as a parameter.- The experimental
com.intellij.webSymbolspackage together with all the classes and extension points has been renamed tocom.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_VALUEpropertyThe
WebSymbolsQueryConfigurator$getScopehas been removed and replaced with a pattern-basedPolySymbolQueryScopeContributorAPIThe
PolySymbolDelegateandPsiSourcePolySymbolDelegateare interfaces nowAll APIs have been refactored to use
PolySymbolQualifiedKindinstead of separate parametersnamespaceandkindBuilder 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.
Package Checker 2025.2
com.intellij.packageChecker.api.PackageDeclaration(Package)method parameter type changed fromorg.jetbrains.security.package.Packagetocom.intellij.packageChecker.model.PackageUse
com.intellij.packageChecker.model.Packageas a parameter.com.intellij.packageChecker.api.PackageDeclaration(Package, PsiElement, TextRange)method parameter type changed fromorg.jetbrains.security.package.Packagetocom.intellij.packageChecker.model.PackageUse
com.intellij.packageChecker.model.Packageas a parameter.com.intellij.packageChecker.api.PackageDeclaration.getPkg()method return type changed fromorg.jetbrains.security.package.Packagetocom.intellij.packageChecker.model.PackageUpdate code usages.
com.intellij.packageChecker.PackagesInterner.intern(Package)method parameter type changed fromorg.jetbrains.security.package.Packagetocom.intellij.packageChecker.model.PackageUse
com.intellij.packageChecker.model.Packageas a parameter.com.intellij.packageChecker.PackagesInterner.intern(Package)method return type changed fromorg.jetbrains.security.package.Packagetocom.intellij.packageChecker.model.PackageUpdate code usages.
JavaScript and TypeScript Plugin 2025.2
com.intellij.lang.javascript.JSStubElementTypes.DEFINITION_EXPRESSIONfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.XML_ATTRIBUTEfield type changed fromcom.intellij.psi.stubs.IStubElementTypetocom.intellij.psi.tree.IElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.XML_JS_SCRIPTfield type changed fromcom.intellij.psi.tree.IElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.ES6_EMBEDDED_CONTENTfield type changed fromcom.intellij.psi.tree.IElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.VARIABLEfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.LITERAL_EXPRESSIONfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.EMBEDDED_EXPRESSIONfield type changed fromcom.intellij.psi.tree.IElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.typescript.TypeScriptStubElementTypes.TYPESCRIPT_VARIABLEfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.ARRAY_LITERAL_EXPRESSIONfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.CALL_EXPRESSIONfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.ecmascript6.ES6StubElementTypes.FIELD_STATEMENTfield type changed fromcom.intellij.lang.javascript.psi.JSStubElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
com.intellij.lang.javascript.JSStubElementTypes.EMBEDDED_CONTENTfield type changed fromcom.intellij.psi.tree.IElementTypetocom.intellij.lang.javascript.psi.JSElementTypeRecompile code usages.
org.jetbrains.vuejs.lang.expr.VueJSLanguage.Companionclass removedUse
org.jetbrains.vuejs.lang.expr.VueJSLanguageinstead.
Kubernetes Plugin 2025.2
com.intellij.kubernetes.api.KubernetesApiProvider.getInstance(Project)method return type changed fromcom.intellij.kubernetes.api.KubernetesApiProvidertocom.intellij.kubernetes.api.KubernetesApiProviderInterfaceUpdate code usages.
com.intellij.kubernetes.api.KubernetesApiProvider.Stateclass renamed tocom.intellij.kubernetes.api.KubernetesApiProviderInterface.KubeconfigStateUpdate code usages.
2025.1
IntelliJ Platform 2025.1
- Code scheduled with
SwingUtilities.invokeLaterandSwingUtilities.invokeAndWaitdoes not hold the write-intent lock Consider using an explicit wrapping with
ReadAction.compute()orWriteAction.run(ThrowableRunnable<E>). See Threading Model.- Coroutines running under
Dispatchers.Maindo not hold the write-intent lock To restore the old behavior, consider using
Dispatchers.EDT. See Threading Model.com.intellij.psi.xml.XmlTokenTypeclass now interfaceUse
XmlTokenTypeconstants directly.- Class
com.intellij.psi.xml.XmlElementTypeno longer extendscom.intellij.psi.xml.XmlTokenType Update code usages.
filetype.xml.descriptionproperty removed from resource bundlemessages.XmlPsiBundleUse property from resource bundle
messages.XmlParserBundlexml.parsing.closing.tag.matches.nothingproperty removed from resource bundlemessages.XmlPsiBundleUse property from resource bundle
messages.XmlParserBundlexml.parsing.unclosed.attribute.valueproperty removed from resource bundlemessages.XmlPsiBundleUse property from resource bundle
messages.XmlParserBundlexml.parsing.unescaped.ampersand.or.nonterminated.character.entity.referenceproperty removed from resource bundlemessages.XmlPsiBundleUse property from resource bundle
messages.XmlParserBundle- Kotlin UI DSL Version 1 must not be used from 2025.1
Database Plugin 2025.1
com.intellij.database.view.modelspackage removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.com.intellij.database.schemaEditor.model.DeObjectclass removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.com.intellij.database.view.editors.DatabaseEditorContextclass removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.com.intellij.database.view.editors.DatabaseTableEditorclass removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.com.intellij.database.view.ui.DbRefactoringDialogHelperclass removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.com.intellij.database.view.ui.DbTableDialogclass removedOld table modification dialog was finally removed. Use
com.intellij.database.actions.ddl.ModifyObjectAction.showDialog()for new dialog invocation.
External System 2025.1
com.intellij.openapi.externalSystem.service.internal.ExternalSystemProcessingManagerclass now interfaceRecompile code usages.
JavaScript and TypeScript Plugin 2025.1
com.intellij.lang.javascript.service.JSAsyncLanguageServiceBase.JSLanguageServiceInfoReporterclass moved to packagecom.intellij.lang.javascript.serviceUpdate all usages
com.intellij.lang.javascript.JSElementTypes.toModuleContentType(IElementType type)method removedUse
com.intellij.lang.javascript.JSModuleContentType.toModuleContentType(IElementType type)method insteadcom.intellij.lang.javascript.BaseJSTokenTypesclass removedUse
com.intellij.lang.javascript.JSTokenTypesclass insteadcom.intellij.lang.javascript.highlighting.TypeScriptHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights)constructor removedUse constructor without
skipKeywordHighlightsparametercom.intellij.lang.javascript.dialects.ECMA6SyntaxHighlighterFactory.ECMA6SyntaxHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights)constructor removedUse constructor without
skipKeywordHighlightsparametercom.intellij.lang.javascript.highlighting.JSHighlighter(DialectOptionHolder dialectOptionsHolder, boolean skipKeywordHighlights)constructor removedUse constructor without
skipKeywordHighlightsparameter
Kotlin Plugin 2025.1
org.jetbrains.kotlin.KtFakeSourceElementclass renamed toorg.jetbrains.kotlin.KtFakePsiSourceElementUpdate code usages.
org.jetbrains.kotlin.ir.linkage.IrDeserializer.IrLinkerExtensionclass removedThis class was removed from the Kotlin compiler and is no longer available.
org.jetbrains.kotlin.ir.builders.TranslationPluginContextclass removedThis 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 removedRecompile code usages.
Remote Development 2025.1
com.jetbrains.rd.ide.model.AddToGroupRuleModelclass removedRemove all usages.
com.jetbrains.rd.ide.model.ActionConstraintModelclass removedRemove all usages.
Terminal Plugin 2025.1
com.jediterm.terminal.model.TextBufferChangesListener.historyCleared()abstract method addedMust be implemented.
com.intellij.terminal.ui.TerminalWidget.connectToSession(TerminalSession session)abstract method addedMust be implemented.
com.intellij.terminal.ui.TerminalWidget.getSession()abstract method addedMust be implemented.
com.intellij.terminal.ui.TerminalWidget.getTerminalSizeInitializedFuture()abstract method addedMust be implemented.