Adapters
autotel-adapters provides easy-to-use ergonomics (withAutotel(), useLogger(), parseError()) while keeping one trace-native stack.
Available Adapters
Section titled “Available Adapters”| Adapter | Import |
|---|---|
| Hono | autotel-adapters/hono |
| TanStack | autotel-tanstack |
| Next.js | autotel-adapters/next |
| Nitro | autotel-adapters/nitro |
| Cloudflare | autotel-adapters/cloudflare |
| Custom | autotel-adapters/core |
[!NOTE] For TanStack Start, reach for the
autotel-tanstackpackage: it gives you tracing middleware, server-function and loader wrappers, and context propagation. A lighterautotel-adapters/tanstacksubpath also exists, exportinguseLoggerfor custom glue when you do not want the full integration.
withAutotel vs useLogger
Section titled “withAutotel vs useLogger”withAutotel(). Use when you have NO existing autotel middleware. Creates a span and injects a request logger:
import { withAutotel, useLogger } from 'autotel-adapters/next';
export const POST = withAutotel(async (request) => { const log = useLogger(request); log.set({ feature: 'checkout' }); return Response.json({ ok: true });});useLogger() alone. Use when middleware already creates the span (avoids duplicate spans):
import { otel } from 'autotel-hono';import { useLogger } from 'autotel-adapters/hono';
app.use('*', otel());app.get('/orders/:id', (c) => { const log = useLogger(c); log.set({ route: c.req.path }); return c.json({ ok: true });});Next.js
Section titled “Next.js”import { withAutotel, useLogger, parseError } from 'autotel-adapters/next';
export const POST = withAutotel(async (request: Request) => { const log = useLogger(request); log.set({ feature: 'checkout' });
try { return Response.json({ ok: true }); } catch (error) { const parsed = parseError(error); log.set({ error_status: parsed.status, error_why: parsed.why }); throw error; }});Build Your Own
Section titled “Build Your Own”import { createUseLogger } from 'autotel-adapters/core';
const useLogger = createUseLogger<{ requestId?: string }>({ adapterName: 'custom-framework', enrich: (ctx) => ({ request_id: ctx.requestId }),});Examples
Section titled “Examples”example-nextjs: Next.js withautotel-adapters/nextandparseError()for client-side error handling.example-nestjs: NestJS with auto-instrumentation and manualtrace()in services.example-fastify: Fastify with HTTP and Fastify auto-instrumentation.