Back to all versions

4.18.0

2026-09-21
minor

Features 2

  • Publish pgxpool statistics as metrics via OTel
    Adds observable counters and gauges for Postgres connection pool statistics, including acquired/idle connections, acquire duration, and connection lifecycle events. Metrics are published under `zitadel.database.pool.*`.
    Metrics Database
  • Auto-detection for Google Cloud Platform telemetry attributes
    Automatically detects GCP-specific resource attributes (region, service name, revision, instance ID) to prevent metric collisions in multi-region deployments. This is disabled by default to avoid unintended external calls.
    Telemetry

Bug Fixes 4

  • Efficient bulk unique-constraint deletes using owner tags
    Introduces an `owners` tag bag to unique constraints to allow efficient bulk deletes by owner (Org, IDP, Project, etc.) without OOM risks. Includes a repeatable setup migration (Step 79) to backfill tags from projections.
    Eventstore
  • Prevent event skipping in projections under high load (#12703, #8509, #10480, #10560, #10710)
    Fixes a race condition where simultaneous writes could cause projections to skip events. Uses advisory locks and stable ordering to ensure data consistency.
    Eventstore Projections
  • Forward login_hint to external Identity Providers (#12760, #12080, #12683)
    Enables OIDC `login_hint` forwarding to external Identity Providers in Login V2, ensuring users don't have to re-enter their username at the external IdP.
    Login V2
  • Verify API credentials at startup instead of readiness probe
    Moves API credential verification from the `/ready` probe to process startup. This prevents unnecessary authenticated API calls and access log entries during routine health checks.
    Login V2

Maintenance & Chores 1

  • Optimized ListUsers equality filters using UNION of index seeks
    Rewrites equality lookups for username, email, phone, and login names to use a UNION of index seeks. This significantly improves performance for Login V2 search trees by avoiding slow view-based filters on large datasets.
    Query