Notable Changes in IntelliJ Platform and Plugins API 2026.*
Early Access Program (EAP) releases of upcoming versions are available here.
2026.1
IntelliJ Platform 2026.1
- Background-capable VFS listeners
New APIs allow VFS listener callbacks to run off the Event Dispatch Thread (EDT), reducing UI freezes during heavy file operations. Bulk listeners can implement the
BulkFileListenerBackgroundablemarker interface and subscribe to theVirtualFileManager.VFS_CHANGES_BGmessage topic (instead ofVFS_CHANGES). Async listeners can be registered viaaddAsyncFileListenerBackgroundable()or thecom.intellij.vfs.asyncListenerBackgroundableextension point. Migrate thread-safe listeners without UI dependencies fromVFS_CHANGES/addAsyncFileListener().- New LSP API features
Language Server Protocol support gains Range Formatting (
textDocument/rangeFormatting), Code Lens (textDocument/codeLens), and Optimize Imports (textDocument/codeActionwithsource.organizeImports). ``Also includes a major rewrite of LSP highlighting for improved performance. See Language Server Protocol (LSP).OSProcessHandler.waitFor()on EDT or under read lock logs errorWaiting for an external process via
OSProcessHandler.waitFor()on the Event Dispatch Thread or while holding a read lock is now prohibited for all users and logs aLOG.error. This check has been previously enabled in internal mode since 2019. Move process waiting off the EDT and outside of read actions, e.g., into a background thread or a coroutine.- Non-cancellable read action APIs deprecated
ReadAction.compute(),ReadAction.run(), andrunReadAction()are deprecated because long-running non-cancellable read actions on background threads can block write actions and cause UI freezes. Migrate to cancellable coroutine-based APIs:readAction {}orsmartReadAction {}in Kotlin, orReadAction.nonBlocking().submit()/.executeSynchronously()in Java. As a last resort,ReadAction.computeBlocking()andrunReadActionBlocking()are available but should only be used under modal progress.AnActionEvent.coroutineScopeaddedAnActionEventnow exposes acoroutineScopeproperty providing convenient access to aCoroutineScopewithinactionPerformed, while maintaining synchronous EDT execution contracts.
Terminal Plugin 2026.1
TerminalUtil.hasRunningCommands()must not be called on EDTTerminalUtil.hasRunningCommands()now asserts it is not called on the Event Dispatch Thread viaThreadingAssertions.assertBackgroundThread, and logs aLOG.errorif violated. Calling this method on the EDT can cause UI freezes because it queries external process state. Move calls to a background thread or a coroutine.