Incompatible Changes in IntelliJ Platform and Plugins API 2026.*
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.
2026.3
IntelliJ Platform 2026.3
com.intellij.openapi.projectRoots.Sdkinterface now extendscom.intellij.openapi.util.UserDataHolderExand inherits its abstract methodputUserDataIfAbsent(@NotNull Key<T> key, @NotNull T value)Do not implement
Sdk: it is a non-extendable interface.com.intellij.openapi.projectRoots.Sdkinterface now extendscom.intellij.openapi.util.UserDataHolderExand inherits its abstract methodreplace(@NotNull Key<T> key, @Nullable T oldValue, @Nullable T newValue)Do not implement
Sdk: it is a non-extendable interface.
Kotlin UI DSL 1.0 Removal
Kotlin UI DSL Version 1 (the com.intellij.ui.layout DSL entry points) has been completely removed. Any access to the removed classes will lead to compilation or runtime errors. The migration should be done according to the Kotlin UI DSL Version 2 migration guide.
com.intellij.ui.layout.BaseBuilderclass removedcom.intellij.ui.layout.CCFlagsclass removedcom.intellij.ui.layout.Cellclass removedcom.intellij.ui.layout.CellBuilderclass removedcom.intellij.ui.layout.CellMarkerclass removedcom.intellij.ui.layout.LCFlagsclass removedcom.intellij.ui.layout.LayoutBuilderclass removedcom.intellij.ui.layout.LayoutBuilderImplclass removedcom.intellij.ui.layout.LayoutImplKtclass removedcom.intellij.ui.layout.LayoutKtclass removedcom.intellij.ui.layout.Rowclass removedcom.intellij.ui.layout.RowBuilderclass removed
2026.2
IntelliJ Platform 2026.2
PolySymbols 2026.2
com.intellij.polySymbols.search.PsiSourcedPolySymbolclass renamed tocom.intellij.polySymbols.search.PsiLinkedPolySymbolUse
PsiLinkedPolySymbolinstead. Additionally, thesourceproperty was renamed tolinkedElement.com.intellij.polySymbols.utils.PsiSourcedPolySymbolDelegateclass renamed tocom.intellij.polySymbols.utils.PsiLinkedPolySymbolDelegateUse
PsiLinkedPolySymbolDelegateinstead.com.intellij.polySymbols.refactoring.PsiSourcedPolySymbolRefactoringHelperclass renamed tocom.intellij.polySymbols.refactoring.PsiLinkedPolySymbolRefactoringHelperUse
PsiLinkedPolySymbolRefactoringHelperinstead.com.intellij.polySymbols.refactoring.PsiSourcedPolySymbolRenameHandlerclass renamed tocom.intellij.polySymbols.refactoring.PsiLinkedPolySymbolRenameHandlerUse
PsiLinkedPolySymbolRenameHandlerinstead.com.intellij.polySymbols.search.PsiSourcedPolySymbolProviderclass renamed tocom.intellij.polySymbols.search.PsiLinkedPolySymbolProviderUse
PsiLinkedPolySymbolProviderinstead.com.intellij.polySymbols.search.PsiSourcedPolySymbolReferenceclass renamed tocom.intellij.polySymbols.search.PsiLinkedPolySymbolReferenceUse
PsiLinkedPolySymbolReferenceinstead.com.intellij.polySymbols.search.PsiSourcedPolySymbolReferenceSearcherclass renamed tocom.intellij.polySymbols.search.PsiLinkedPolySymbolReferenceSearcherUse
PsiLinkedPolySymbolReferenceSearcherinstead.com.intellij.polySymbols.search.PsiSourcedPolySymbolRequestResultProcessorclass renamed tocom.intellij.polySymbols.search.PsiLinkedPolySymbolRequestResultProcessorUse
PsiLinkedPolySymbolRequestResultProcessorinstead.
Kotlin Plugin 2026.2
K1 Plugin Removal
K1 Plugin was completely removed from the distribution. Any access to its classes or to the classes of the K1 Compiler Frontend would lead to runtime errors. The migration should be done according to the migration guide.
org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclarationclass removedorg.jetbrains.kotlin.asJava.classes.KtLightClassImplclass removedorg.jetbrains.kotlin.asJava.classes.KtUltraLightClassclass removedorg.jetbrains.kotlin.asJava.elements.KtLightMemberImplclass removedorg.jetbrains.kotlin.asJava.elements.KtLightPsiLiteralclass removedorg.jetbrains.kotlin.idea.actions.generate.KotlinGenerateMemberActionBaseclass removedorg.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.ModuleSourceInfoclass removedorg.jetbrains.kotlin.idea.base.utils.fqname.FqNameUtilKtclass removedorg.jetbrains.kotlin.idea.caches.project.MultiplatformUtilKtclass removedorg.jetbrains.kotlin.idea.caches.resolve.util.JavaResolutionUtilsclass removedorg.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIdeclass removedorg.jetbrains.kotlin.idea.codeInsight.KtFunctionPsiElementCellRendererclass removedorg.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelperclass removedorg.jetbrains.kotlin.idea.codeInsight.postfix.KtPostfixTemplateProviderKtclass removedorg.jetbrains.kotlin.idea.core.ShortenReferencesclass removedorg.jetbrains.kotlin.idea.core.UtilsKtclass removedorg.jetbrains.kotlin.idea.core.overrideImplement.GenerateMembersHandlerclass removedorg.jetbrains.kotlin.idea.core.overrideImplement.GenerateMembersHandler.Companionclass removedorg.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandlerclass removedorg.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObjectclass removedorg.jetbrains.kotlin.idea.gradleJava.compilerPlugin.AbstractCompilerPluginGradleImportHandlerclass removedorg.jetbrains.kotlin.idea.imports.ImportsUtilsclass removedorg.jetbrains.kotlin.idea.inspections.IntentionBasedInspectionKtclass removedorg.jetbrains.kotlin.idea.quickfix.KotlinIntentionActionsFactoryclass removedorg.jetbrains.kotlin.idea.quickfix.KotlinQuickFixActionclass removedorg.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactoryclass removedorg.jetbrains.kotlin.idea.quickfix.QuickFixContributorclass removedorg.jetbrains.kotlin.idea.quickfix.QuickFixesclass removedorg.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBaseclass removedorg.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKtclass removedorg.jetbrains.kotlin.idea.refactoring.changeSignature.ChangeSignatureUtilsKtclass removedorg.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeInfoclass removedorg.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeSignatureDataclass removedorg.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptorclass removedorg.jetbrains.kotlin.idea.refactoring.memberInfo.MemberInfoUtilsKtclass removedorg.jetbrains.kotlin.idea.refactoring.safeDelete.KotlinSafeDeleteProcessorclass removedorg.jetbrains.kotlin.idea.search.usagesSearch.SearchHelpersKtclass removedorg.jetbrains.kotlin.idea.search.usagesSearch.UtilsKtclass removedorg.jetbrains.kotlin.idea.util.CallTypeAndReceiverclass removedorg.jetbrains.kotlin.idea.util.IdeDescriptorRenderersclass removedorg.jetbrains.kotlin.idea.util.ImportInsertHelperclass removedorg.jetbrains.kotlin.idea.util.ImportInsertHelper.Companionclass removedorg.jetbrains.kotlin.idea.util.ModifierListModifactorKtclass removedorg.jetbrains.kotlin.idea.util.TypeUtilsclass removedorg.jetbrains.kotlin.j2k.UtilsKtclass removedorg.jetbrains.kotlin.resolve.lazy.BodyResolveModeclass removedorg.jetbrains.kotlin.util.DescriptorUtilsKtclass removedorg.jetbrains.kotlin.asJava.KotlinAsJavaSupport.getLightClass(KtClassOrObject)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.analyze$default(KtElement, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.analyze(KtElement, BodyResolveMode)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.getResolutionFacade(KtElement)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveImportReference(KtFile, FqName)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToCall$default(KtElement, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToDescriptorIfAny$default(KtClassOrObject, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToDescriptorIfAny$default(KtDeclaration, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToDescriptorIfAny$default(KtNamedFunction, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToDescriptorIfAny$default(KtProperty, BodyResolveMode, int, Object)method removedorg.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils.resolveToDescriptorIfAny(KtDeclaration, BodyResolveMode)method removedorg.jetbrains.kotlin.idea.util.CommentSaver.restore$default(CommentSaver, PsiElement, boolean, int, Object)method removedorg.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsKt.getJetTypeFqName(KotlinType, boolean)method removedorg.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsKt.getNameIfStandardType(KotlinType)method removed
CLion 2026.2
The C/C++ language engine based on com.intellij.cidr.lang (CLion Classic) is no longer bundled with CLion. CLion Nova, based on the ReSharper C++ engine, is now the default and the only bundled C/C++ engine. The classic APIs remain available via the C/C++ Language Support via Classic Engine plugin (ID com.intellij.cidr.lang). Plugins depending on these APIs must declare a dependency on the Marketplace plugin using plugin("com.intellij.cidr.lang", "<version>"). See C/C++ Language Engine: Nova and Classic for setup details and CLion Nova API replacements.
com.jetbrains.cidr.lang.OCFileTypeclass removedThe Classic C/C++ engine is no longer bundled. Depend on the C/C++ Language Support via Classic Engine plugin to keep using it, or migrate to
com.jetbrains.rider.cpp.fileType.CppFileType(CLion Nova).com.jetbrains.cidr.lang.OCLanguageclass removedThe Classic C/C++ engine is no longer bundled. Depend on the C/C++ Language Support via Classic Engine plugin to keep using it, or migrate to
com.jetbrains.rider.cpp.fileType.CppLanguage(CLion Nova).com.jetbrains.cidr.lang.psi.OCFileclass removedDepend on the C/C++ Language Support via Classic Engine plugin to keep using it, or use
com.jetbrains.rider.cpp.fileType.psi.CppFile(CLion Nova) for file-level access only.
CLion Nova has no frontend PSI, so the remaining com.jetbrains.cidr.lang classes — PSI, symbols, types, and resolve/references — have no replacement; depend on the Classic Engine plugin to keep using them.
2026.1
IntelliJ Platform 2026.1
- AWT input event handlers no longer run under write-intent lock
Custom input handlers (
KeyListener,MouseAdapter, etc.) no longer execute under the write-intent lock. If PSI or other write-intent-protected data needs to be accessed in these handlers, explicitly acquire a read action usingReadAction.nonBlocking().submit()or coroutine-based equivalents such asreadAction {}.
Language Server Protocol (LSP) 2026.1.4
In 2026.1.4, key LSP classes were renamed. LspServerManager was renamed to LspClientManager and the service is registered only under the new interface. Plugins retrieving LspServerManager via project.service<LspServerManager>() or similar methods will get null. Use LspClientManager.getInstance(project) instead, or LspServerManager.getInstance(project) to support versions before 2026.4.1.
PolySymbols 2026.1
com.intellij.polySymbols.PolySymbol.getOrigin()method removedThe property was confusing and in many cases was not used. Its functionality is replaced by:
frameworkproperty - providecom.intellij.polySymbols.html.HtmlFrameworkSymbolsSupport.HtmlFrameworkIdPropertyvalue throughPolySymbol.Propertymechanism
defaultIconproperty - implementiconproperty and returntrueforPolySymbol.DocHideIconPropertythroughPolySymbol.Propertymechanism
typeSupportproperty - providecom.intellij.polySymbols.utils.PolySymbolTypeSupport.TypeSupportPropertyvalue throughPolySymbol.Propertymechanism
com.intellij.polySymbols.PolySymbolQualifiedKindclass renamed tocom.intellij.polySymbols.PolySymbolKindadditionally
nameproperty was renamed tokindNameandqualifiedKindproperties and parameters across the package were renamed tokind
The following classes no longer implement PsiModificationTracker (this requirement was confusing):
Implementing PsiModificationTracker was replaced by modificationTracker property for the following classes:
Java Plugin 2026.1
The Java plugin has been split into several modules with their own classloaders. This shouldn't affect plugins that use standard <depends>com.intellij.java</depends> dependency. If a plugin depends on specific Java plugin modules directly, the dependencies should be updated to reference the new module names.