diff --git a/packages/effect/src/internal/core-effect.ts b/packages/effect/src/internal/core-effect.ts
index 1686f9f306d..c6bd336ff42 100644
--- a/packages/effect/src/internal/core-effect.ts
+++ b/packages/effect/src/internal/core-effect.ts
@@ -2053,7 +2053,7 @@ export const makeSpan = (
core.sync(() => {
const enabled = FiberRefs.getOrDefault(fiberRefs, core.currentTracerEnabled)
if (enabled === false) {
- return core.noopSpan
+ return core.noopSpan(name)
}
const context = FiberRefs.getOrDefault(fiberRefs, core.currentContext)
diff --git a/packages/effect/src/internal/core.ts b/packages/effect/src/internal/core.ts
index 2f26473ca24..4be6c274aaa 100644
--- a/packages/effect/src/internal/core.ts
+++ b/packages/effect/src/internal/core.ts
@@ -3091,8 +3091,7 @@ export const currentSpanFromFiber = (fiber: Fiber.RuntimeFiber): Opt
return span !== undefined && span._tag === "Span" ? Option.some(span) : Option.none()
}
-/** @internal */
-export const noopSpan: Tracer.Span = globalValue("effect/Tracer/noopSpan", () => ({
+const NoopSpanProto: Tracer.Span = {
_tag: "Span",
spanId: "noop",
traceId: "noop",
@@ -3111,4 +3110,11 @@ export const noopSpan: Tracer.Span = globalValue("effect/Tracer/noopSpan", () =>
attribute() {},
event() {},
end() {}
-}))
+}
+
+/** @internal */
+export const noopSpan = (name: string): Tracer.Span => {
+ const span = Object.create(NoopSpanProto)
+ span.name = name
+ return span
+}
diff --git a/packages/effect/test/Tracer.test.ts b/packages/effect/test/Tracer.test.ts
index e6ab5eaf9be..80334fdc9fd 100644
--- a/packages/effect/test/Tracer.test.ts
+++ b/packages/effect/test/Tracer.test.ts
@@ -272,7 +272,8 @@ describe("Tracer", () => {
Effect.withTracerEnabled(true)
)
- assert.deepEqual(span.name, "noop")
+ assert.deepEqual(span.name, "A")
+ assert.deepEqual(span.spanId, "noop")
assert.deepEqual(spanB.name, "B")
}))
})