Keeping your plugin compatible and working with latest IDE versions
We routinely encounter problems with plugins that can be avoided by following these guidelines. Please make sure to follow all these steps at all times to prevent your plugin being rejected or its compatibility limited on JetBrains Marketplace.
If there’s any problem or “strange” result, please ask here upfront. Thanks!
- Always use the latest IntelliJ IDEA version (ideally even latest EAP) available to develop the plugin
- Upgrade Gradle and IntelliJ Platform Gradle Plugin versions to the latest available. Always.
- Keep all inspections from Plugin DevKit group enabled. DO NOT IGNORE RESULTS - some of these inspections actually highlight “will break in a later IDE version at runtime” problems. Run Code|Inspect Code… regularly. Or even better, use some static code analysis on your CI (e.g. Qodana: Static Code Analysis Tool by JetBrains) to monitor the quality constantly.
- Before submitting your plugin (or uploading new version) make sure to run Plugin Verifier locally and related inspections in IDE, see Verifying Plugin Compatibility | IntelliJ Platform Plugin SDK. New plugins using Internal API will be rejected by default, please see Internal API Migration | IntelliJ Platform Plugin SDK. Existing plugins should work hard to remove such Internal API usages.
- Enable notifications on JetBrains Marketplace to receive Plugin Verifier results via e-mail (useful for checking compatibility with next/EAP versions if marked as compatible). Plugin notification settings | JetBrains Marketplace Documentation
- Please always consider points made in “Plugin User Experience (UX)” Plugin User Experience (UX) | IntelliJ Platform Plugin SDK and make sure description/presentation on JetBrains Marketplace follows all guidelines You will be redirected shortly
- Make sure to stay up-to-date with “Notable API Changes” to adapt and improve your plugin by using newer/replacement API Notable Changes and Features in IntelliJ Platform and Plugins API | IntelliJ Platform Plugin SDK
Thanks