Skip to main content

Fiber 3.5.0

Release Date: August 13, 2026

Verdict: update now. I spent the morning wiring Fiber 3.5.0 into a production API, and the new proxy security defaults alone are worth the upgrade — they close a class of SSRF-ish holes you might not even know you had.

Security First: Proxy Hardening Out of the Box

The big one. Fiber's proxy middleware now ships with a proxy.SecurityPolicy that has secure defaults: private and loopback upstreams are rejected, non-HTTP(S) schemes are refused, and HTTPS-to-HTTP redirect downgrades are blocked. Hop-by-hop headers get stripped too. If you proxy to internal services, you opt back in explicitly:

proxy.WithSecurityPolicy(proxy.SecurityPolicy{
    AllowPrivateIPs: true, // internal upstreams are blocked by default
})

That's a real behavioral change — if your app proxies to 127.0.0.1 or 10.x addresses, read the proxy docs before deploying, or you'll see requests start failing by design.

Binding Precedence, Your Way

New binding_source struct tag lets you override the order Bind().All() resolves sources, per struct. Query, header, cookie, body, URI — you pick the priority, and the resolved order is cached per reflect.Type, so no reflection tax on every request:

type SearchReq struct {
    Name string `binding_source:"query,header,cookie,body,uri" query:"name" header:"x-name" json:"name"`
}

Performance: Route Matching Got a Flat Tree

Routing was the star of the perf section. A flat tree index plus leading-byte candidate rejection makes unmatched routes fail fast, and a specialized /const/:param matcher speeds up the common case. Hot-path scanners got SWAR-accelerated utils helpers, and adaptor/proxy paths adopted gofiber/utils v2.4.0. In my benchmarks, a mixed workload with ~200 routes saw single-digit-percent gains — nothing magical, but free.

Fixes Worth Knowing

  • Open redirects fixed in composed route URLs and redirect rules (#4584)
  • Redirect.Route now URL-encodes query values (#4529)
  • Float route constraints accept the full float64 range now (#4528)
  • Route buckets stay intact during rebuilds — no more stale-route surprises (#4579)

How I'd Upgrade

go get github.com/gofiber/fiber/[email protected], then run your test suite twice: once for the binding changes, once with SkipUnmatchedRoutes: true flipped on to see if you were relying on middleware running for unknown paths. The 404/405 fast path is off by default, so it's a safe experiment.

What is New?

By continuing to use the site, you agree to the use of cookies.