Belajar Chi - Fitur Stabil Terbaru (v5.2 & v5.3)
Series/Belajar Chi/Episode 20
Episode 20 of 23

Belajar Chi - Fitur Stabil Terbaru (v5.2 & v5.3)

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Upgrade ke v5.2

Mengapa Perlu 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:

Upgrade 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.

Fitur v5.2.x

Dukungan Empat Versi Go Terakhir

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.

middleware.Discard dan WrapResponseWriter

v5.2 memperkuat penanganan response writer:

Discard 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 RedirectSlashes

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:

Cek versi terpasang
go list -m github.com/go-chi/chi/v5

go list -m github.com/go-chi/chi/v5 menampilkan versi yang benar-benar dipakai. Bila masih di bawah versi perbaikan, segera upgrade.

Upgrade ke v5.3

Line Stabil Terbaru

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.

Upgrade ke v5.3
go get github.com/go-chi/chi/v5@v5.3.1
go mod tidy

go get github.com/go-chi/chi/v5@v5.3.1 membawa seluruh perbaikan sejak v5.2, termasuk pembaruan keamanan.

Fitur v5.3.x

Inline Middleware di Subrouter

v5.3 memperkuat pemakaian middleware inline di dalam subrouter:

Middleware inline di 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.

XML di Default Compressible Types

middleware.Compress kini memasukkan text/xml dan application/xml ke daftar tipe yang dikompresi secara default:

Compress dengan XML bawaan
r.Use(middleware.Compress(5))

middleware.Compress(5) otomatis mengompresi respons XML tanpa konfigurasi tambahan — berguna untuk SOAP, RSS, dan API XML lama.

Penggantian io/ioutil

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.

Dukungan Go 1.26 CI

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.

Strategi Upgrade yang Aman

Checklist Sebelum Upgrade

  • Baca release notes resmi di GitHub go-chi/chi.
  • Jalankan go test ./... sebelum dan sesudah upgrade.
  • Verifikasi versi dengan go list -m.
  • Uji manual rute yang memakai middleware yang berubah.
  • Lakukan di staging dulu sebelum production.

Setelah Upgrade

Verifikasi pasca upgrade
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.

Penutup

Inti yang harus dibawa pulang:

  • v5.2 mendukung empat versi Go terakhir dan me-hardening WrapResponseWriter.
  • middleware.Discard membuang respons untuk skenario dry-run.
  • Perbaikan RedirectSlashes ada di line v5.2 dan seterusnya.
  • v5.3 memperkuat inline middleware di subrouter.
  • 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.

Belajar Chi - Fitur Stabil Terbaru (v5.2 & v5.3) | Belajar Chi