IntelliJ Platform Plugin SDK Help

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 BulkFileListenerBackgroundable marker interface and subscribe to the VirtualFileManager.VFS_CHANGES_BG message topic (instead of VFS_CHANGES). Async listeners can be registered via addAsyncFileListenerBackgroundable() or the com.intellij.vfs.asyncListenerBackgroundable extension point. Migrate thread-safe listeners without UI dependencies from VFS_CHANGES/addAsyncFileListener().

New LSP API features

Language Server Protocol support gains Range Formatting (textDocument/rangeFormatting), Code Lens (textDocument/codeLens), and Optimize Imports (textDocument/codeAction with source.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 error

Waiting 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 a LOG.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(), and runReadAction() 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 {} or smartReadAction {} in Kotlin, or ReadAction.nonBlocking().submit()/.executeSynchronously() in Java. As a last resort, ReadAction.computeBlocking() and runReadActionBlocking() are available but should only be used under modal progress.

AnActionEvent.coroutineScope added

AnActionEvent now exposes a coroutineScope property providing convenient access to a CoroutineScope within actionPerformed, while maintaining synchronous EDT execution contracts.

Terminal Plugin 2026.1

TerminalUtil.hasRunningCommands() must not be called on EDT

TerminalUtil.hasRunningCommands() now asserts it is not called on the Event Dispatch Thread via ThreadingAssertions.assertBackgroundThread, and logs a LOG.error if 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.

17 April 2026