{"record":{"id":"c01a6af7367d0a6b","repo":"grafana/k6","slug":"k6-experimental-tracing-has-been-removed-all-of-i","errorCode":null,"errorMessage":"k6/experimental/tracing has been removed. All of it functionality is available as pure JavaScript module. More info available at the docs: https://grafana.com/docs/k6/latest/javascript-api/jslib/http-instrumentation-tempo","messagePattern":"k6/experimental/tracing has been removed\\. All of it functionality is available as pure JavaScript module\\. More info available at the docs: https://grafana\\.com/docs/k6/latest/javascript-api/jslib/http-instrumentation-tempo","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/js/jsmodules.go","lineNumber":107,"sourceCode":"\n\t// external is always prefixed with `k6/x`\n\tfor _, e := range external {\n\t\tresult[e.Name] = e.Module\n\t}\n\n\treturn result\n}\n\ntype removedModule struct {\n\terrMsg string\n}\n\nfunc newRemovedModule(errMsg string) modules.Module {\n\treturn &removedModule{errMsg: errMsg}\n}\n\nfunc (rm *removedModule) NewModuleInstance(vu modules.VU) modules.Instance {\n\tcommon.Throw(vu.Runtime(), errors.New(rm.errMsg))\n\n\treturn nil\n}\n\ntype warnExperimentalModule struct {\n\tonce sync.Once\n\tmsg  string\n\tbase modules.Module\n}\n\nfunc newWarnExperimentalModule(base modules.Module, msg string) modules.Module {\n\treturn &warnExperimentalModule{\n\t\tmsg:  msg,\n\t\tbase: base,\n\t}\n}\n\nfunc (w *warnExperimentalModule) NewModuleInstance(vu modules.VU) modules.Instance {","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/grafana/k6/blob/93accf6570dcd306ca5e99cc44c393ee3797761b/internal/js/jsmodules.go#L89-L125","documentation":"k6/experimental/tracing was removed from the core module set; its functionality lives on as a pure-JavaScript library (jslib http-instrumentation-tempo). The registry entry is a stub that throws this guidance message when the import is instantiated.","triggerScenarios":"`import tracing from 'k6/experimental/tracing'` on a current k6 build.","commonSituations":"Distributed-tracing instrumentation scripts from the experimental era; templates referencing the removed module after upgrading.","solutions":["Remove the core import and load the jslib version instead: `import { Http } from 'https://jslib.k6.io/http-instrumentation-tempo/1.0.0/index.js'`","Follow the linked docs to instrument client requests for Tempo"],"exampleFix":"// before\nimport tracing from 'k6/experimental/tracing';\n\n// after\nimport { Http } from 'https://jslib.k6.io/http-instrumentation-tempo/1.0.0/index.js';\nconst instrumentedHttp = new Http(instrumentTracing);","handlingStrategy":"validation","validationCode":"grep -rn \"k6/experimental/tracing\" . --include='*.js' && { echo 'use jslib http-instrumentation-tempo instead' >&2; exit 1; } || true","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin the jslib URL version in shared helpers so instrumentation is centralized","Track jslib.k6.io modules as external dependencies, reviewed like code"],"tags":["javascript","modules","tracing","migration","removed-feature"],"backgroundTag":null,"analyzedSha":"93accf6570dcd306ca5e99cc44c393ee3797761b","analyzedAt":"2026-08-15T21:23:27.118Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}