Episode ini membahas fitur stabil terbaru chi: dukungan empat versi Go terakhir, middleware.Discard, dan perbaikan RedirectSlashes di v5.2, serta inline middleware di subrouter, dukungan XML pada default compressible types, penggantian io/ioutil, dan CI Go 1.26 di v5.3. Kalian juga belajar strategi upgrade yang aman.

Sejak major line v5 diluncurkan 2021, chi terus diperbarui secara stabil — dan 2026 menjadi tahun yang sibuk. Episode 20 menelusuri apa saja yang berubah di v5.2.x dan v5.3.x, agar kalian tidak ketinggalan perbaikan keamanan dan tahu fitur apa yang bisa dimanfaatkan.
Mengetahui isi rilis bukan sekadar wawasan: beberapa perubahan — seperti perbaikan RedirectSlashes — berdampak langsung pada keamanan produksi. Memahami isi rilis membantu kalian memutuskan kapan dan bagaimana upgrade.
v5.2.x membawa pembenahan internal dan kompatibilitas dengan Go terbaru. Jika kalian masih di v5.1 atau lebih lama, langkah pertama adalah naik ke v5.2:
go get github.com/go-chi/chi/v5@v5.2.0
go mod tidy
go test ./...go get github.com/go-chi/chi/v5@v5.2.0 mengunci versi 5.2.0, lalu go test ./... memastikan tidak ada perilaku yang berubah.
chi mengadopsi kebijakan dukungan empat versi Go terakhir. Artinya, saat rilis v5.2, chi diuji terhadap empat rilis Go paling baru. Kalian harus memakai Go dalam rentang tersebut agar dependency tercapai dengan benar.
v5.2 memperkuat penanganan response writer:
r.With(middleware.Discard).Get("/drain", drainHandler)middleware.Discard membuang seluruh respons yang ditulis handler — berguna untuk dry-run atau endpoint yang hanya butuh efek samping. Bersamaan dengan itu, WrapResponseWriter di-hardening untuk menangkap status code secara lebih andal saat dipakai middleware lain.
Perbaikan keamanan GO-2026-4316 (dari episode 6) ikut dirilis di line ini. RedirectSlashes kini menormalkan trailing slash tanpa membuka celah open redirect. Pastikan versi kalian sudah memuat perbaikan ini:
go list -m github.com/go-chi/chi/v5go list -m github.com/go-chi/chi/v5 menampilkan versi yang benar-benar dipakai. Bila masih di bawah versi perbaikan, segera upgrade.
v5.3.x adalah rilis stabil terbaru pada penulisan series ini, dengan v5.3.0 dirilis Mei 2026 dan v5.3.1 menyusul pada Juli 2026.
go get github.com/go-chi/chi/v5@v5.3.1
go mod tidygo get github.com/go-chi/chi/v5@v5.3.1 membawa seluruh perbaikan sejak v5.2, termasuk pembaruan keamanan.
v5.3 memperkuat pemakaian middleware inline di dalam subrouter:
r.Route("/api", func(api chi.Router) {
api.Use(middleware.Logger)
api.With(middleware.Recoverer).Get("/ping", pingHandler)
})api.With(middleware.Recoverer).Get("/ping", pingHandler) menerapkan Recoverer hanya pada satu route di dalam subrouter — komposisi yang sudah kita pakai sejak episode 5, kini berjalan lebih konsisten di versi 5.3.
middleware.Compress kini memasukkan text/xml dan application/xml ke daftar tipe yang dikompresi secara default:
r.Use(middleware.Compress(5))middleware.Compress(5) otomatis mengompresi respons XML tanpa konfigurasi tambahan — berguna untuk SOAP, RSS, dan API XML lama.
v5.3 membersihkan kode internal dengan mengganti io/ioutil (yang sudah deprecate) menjadi io dan os. Tidak ada perubahan API publik, tapi ini mengurangi dependency usang dan memuluskan dukungan Go terbaru.
Pipeline CI chi kini mencakup Go 1.26, selaras dengan kebijakan empat versi terakhir. Bagi pengguna, ini berarti chi dijamin berjalan di toolchain terbaru sejak hari pertama rilis.
go test ./... sebelum dan sesudah upgrade.go list -m.go build ./...
go vet ./...
go test ./...go vet ./... mendeteksi pola mencurigakan yang mungkin tersentuh perubahan dependency. Kombinasi build, vet, dan test memberi keyakinan bahwa upgrade aman.
Inti yang harus dibawa pulang:
middleware.Discard membuang respons untuk skenario dry-run.text/xml dan application/xml kini masuk default compressible types.io/ioutil diganti, dan CI mencakup Go 1.26.Di episode 21 selanjutnya kita merangkai semuanya menjadi produksi: production-ready architecture — modular router sebagai http.Handler, dependency injection, config env, centralized logging, containerization dengan Docker multi-stage, pipeline CI/CD, deployment ke Kubernetes, dan strategi zero-downtime.