Skip to content

# Lens v4 to v5 Extension Migration Notes

- Lens v5 inspects the version of the extension to ensure it is compatible. The `package.json` for your extension must have an `"engines"` field specifying the lens version that your extension is targeted for, e.g:

          "engines": {
              "lens": "^5.0.0-beta.7"
          },

  Note that Lens v5 supports all the range semantics that semver provides.
- Types and components have been reorganized, many have been grouped by process (`Main` and `Renderer`) plus those not specific to a process (`Common`). For example the `LensMainExtension` class is now referred to by `Main.LensExtension`. See the API Reference for the new organization.
- The `globalPageMenus` field of the Renderer extension class (now `Renderer.LensExtension`) is removed. Global pages can still be made accessible via the application menus and the status bar, as well as from the newly added Welcome menu.
- The `clusterFeatures` field of the Renderer extension class (now `Renderer.LensExtension`) is removed. Cluster features can still be implemented but Lens no longer dictates how a feature's lifecycle (install/upgrade/uninstall) is managed. `Renderer.K8sApi.ResourceStack` provides the functionality to input and apply kubernetes resources to a cluster. It is up to the extension developer to manage the lifecycle. It could be applied automatically to a cluster by the extension or the end-user could be expected to install it, etc. from the cluster Settings page.
- Lens v5 now relies on mobx 6 for state management. Extensions that use mobx will need to be modified to work with mobx 6. See Migrating from Mobx 4/5 for specific details.

For an example of an existing extension that is compatible with Lens v5 see the Lens Resource Map Extension