v1.1.0 v1.0.0 · stable roots GA · x/* families carry explicit maturity labels View release posture →

migration

Moving to Plumego. From Gin, Echo, or Chi.

Each migration has a different cost and pattern. Chi is the lowest-friction path; Gin and Echo require handler rewrites. Pick your source framework to see what changes and what stays the same.

from Gin
medium migration cost 1–3 days per service

func(c *gin.Context) → func(w, r)

handlers

All handlers rewritten from gin.Context. Route syntax stays the same.

middleware

Middleware must be adapted from gin.HandlerFunc to func(http.Handler) http.Handler.

routing

/foo/:id maps cleanly. Groups stay the same structure.

what you gain
  • no custom context type
  • stdlib middleware works without adapters
  • zero transitive deps in kernel
from Echo
medium migration cost 1–3 days per service

func(c echo.Context) error → func(w, r)

handlers

All handlers rewritten from echo.Context. Error return idiom replaced with contract.WriteError.

middleware

Echo middleware must be adapted. Logger, CORS, and recover all have Plumego equivalents.

routing

Route syntax is similar. Echo group API maps directly to router.Group.

what you gain
  • no custom context type
  • explicit error model
  • zero transitive deps in kernel
from Chi
low migration cost Hours to a day

Same handler signature — minimal changes

handlers

Chi uses func(w, r) — same as Plumego. Handler code needs no changes.

middleware

Chi middleware is func(http.Handler) http.Handler — compatible. Existing middleware often works as-is.

routing

Route syntax is similar. chi.URLParam(r, "id") replaced by router.PathParam(r, "id").

what you gain
  • handler code unchanged
  • existing stdlib middleware reused
  • lower learning curve

Not ready to migrate everything at once?

Read the Adoption Path guide for a phased approach — stable roots first, extensions only when needed, no big-bang rewrites.