
Go 2025-2026 Conventions — What the Best Projects Do
Go 1.21, 1.22, 1.23, 1.24 — four releases in two years, each adding something that genuinely changes how you write Go. Not flashy syntax features, but tools and patterns that eliminate recurring pain points. The result: serious codebases in 2025 look noticeably different from 2022. What this article covers: what has settled as standard, with concrete examples from real projects (Caddy, Tailscale, pgx v6). And what good projects have stopped using. slog — the logger you don't need to install Since Go 1.21, slog is in the stdlib. Logrus is dead, zap is on life support, and projects still importing github.com/sirupsen/logrus in 2025 just haven't cleaned up yet. The pattern that has taken hold in serious codebases: an enriched logger per operation, not a global logger. This gives structured logs without repeating the same fields on every call: // Established pattern: logger enriched with operation context func processJob ( ctx context . Context , jobID , model string ) { log := slog . With
Continue reading on Dev.to
Opens in a new tab




