IntelliJ Platform SDK DevGuide

Edit page

Dynamic Plugins

Starting with 2020.1 release, the ability to install, update and uninstall plugins without restarting the IDE is available in the IntelliJ Platform. During plugin development, this also allows avoiding restarts of the IDE Development Instance after every code change.

For a plugin to support this, all restrictions listed below must be met. To verify a plugin locally, run Plugin DevKit | Plugin descriptor | Plugin.xml dynamic plugin verification inspection on all plugin descriptor files (required plugin.xml as well as any additional files).

For plugins hosted on the JetBrains plugin repository the built-in Plugin Verifier will run these checks automatically.

No use of Components

No Components must be used; existing ones must be migrated to services, extensions or listeners.

Action Group requires ID

All <group>s must declare a unique id.

Use only dynamic Extensions

All extensions, whether defined in the platform itself or coming from other plugins, must be marked as dynamic (see next paragraph).

Mark Extension Points as dynamic

All extension points provided by the plugin must adhere to specific usage rules and then be declared ready for dynamic use explicitly.

Configurables depending on Extension Points

Any Configurable which depends on dynamic extension points must implement Configurable.WithEpDependencies.

No use of service overrides

Application, project and module services declared with overrides="true" are not allowed.

Plugin Load/Unload Events

Register com.intellij.ide.plugins.DynamicPluginListener listener to receive updates on plugin load/unload events.

Last modified: 18 March 2020