Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/3473 This diff is the first one which addresses https://github.com/facebook/flipper/issues/3320. In this diff we are making a part of the code used for internal Flipper plugin distribution in Meta also available publicly for re-using in other orgs. Some explanation on how plugin installation and updates is designed now: 1) We periodically poll for plugins available for download. API for retrieving available plugins list is abstracted and will be different between public and fb versions, however all other logic is re-used. 2) In addition to "Enabled" and "Disabled" plugins in the left panel Flipper shows "Detected in App" list. Plugins in this list are those which are known compatible with the currently selected device/app, but not yet installed. 3) User can install any of "Detected in App" plugins by clicking to "Download and install" button near them in the left panel similarly to enabling plugins in "Disabled" list. 4) If we detect that for some installed plugin we have a newer version available for download - we download it silently and store on disk. 5) If the plugin for which we have new downloaded version is disabled - we update it silently without any notifications by loading new version from the disk and unloading the previous version from cache. 6) If the plugin for which we have new downloaded version is enabled then we avoid updating it automatically (because we need to reset plugin state in such case) and instead show notification on top of the plugin and ask user to reload it to apply new version. On reloading we reset the plugin state. 7) On Flipper startup we always update all plugins to their latest versions available on the disk. Reviewed By: aigoncharov Differential Revision: D34380308 fbshipit-source-id: a94d724e42aa5ef78445af266fcd4c424226a703
flipper-ui-core (TBD)
Flipper's UI, agnostic of Electron vs Browser.