IntelliJ API Watcher

Compatible with: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion GoLand DataGrip Rider MPS Android Studio
Feb 08, 2019
53 858
The plugin provides 'Find External Usages' action which allows developers to quickly find plugins which use IntelliJ platform classes, methods or fields and 'Check external usages' option in 'Commit Changes' dialog which checks that changes in IntelliJ platform classes don't break external plugins.

Note: it makes no sense to install this plugin if you don't contribute to IntelliJ IDEA sources. Also the plugin requires connection to a server which isn't accessible outside of JetBrains internal network.

Recent change notes


  • Added possibility to search for usages of string literals: action IDs, group IDs, keystrokes (shortcuts), mouse keystrokes, extensions. Just set the caret onto string literal you want to search for and invoke the Find External Usages action.
  • Fixed MP-1994: API Watcher complains that changing Rider will break Rider


  • Add number of plugins and total usages to Copy in "Most Used API" search result tree.


  • Fixed MP-1972: New methods with @JvmDefault annotation added to interfaces are wrongly reported as breaking changes


  • Fixed exclusion of methods with empty parameters in Find Most Used API Methods action. Just write '()' in the parameters field.
  • Display options of the Find Most Used API action in the tree


  • Added grouping by module in Find Most Used Classes/Methods/Fields tree
  • Implemented Find External Usages for packages that requests usages of all methods/fields/inner-classes belonging to classes from a selected package. It may be invoked if the caret is placed over the package declaration as usual Find External Usages action.


  • Fixed MP-1709: API Watcher shows usages of hidden static method.
  • Added new actions "Find Most Used API Classes/Methods/Fields", which may be found with Search Action. They request usage statistics from the indexing server and show N most popular classes/methods/fields respectively. You may find most used deprecated/experimental/undocumented API. There is the Copy action available on the resulting tree, which may be useful to share results. There are options to filter API to be processed by package. For methods exclusion by method name regexp is available.


  • MP-1665: Show a warning if user searches for external usages of compile-static constant


  • Add searching for external usages of keys from .properties files: for instance, IdeBundle.message() is invoked with keys from 'message.IdeBundle'. You can invoke 'Find external usages' action when navigated on a property, say 'title.warning' and see its usages in plugins. Also added pre-commit checks for changes in .properties files: the API Watcher would warn you if you delete an externally used .property key.


  • PR-245: Added pre-push IntelliJ API checks (they are enabled by default and can be disabled in the API Watcher settings)
  • PR-244: More support for working offline: added offline sessions
  • PR-522: Added an option to see bytecode of the class file containing the usages


  • Find External Usages from the Project View
  • Added check for Java to Kotlin source conversion
  • Added new button in the usages panel: "Open Source code".


  • Added pre-commit check option ("Check external usages") which checks risky IntelliJ API changes (e.g deleting methods, changing access modifiers) since last VCS revision. It checks if there were any usages in external plugins. In case there were some usages, pretty informative usages panel will be shown. Otherwise commit will be passed as always.