Open source

Extension Graduation

Some Go extensions may one day be available within the k6 binary. These select extensions pass through different phases to become core functionality.

This graduation process benefits both users and developers. k6 users can access new features and provide feedback to influence its developments. k6 developers meanwhile can iterate quickly and respond to feedback without worrying about breaking changes.

A core-bound extension passes through the following phases: Extension graduation


Most extensions in the k6 ecosystem remain extensions requiring xk6 to incorporate the custom functionality. These extensions might be provided by Grafana or by the community, and may be included in the Extensions Registry.


Only Grafana-controlled extensions may progress beyond the extension phase to become experimental or core modules.

Experimental Module

This phase is the first exposure to core k6. The extension is still maintained outside the core of k6 but imported as a Go module, no longer requiring xk6.

Once an extension is promoted as an experimental module, the extension will be removed from the extension listing. At this time, documentation for the functionality will be provided in k6 API and output for JavaScript and Output extensions, respectively.

There should be a reasonably high degree of quality and stability at this point. This phase makes the feature accessible to more users, which in turn gives k6 developers more chances to receive feedback. The key will be to achieve a balance between usability and stability.


Not all experimental modules will progress to become a core module! The k6 team reserves the right to discontinue and remove any experimental module if is no longer deemed desirable.

Core Module

The stabilized feature is now part of the standard k6 product as a built-in module. An extension may be in the experimental module phase for an extended time before progressing as a core module.

The module code is in the main k6 repository, with the old extension repository archived. Options from the experimental module phase are deprecated and removed after two k6 releases, providing time for users to upgrade scripts for the new module.