Integrations
Blyp integrations cover browser logging, mobile transport, and server-side adapters. Together they let you:
- create or expose a
BlypLogger - attach logging to the framework or runtime in a native way
- emit HTTP lifecycle logs when the platform has a request lifecycle
- optionally ingest or sync client logs to your backend
Integration map
| Framework | Import path | Main API | Where the logger is exposed |
|---|---|---|---|
| Client (Browser) | @blyp/core/client | createClientLogger() | returned logger instance in the browser |
| Elysia | @blyp/core/elysia | createLogger() | ctx.log |
| Expo | @blyp/core/expo | createExpoLogger() | returned logger instance in the Expo app |
| Hono | @blyp/core/hono | createLogger() | context.get("blypLog") |
| Express | @blyp/core/express | createLogger() | req.blypLog |
| Fastify | @blyp/core/fastify | createLogger() | request.blypLog |
| NestJS | @blyp/core/nestjs | createLogger() + BlypModule.forRoot() | req.blypLog and root logger |
| Next.js App Router | @blyp/core/nextjs | createLogger() | withLogger(..., { log }) |
| TanStack Start | @blyp/core/tanstack-start | createLogger() | context.blypLog |
| SvelteKit | @blyp/core/sveltekit | createLogger() | event.locals.blypLog |
| Cloudflare Workers | @blyp/core/workers | initWorkersLogger() + createWorkersLogger() | request-scoped logger returned per request |
Shared server-adapter config shape
All server adapters accept the same core options:
{
level?: string;
pretty?: boolean;
logDir?: string;
file?: LogFileConfig;
autoLogging?: boolean | { ignore?: (ctx) => boolean };
customProps?: (ctx) => Record<string, unknown>;
logErrors?: boolean;
ignorePaths?: string[];
clientLogging?: boolean | {
path?: string;
validate?: (ctx, payload) => boolean | Promise<boolean>;
enrich?: (ctx, payload) => Record<string, unknown> | Promise<Record<string, unknown>>;
};
}Client ingestion behavior
- Default ingestion path:
/inngest - When client logging is enabled, Blyp automatically excludes the ingestion path from normal HTTP request logging
- Some adapters auto-register the endpoint for you; others return a handler you mount manually
- If you mount a handler on the wrong path, adapters like Next.js, SvelteKit, and TanStack Start return a
500mismatch response - The browser Client uses same-origin delivery by default and can fall back to
sendBeacon()when possible - Expo is different: it sends logs directly to an absolute backend URL, queues failures in memory, resumes on connectivity changes via
expo-network, and does not register a local ingestion handler
Pick an integration page below for the exact wiring: