Go Releases Basics
10 examples to get you started with Go releases and upgrades - 7 basic and 3 intermediate.
Search across all documentation pages
10 examples to get you started with Go releases and upgrades - 7 basic and 3 intermediate.
go version should report go1.26 or later)go.mod at the repo rootgo fix diffsgo version
go env GOTOOLCHAINKnow which compiler is building your binaries.
go version
# go version go1.26.0 darwin/arm64
go env GOTOOLCHAIN
# autogo version reports the active toolchain binaryGOTOOLCHAIN=auto (default) may download a newer toolchain when go.mod requires itgo version on every build log for incident correlationRelated: Go 1.26 Highlights - what changed in the current release
Release notes are the contract between the Go team and production teams.
go doc -u cmd/go
# Or open: https://go.dev/doc/go1.26Related: Reading Release Notes Like a Tech Lead - structured review checklist
The go directive sets minimum language semantics for the module.
module example.com/shop
go 1.25go get go@1.26.0
# updates go.mod: go 1.26.0go enables newer language features and may change type-checker behaviorgo directive can differ when GOTOOLCHAIN=auto downloads a newer compilerRelated: The Go 1 Compatibility Promise in Practice - what the promise covers
Go minor releases arrive on a predictable schedule.
Go 1.24 -> February 2025
Go 1.25 -> August 2025
Go 1.26 -> February 2026
Go 1.27 -> August 2026 (expected)Related: Go's Evolution - how the cadence became policy
Go 1.26 revamps go fix as a modernization tool built on the same framework as go vet.
go fix -diff ./...go tool fix help
# lists analyzers: any, minmax, mapsloop, newexpr, forvar, ...-diff previews changes without writing filesRelated: Go 1.26 Highlights - Green Tea GC and modernizers in depth
Green Tea is the default garbage collector in Go 1.26.
GOEXPERIMENT=nogreenteagc go build -o app ./cmd/appRelated: Major Milestones - runtime improvements across releases
Some stdlib behavior changes are gated behind GODEBUG until the next major removal cycle.
GODEBUG=tls10server=1 go test ./...// go.mod may also influence default behavior via the go directive versionA minimal upgrade loop for one service repository.
git checkout -b upgrade/go-1.26
go get go@1.26.0
go mod tidy
go test ./...
go fix ./...
go test ./...
go vet ./...go mod tidy after the version bump catches transitive requirement driftgo fix before manual cleanup so helpers become unused in one passgo vet catches issues modernizers do not fixRelated: Planning Go Version Upgrades Across a Monorepo - multi-module rollout
Workspaces let multiple modules upgrade together without local replace hacks.
// go.work
go 1.26.0
use (
./services/api
./services/worker
./libs/shared
)go work sync
go test ./...go work sync aligns go and toolchain directives across workspace modulesgo line before individual module bumps in a coordinated rolloutuse entries when modules are archivedRelated: Major Milestones - workspaces landed in Go 1.18
Capture what you tested and what you deferred.
## ADR: Adopt Go 1.26
### Context
Green Tea GC default; go fix modernizers; new(expr) for optional JSON fields.
### Decision
Upgrade staging week 1; production week 3 after p99 GC pause review.
### Rollback
Rebuild with GOEXPERIMENT=nogreenteagc; revert go.mod to go 1.25.0.Related: Go History & Releases Best Practices - team habits for safe upgrades
Stack versions: This page was written for Go 1.26.x (Green Tea GC default, go fix modernizers - verify patch at build), chi (latest - verify at build), gin (latest - verify at build), echo (latest - verify at build), google.golang.org/grpc (latest - verify at build), sigs.k8s.io/controller-runtime (latest - verify at build), kubebuilder (latest - verify at build), tinygo (latest - verify board targets at build), wazero (latest - verify at build), and golangci-lint (latest - verify linter set at build).
Reviewed by Chris St. John·Last updated Jul 16, 2026