Engineering guides

Production Node.js problems, answered properly — including what to do without any monitoring tool.

All guides

  • Monitoring unhandled promise rejections without crashing

    Node.js terminates the process on an unhandled promise rejection by default. How to observe and report rejections safely, why swallowing them is worse, and how to capture them with context.

    Verified on Node.js 20 LTS and 22

  • Capturing Server Component and Server Action errors

    Next.js replaces Server Component errors with a digest in production, hiding the message and stack. How to capture the real error with instrumentation.ts and onRequestError.

    Verified on Next.js App Router on Node.js 20 LTS

  • ClickHouse for exception storage

    Why a columnar database fits error telemetry: how column pruning makes aggregate queries cheap, what ClickHouse is bad at, and the schema and query shapes that matter.

    Verified on ClickHouse 24.x

  • Request context with AsyncLocalStorage

    How AsyncLocalStorage carries request context across await boundaries without prop-drilling, the pitfalls that silently lose context, and its real cost.

    Verified on Node.js 20 LTS and 22