[Feature]: Add Refresh Support for Installed Canvas Apps
Author: fattanehtCreated Sep 10, 2026Updated Sep 17, 2026
Labelsenhancementready-for-dev
Problem or Motivation
Canvas Apps installed from a local path are copied into the Agent Server’s installed extensions directory. When the source files change during development, Canvas continues using the previously installed bundle.
As a result, developers must uninstall, reinstall, and re-enable the App after every change. This makes the local development workflow unnecessarily slow.
A Refresh action should reload and validate the App from its original source, preserve its enabled state, and reactivate the updated bundle without requiring a full uninstall and reinstall.
Desired Behavior
Each installed Canvas App should provide a Refresh action that:
- Reloads the App from its original local or Git source.
- Revalidates
canvas-extension.jsonand the entrypoint. - Preserves the App’s enabled or disabled state.
- Disposes the currently active instance and loads the updated bundle when enabled.
- Reloads the bundle even when its manifest version has not changed.
- Displays a clear success message or validation error.
Acceptance Criteria
- Every installed Canvas App has a visible Refresh action.
- Refresh works for both backend-local paths and Git sources.
- The App is reloaded from its original installation source.
- The manifest and entrypoint are validated before replacing the installed version.
- A failed refresh leaves the currently installed App unchanged.
- The App’s enabled or disabled state is preserved.
- An enabled App is disposed and reactivated with the updated bundle.
- Changes are loaded even when the manifest version remains unchanged.
- Canvas displays clear success and failure feedback.
- Automated tests cover successful refresh, validation failure, state preservation, and runtime reactivation.
Alternatives Considered
No response
Additional Context
No response
Source: OpenHands/OpenHands