See Incompatible Changes in IntelliJ Platform and Plugins API for known breaking changes.
For API annotated with @ApiStatus.Internal
, see Internal API Migration for more details and replacements.
See also Targeting Multiple IDE Versions.
Plugin VerifierPlugin Verifier checks the binary compatibility between IntelliJ-based IDE builds and IntelliJ Platform plugins.
Using with GradleIntegration in Gradle build is available out-of-the box via a dedicated Gradle task.
Integration with Continuous Integration (CI) environments is as simple as running the corresponding Gradle task as another quality check step. See the IntelliJ Platform Plugin Template GitHub workflow configuration file as a reference.
Navigation in the IDEReported places are highlighted and linked to the plugin's source code in the Gradle tool window output.
JetBrains MarketplaceCompatibility with newer IDEs can easily be verified for plugins hosted on the JetBrains Marketplace using the built-in Plugin Verifier.
Other UsagesIf a plugin is hosted on GitHub and the project is not using Gradle, consider using third-party GitHub Actions IntelliJ Platform Plugin Verifier or IntelliJ Plugin Verifier.
In all other cases, intellij-plugin-verifier can be used standalone as well.
IDE SupportThe status of an API is marked using various annotations defined in ApiStatus
, please see their doc for more details. Use highlighting available via dedicated IDE inspections as noted below to prevent problems as early as possible.
@ApiStatus.Experimental
is considered unstable and may break or be removed.
@ApiStatus.Internal
must not be used by plugins, see Internal API Migration for more details and replacements.
@ApiStatus.ScheduledForRemoval
denotes an API that will be removed in a future version.
Inspection: JVM languages | Unstable API Usage and JVM languages | Unstable type is used in signature
Obsolete APIAPI annotated with @ApiStatus.Obsolete
has been replaced with a better alternative and must not be used for new code.
Inspection: Plugin DevKit | Code | Usages of ApiStatus.@Obsolete
Non-Extendable APIAPI annotated with @ApiStatus.NonExtendable
must not be extended, implemented, or overridden.
Inspection: JVM languages | Class, interface, or method should not be extended
Override-Only APIAPI annotated with @ApiStatus.OverrideOnly
must not be called directly by the client.
Inspection: JVM languages | Method can only be overridden
plugin.xmlUsage of Extension Points which are deprecated or annotated with @ApiStatus.Experimental
or @ApiStatus.Internal
is also highlighted in plugin.xml files.
Inspection: Plugin DevKit | Plugin descriptor | Plugin.xml validity
API CompatibilityA plugin might specify a compatibility range including releases where some API is not available. Under the hood, it uses an artifact containing generated data via @ApiStatus.AvailableSince
, which is automatically attached to the project.
Inspection: Plugin DevKit | Code | Usage of IntelliJ API not available in older IDEs
If values are not specified directly in plugin.xml (e.g., when providing values via patchPluginXml
Gradle task (Reference: 2.x, 1.x)), they must be set explicitly in the inspection's settings.
24 April 2025
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4