Cloudflare Workers Traces Integration
Record oRPC procedure, middleware, and stream spans in Cloudflare Workers Traces through the Workers custom spans API, with no OpenTelemetry SDK.
Installation
npm install @orpc/cloudflare@betapnpm add @orpc/cloudflare@betayarn add @orpc/cloudflare@betabun add @orpc/cloudflare@betaSetup
Enable traces in your Wrangler configuration, then register CloudflareTracer once at module scope. oRPC then records the same spans as the OpenTelemetry integration, nested under the spans Workers create automatically.
{
"observability": {
"traces": {
"enabled": true
}
}
}
import { experimental_CloudflareTracer as CloudflareTracer } from '@orpc/cloudflare'
new CloudflareTracer().enable()
Middleware Span
oRPC creates a span for each middleware execution. Use tracing.getActiveSpan() to add attributes to it:
import { tracing } from 'cloudflare:workers'
export const someMiddleware = os.middleware(async (ctx, next) => {
tracing.getActiveSpan()?.setAttribute('someAttribute', 'someValue')
return next()
})
Object.defineProperty(someMiddleware, 'name', {
value: 'someName',
})
Limitations
Workers Traces still lack some APIs oRPC relies on, so:
- Request spans are not renamed to the procedure path. The path is still recorded in the
rpc.methodattribute. - Streamed inputs and outputs record no
yieldedandenqueuedevents. - Trace context propagation is not configurable by oRPC.