diff --git a/packages/web_ui/src/components/PluginsPage.tsx b/packages/web_ui/src/components/PluginsPage.tsx
index 399a92de..ddf80c29 100644
--- a/packages/web_ui/src/components/PluginsPage.tsx
+++ b/packages/web_ui/src/components/PluginsPage.tsx
@@ -88,6 +88,14 @@ export default function PluginsPage() {
if (!plugin.meta.enabled) {
return <> Disabled on controller>;
}
+ // Plugins are loaded once when the page starts, so one the
+ // controller has picked up since then was never attempted
+ // rather than attempted and failed. A plugin the controller
+ // cannot serve at all is excluded before it gets that far,
+ // and is a real error.
+ if (!plugin.meta.web.error && !control.pluginInfos.has(plugin.meta.name)) {
+ return <> Reload page to load>;
+ }
if (!plugin.package) {
return <> Error loading module>;
}