Browser
@pydantic/logfire-browser configures OpenTelemetry browser tracing and re-exports the manual logfire API for client-side spans and logs.
Browser telemetry must be sent through your own backend proxy. Do not put a Logfire write token in browser code.
npm install @pydantic/logfire-browser @opentelemetry/auto-instrumentations-web
import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web'
import * as logfire from '@pydantic/logfire-browser'
logfire.configure({
traceUrl: '/logfire-proxy/v1/traces',
serviceName: 'web-app',
serviceVersion: '1.0.0',
instrumentations: [getWebAutoInstrumentations()],
})
traceUrl should point to a server-side endpoint that forwards OTLP trace requests to Logfire and adds the Authorization header on the server.
document.querySelector('button')?.addEventListener('click', () => {
logfire.info('checkout button clicked')
})
Report caught errors with reportError():
window.addEventListener('error', (event) => {
if (event.error instanceof Error) {
logfire.reportError('uncaught browser error', event.error)
}
})
A browser proxy should:
- accept requests from your frontend only
- add
Authorization: <write-token>server-side - forward to the Logfire OTLP trace endpoint
- apply authentication, rate limiting, or origin checks for production apps
For Next.js, see Next.js. For a standalone browser example, see the examples/browser project in this repository.
configure() returns an async shutdown function:
const shutdown = logfire.configure({
traceUrl: '/logfire-proxy/v1/traces',
serviceName: 'web-app',
})
window.addEventListener('pagehide', () => {
void shutdown()
})