> nestjs-performance

Optimize NestJS throughput with Fastify adapter, singleton scope enforcement, compression, and query projections. Use when switching to Fastify, diagnosing request-scoped bottlenecks, or profiling API overhead. (triggers: main.ts, FastifyAdapter, compression, SINGLETON, REQUEST scope)

fetch
$curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/nestjs-performance?format=md"
SKILL.mdnestjs-performance

Performance Tuning

Priority: P1 (OPERATIONAL)

High-performance patterns and optimization techniques for NestJS applications.

Workflow: Performance Audit

  1. Switch to Fastify — Replace Express with FastifyAdapter for ~2x throughput.
  2. Enable compression — Add Gzip/Brotli middleware.
  3. Audit provider scopes — Ensure no unintended REQUEST scope chains.
  4. Add query projections — Use select: [] on all repository queries.
  5. Profile overhead — Benchmark Total Duration, DB Execution, and API Overhead.

Fastify + Compression Setup

See implementation examples

  • Keep-Alive: Configure http.Agent keep-alive settings to reuse TCP connections for upstream services.

Scope & Dependency Injection

  • Default Scope: Adhere to SINGLETON scope (default).
  • Request Scope: AVOID REQUEST scope unless absolutely necessary.
    • Pro Tip: A single request-scoped service makes its entire injection chain request-scoped.
    • Solution: Use Durable Providers (durable: true) for multi-tenancy.
  • Lazy Loading: Use LazyModuleLoader for heavyweight modules (e.g., Admin panels).

Caching Strategy

  • Application Cache: Use @nestjs/cache-manager for computation results.
    • Deep Dive: See Caching & Redis for L1/L2 strategies and Invalidation patterns.
  • HTTP Cache: Set Cache-Control headers for client-side caching (CDN/Browser).
  • Distributed: In microservices, use Redis store, not memory store.

Queues & Async Processing

  • Offloading: Never block the HTTP request for long-running tasks (Emails, Reports, webhooks).
  • Tool: Use @nestjs/bull (BullMQ) or RabbitMQ (@nestjs/microservices).
    • Pattern: Producer (Controller) -> Queue -> Consumer (Processor).

Serialization

  • Warning: class-transformer is CPU expensive.
  • Optimization: For high-throughput READ endpoints, consider manual mapping or using fast-json-stringify (built-in fastify serialization) instead of interceptors.

Database Tuning

  • Projections: Always use select: [] to fetch only needed columns.
  • N+1: Prevent N+1 queries by using relations carefully or DataLoader for Graph/Field resolvers.
  • Connection Pooling: Configure pool size (e.g., pool: { min: 2, max: 10 }) in config to match DB limits.

Profiling & Scaling

  • API Overhead vs DB Execution: Use an "Execution Bucket" strategy to continuously benchmark Total Duration, DB Execution Time, and API Overhead.
    • Total Baseline: Excellent (< 50ms), Acceptable (< 200ms), Poor (> 500ms). Exception: Authentication routes (e.g. bcrypt/argon2) should take 300-500ms intentionally.
    • DB Execution Baseline: Excellent (< 5ms), Acceptable (< 30ms), Poor (> 100ms - implies missing index or N+1 problem).
    • API Overhead Baseline: Excellent (< 20ms), Poor (> 100ms - implies heavy synchronous processing or serialization blocking Node's event loop).
  • Offloading: Move CPU-heavy tasks (Image processing, Crypto) to worker_threads.
  • Clustering: For non-containerized environments, use ClusterModule to utilize all CPU cores. In K8s, prefer ReplicaSets.

Anti-Patterns

  • No REQUEST scope without evaluation: One REQUEST-scoped provider makes the entire chain request-scoped.
  • No CPU tasks in HTTP handler: Offload image/crypto work to worker_threads or BullMQ.
  • No unprojected queries: Always select: [] the needed columns to avoid serializing unused data.

> related_skills --same-repo

> common-store-changelog

Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve

> golang-tooling

Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)

> common-ui-design

Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)

> common-owasp

OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)

┌ stats

installs/wk0
░░░░░░░░░░
github stars452
██████████
first seenMar 17, 2026
└────────────

┌ repo

HoangNguyen0403/agent-skills-standard
by HoangNguyen0403
└────────────