Releases: gofiber/fiber
v3.1.0
🚀 New
- expand middleware context helpers (#4079)
app := fiber.New(fiber.Config{
PassLocalsToContext: true, // default: false
})
// Works for requestid, csrf, session, basicauth, keyauth middlewares
app.Use(requestid.New())
app.Get("/", func(ctx fiber.Ctx) error {
// Value helpers from middlewares works now with 3 different context items
id := requestid.FromContext(ctx) // works always
id := requestid.FromContext(ctx.RequestCtx()) // works always
id := requestid.FromContext(ctx.Context()) // works only when `PassLocalsToContext` is true
return c.SendString(id)
})https://docs.gofiber.io/api/fiber/#passlocalstocontext
🧹 Updates
- update utils and add go 1.26 for test workflow (#4087)
- optimize helpers performance (#4049)
- harden numeric constraint parsing and expand route tests (#4054)
🐛 Fixes
- harden DefaultRes.Format against nil handler panics (#4105)
- guard nil request in adaptor LocalContextFromHTTPRequest (#4097)
- fix Unix-socket support in IsProxyTrusted (#4088)
- harden proxy nil client handling in Do/Forward paths (#4083)
- add nil-safety to response decode helpers (#4081)
- sanitize attachment/download filenames (#4070)
- harden flash cookie detection (#4078)
- fix bind struct validation only for struct targets (#4082)
- enforce Range header limit configuration (#4071)
- apply limits to msgp serialization (#4065)
- fix sanitizePath validation logic (#4064)
- fix Test method returning empty response on timeout (#4063)
- fix nil pointer dereference in context methods when accessed after release (#4062)
- retry addon: remove unnecessary sleep after last failed attempt (#4060)
- make TLS listener config discovery safer (#4055)
- validate nil services early and during lifecycle (#4050)
- skip non-string state keys during iteration (#4048)
- harden Port() handling (#4051)
- prevent panics on non-string log keys (#4046)
🛠️ Maintenance
- bump streetsidesoftware/cspell-action from 8.2.0 to 8.3.0 (#4111)
- bump the golang-modules group with 3 updates (#4080)
- bump github.com/shamaton/msgpack/v3 from 3.0.0 to 3.1.0 (#4075)
- bump github.com/klauspost/compress from 1.18.3 to 1.18.4 (#4076)
- bump github.com/gofiber/schema from 1.6.0 to 1.7.0 (#4074)
- bump golang.org/x/sys from 0.40.0 to 0.41.0 in the golang-modules group (#4073)
- bump github/codeql-action from 4.32.3 to 4.32.4 (#4104)
- bump github/codeql-action from 4.32.1 to 4.32.2 (#4058)
- bump github/codeql-action from 4.32.0 to 4.32.1 (#4047)
📚 Documentation
- update versioned storage imports in middleware docs (#4102)
- update documentation for parser configuration and request handling (#4096)
- fix invalid Go slice literal in middleware registration example (#4095)
- document
uristruct tag forctx.Bind().URI()in migration guide (#4092) - document logger Stream rename (#4057)
📒 Documentation: https://docs.gofiber.io/next/
💬 Discord: https://gofiber.io/discord
Full Changelog: v3.0.0...v3.1.0
Thank you @ReneWerner87, @SadikSunbul, @gaby and @sixcolors for making this release possible.
v2.52.12
v3.0.0
For a detailed view of all changes and the migration guide, visit:
https://docs.gofiber.io/whats_new
Try our new migration tool to help you upgrade from v2 to v3:
go install github.com/gofiber/cli/fiber@latest
fiber migrate --to v3What's Changed
🚀 New Features
- 🚀 App (Docs)
Rename WithTlsConfigmethod toWithTLSConfigin (#2570)- Use any as default Message type of Error struct in (#1925)
- Add support for custom constraints in (#2807)
- Add support for trusted origins in (#2910)
- Add DialDualStack option for upstream IPv6 support in (#2900)
- TrustedOrigins using
https://*.example.comstyle subdomains in (#2925) - Add configuration support to
c.SendFile()in (#3017) - Add CHIPS support to Cookie in (#3047)
- Add TestConfig to
app.Test()for configurable testing in (#3161) - Add buffered streaming support in (#3131)
- Add support for AutoTLS / ACME in (#3201)
- Add support for configuring TLS Min Version in (#3248)
- Fix square bracket notation in Multipart FormData in (#3235)
- Add support for application state management in (#3360)
- Add support for
NewErrorfin (#3463) - Add UNIX socket support in (#3535)
- Add support for Msgpack in (#3565)
- Add default UTF-8 charset in (#3583)
- Support for SendEarlyHints in (#3483)
- Add conditional copy helpers in (#3703)
- Add request inspection helpers in (#3727)
- Add support for redacting values in (#3759)
- Add support for handling unsupported HTTP methods as HTTP 501 in (#3854)
- Add support for ReloadViews() in (#3876)
- Expose startup message customization hooks in (#3824)
- Migrate from UUIDv4 to SecureToken for key generation in (#3946)
- Add ExpirationFunc for dynamic expiration in (#3984)
- Auto-enforce Secure=true for Partitioned cookies in Cookie() in (#3976)
- 📎 Binding (Docs)
- 🌎 Client (Docs)
- Client refactor in (#1986)
- Add support for creating Fiber client from existing FastHTTP client in (#3214)
- Add support for iterator methods to Fiber client in (#3228)
- Add support for HostClient and LBClient in (#3774)
- Add support for streaming response bodies in client and response handling in (#4014)
- 🧠 Context (Docs)
Convert fiber.Ctxtype to interface in (#1928)- Add Drop method to DefaultCtx for silent connection termination in (#3257)
- Add
End()method toCtxin (#3280) - Improve and Optimize
ShutdownWithContextFunc in (#3162) - Add support for
context.Contextin keyauth middleware in (#3287) Fiber.Contextimplementcontext.Contextin (#3382)- Add NewWithCustomCtx initialization helper in (#3476)
- Add context methods to fiber.Storage interface in (#3566)
- Add Fiber Context to BasicAuth Authorizer in (#3621)
- Implement OverrideParam override behavior for DefaultCtx in (#3962)
- Add context common request helpers in (#4007)
- Adding GetReqHeaders and GetRespHeaders in (#2831)
- Add Req and Res API in (#2894)
- 🔬 Extractors (Docs)
- 🧰 Generic (Docs)
- 🚀 Listen (Docs)
- 🔌 Addons/retry (Docs)
- Add retry mechanism in (#1972)
- 🧬 Middleware – adaptor (Docs)
- 🧬 Middleware – basicauth (Docs)
- 🧬 Middleware – cache (Docs)
- 🧬 Middleware – compression (Docs)
- 🧬 Middleware – cors (Docs)
- Add support for Access-Control-Allow-Private-Network in (#2908)
- 🧬 Middleware – csrf (Docs)
- Add support for Sec-Fetch-Site header in CSRF middleware in (#3913)
- 🧬 Middleware – encryptcookie (Docs)
- Add cookie name authentication for EncryptCookie middleware in (#3788)
- 🧬 Middleware – favicon (Docs)
- Add MaxBytes to favicon middleware in (#4016)
- 🧬 Middleware – earlydata (Docs)
- Add earlydata middleware in (#2270)
- 🧬 Middleware – healthcheck (Docs)
- 🧬 Middleware – idempotency (Docs)
- Add idempotency middleware in (#2253)
- 🧬 Middleware – keyauth (Docs)
- Add support for custom KeyLookup functions in the Keyauth middleware in (#3028)
- 🧬 Middleware – logger (Docs)
- 🧬 Middleware – proxy (Docs)
- 🧬 Middleware – requestid (Docs)
- 🧬 Middleware – responsetime (Docs)
- Add response time middleware in (#3891)
- 🧬 Middleware – session (Docs)
- 🧬 Middleware – static (Docs)
- Add static middleware in (#3006)
- 🧬 Middleware – timeout (Docs)
- Add config for Timeout middleware in (#3604)
- 🔄️ Redirect (Docs)
- New redirection methods in (#2014)
- 🗺️ Router (Docs)
- Router interface changes in (#2176)
- Native support for
net/httpand fasthttp handlers in (#3769) - New Route method in (#2065)
- New mounting system in (#2022)
- Add support for RebuildTree in (#3074)
- Add support for Express.js style req/res handlers in (#3809)
- Add support for DisableAutoRegister of HEAD routes in (#3817)
- Enhance CheckConstraint method for improved error handling in (#3356)
- Add Support for Removing Routes in (#3230)
- Add support for embedded Koa-Style Req and Res structs in (#3533)
- Support Express-style next callback handlers in (#4029)
- 🧩 Services (Docs)
- Add Support for service dependencies in (#3434)
🧹 Updates
- ⚙️ Core & API
- Replace string functions in (#3923)
- Update conditional instructions for startup skip in (#3475)
- Update AGENTS startup instructions in (#3474)
- Add
[]bytesupport toutils.EqualFoldin (#2029) - Change startup message in (#2041)
- Update to use gofiber/utils/v2 in (#2184)
- Router: return status 501 instead of 400 on unknown method in (#2220)
- Cleanup in (#2255)
- Fix ContextKey collisions in (#2781)
- Update Ctx.Format to match Express's res.format in (#2766)
- Update handler signature for v3 in (#2794)
- Change
interface{}to any in (#2796) - Added respects body immutability to ctx.Body() and ctx.BodyRaw() functions. in (#2812)
- Print to stderr if log fails for default format in (#2830)
- Clean up errcheck config in (#2841)
- Update startup message formatting in (#2847)
- Simplify content negotiation code in (#2865)
- Rename "ClientNew" Function to "New" in (#2896)
- Remove repetitive words in (#2917)
- Improper query/body parsing with embedded structs in (#2906)
- Improve and simplify logic of ctx.Next() in (#3063)
- Use Named Fields Instead of Positional and...
v2.52.11
What's Changed
🧹 Updates
🐛 Bug Fixes
- Backport defensive copying fixes from #3828 and #3829 to v2 by @sixcolors in #3888
- Fixes and improvements for limiter middleware by @gaby in #3899
Full Changelog: v2.52.10...v2.52.11
v3.0.0-rc.3
🚀 New Features
- Middleware/encryptCookie: Add cookie name authentication for EncryptCookie middleware by @gaby in #3788
- Middleware/proxy: Add BodyStream() logic to
adaptor.FiberHandlermiddleware by @grivera64 in #3799 - Client: Add support for HostClient and LBClient by @gaby in #3774
- Native support for net/http and fasthttp handlers by @gaby in #3769
- Add support for Express.js style req/res handlers by @gaby in #3809
- Add support for DisableAutoRegister of HEAD routes by @ReneWerner87 in #3817
- Add support for handling unsupported HTTP methods as HTTP 501 by @gaby in #3854
- Add support for ReloadViews() by @gaby in #3876
- Expose startup message customization hooks by @efectn in #3824
🧹 Updates
- Middleware/adaptor: prevent CopyContextToFiberContext panic and add comprehensive test coverage by @sixcolors in #3770
- Middleware/adaptor: Add flushing-related unit tests for net/http adaptor by @grivera64 in #3807
- Middleware/encryptCookie: Return error during EncryptCookie failure by @gaby in #3842
- Client: Preallocate slice size in Client::Param() by @arturmelanchyk in #3782
- Reduce allocations in Request (saves ~16% B/op) by @arturmelanchyk in #3768
- Make boundary a const by @arturmelanchyk in #3783
- Skip locking garbage collector if nothing to delete by @arturmelanchyk in #3787
- Reduce the memory usage of cacheableStatusCodes by @ZihxS in #3789
- Merge duplicate constants by @jsoref in #3812
- Improve propagation of context.Context by @gaby in #3822
- Inline Request state wrappers by @arturmelanchyk in #3827
- Remove unneeded "utils" alias by @arturmelanchyk in #3834
- Benchmark for cache miss case by @arturmelanchyk in #3836
- Add FullPath() helper to context by @gaby in #3837
- Handle nil map targets in Binder by @gaby in #3839
- Extracted generic releasePooledBinder function by @arturmelanchyk in #3841
- Refactor internal errors to use sentinel values by @gaby in #3864
- Test HEAD request compliance by @gaby in #3868
- Improve OPTIONS wildcard regression test by @gaby in #3869
- Improve byte-range handling for SendFile() by @gaby in #3870
- Use int64 when dealing with HTTP Ranges by @gaby in #3874
🐛 Bug Fixes
- Middleware/limiter: Fix default value for MaxFunc in Limiter middleware by @gaby in #3871
- Middleware/recover: Fix recover middleware panic output formatting by @gaby in #3816
- Middleware/session: correct fresh flag logic in getSession by @sixcolors in #3825
- Fix spelling issues by @jsoref in #3813
- Fix fatal error calls in adapter_test.go by @ReneWerner87 in #3810
- Fix usage of runtime RO data for ppc64 and s390x platforms by @gaby in #3772
- Respect DisablePathNormalizing during client requests by @gaby in #3773
- Always close form file by @arturmelanchyk in #3786
- Fix gocritic httpNoBody and hugeParam issues by @ReneWerner87 in #3855
- Prevent memory corruption in internal memory storage from pooled buffers by @sixcolors in #3828
- Avoid writing into released Response in core::execFunc() by @arturmelanchyk in #3830
- Remove Flash Cookie from Response headers after parsing by @gaby in #3840
- Fix binder splitting for pointer-backed slice fields by @gaby in #3844
- Execute middleware routes when handling errors by @gaby in #3846
- fix copying of key/values in internal/memory by @sixcolors in #3829
- Fix maintain CustomCtx across middlewares by @ReneWerner87 in #3852
- Enhance Body handling in setConfigToRequest for better type su… by @K0ng2 in #3820
🛠️ Maintenance
- Replace release-drafter autolabel with fuxingloh/multi-labeler by @gaby in #3872
- Golangci-lint issue for go1.25.0 by @laughing-nerd in #3775
- Add automation for v3 label assignments by @ReneWerner87 in #3845
- Update workflow path filters for Go module changes by @ReneWerner87 in #3856
- Improvements to GitHub Workflows by @gaby in #3857
- Update release-drafter workflow by @gaby in #3860
- Add support for codespell in spell-check workflow by @gaby in #3850
- Add spell check CI workflow by @gaby in #3814
- Fix autolabeler for release-drafter by @gaby in #3865
- Enable manual workflow dispatch for CI by @ReneWerner87 in #3881
- build(deps): bump github.com/valyala/fasthttp from 1.65.0 to 1.67.0 by @dependabot[bot] in #3790
- build(deps): bump golang.org/x/net from 0.44.0 to 0.45.0 by @dependabot[bot] in #3791
- build(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #3792
- build(deps): bump golang.org/x/text from 0.29.0 to 0.30.0 by @dependabot[bot] in #3797
- build(deps): bump golang.org/x/crypto from 0.42.0 to 0.43.0 by @dependabot[bot] in #3796
- build(deps): bump golang.org/x/net from 0.45.0 to 0.46.0 by @dependabot[bot] in #3795
- build(deps): bump actions/setup-node from 5 to 6 by @dependabot[bot] in #3804
- build(deps): bump github.com/shamaton/msgpack/v2 from 2.3.1 to 2.4.0 by @dependabot[bot] in #3808
- build(deps): bump github.com/valyala/fasthttp from 1.67.0 to 1.68.0 by @dependabot[bot] in #3819
- build(deps): bump github.com/tinylib/msgp from 1.4.0 to 1.5.0 by @dependabot[bot] in #3823
- build(deps): bump github.com/gofiber/utils/v2 from 2.0.0-rc.1 to 2.0.0-rc.2 by @dependabot[bot] in #3853
- build(deps): bump golang.org/x/crypto from 0.43.0 to 0.44.0 by @dependabot[bot] in #3863
- build(deps): bump golang.org/x/net from 0.46.0 to 0.47.0 by @dependabot[bot] in #3861
- build(deps): bump github/codeql-action from 4.31.2 to 4.31.3 by @dependabot[bot] in #3866
- build(deps): bump DavidAnson/markdownlint-cli2-action from 20.0.0 to 21.0.0 by @dependabot[bot] in #3873
- build(deps): bump actions/checkout from 5.0.0 to 5.0.1 - by @dependabot[bot] in #3877
- build(deps): bump github/codeql-action from 4.31.3 to 4.31.4 by @dependabot[bot] in
#3878
📚 Documentation
- Fix typos in some files by @khanhkhanhlele in #3847
- Document usage of reverse proxies for SendEarlyHints by @akilesh1706 in #3778
- Fix broken link in the Routing guide by @guerzon in #3831
New Contributors
- @akilesh1706 made their first contribution in #3778
- @laughing-nerd made their first contribution in #3775
- @jsoref made their first contribution in #3812
- @K0ng2 made their first contribution in #3820
- @guerzon made their first contribution in #3831
- @khanhkhanhlele made their first contribution in #3847
A fully-detailed view of all new features and the migration guide is available in our
https://docs.gofiber.io/next/whats_new
Full Changelog: v3.0.0-rc.2...v3.0.0-rc.3
v2.52.10
🐛 Bug Fixes
- Handle invalid path in filesystem by @rokostik in #3688
- Fix recover middleware panic output formatting by @ReneWerner87 in #3818
- Fix enforcement of Immutable config for some edge cases by @gaby in #3835
📚 Documentation
- Document RoutePatternMatch by @ReneWerner87 in #3723
New Contributors
Full Changelog: v2.52.9...v2.52.10
v3.0.0-rc.2
🚀 New Features
- Add request inspection helpers by @gaby in #3727
- Add extractors package by @sixcolors in #3725
- Add support for redacting values by @gaby in #3759
🧹 Updates
- Middleware/cache: Improve Cache middleware defaults by @gaby in #3740
- Middleware/cache: Fix cache cleanup and redact token values by @gaby in #3757
- Middleware/compress: Improve Compress middleware RFC compliance by @gaby in #3745
- Middleware/csrf: update CSRF middleware to use shared extractors by @sixcolors in #3746
- Middleware/keyAuth: Improve KeyAuth middleware RFC compliance by @gaby in #3742
- Middleware/keyAuth: Update keyauth middleware to use shared extractors by @sixcolors in #3747
- Middleware/session: Migrate Session middleware to new extractors package by @sixcolors in #3744
- Handle Transfer-Encoding bodies in HasBody by @gaby in #3748
- Improve error handling when using storage drivers by @gaby in #3754
- Improve performance analyseConstantPart by @ksw2000 in #3753
- Ensure middleware prefix matching requires slash boundary by @ReneWerner87 in #3755
- Use sync.Pool for Client hooks by @arturmelanchyk in #3758
- Avoid locking in gc() if nothing to delete by @arturmelanchyk in #3765
- Improve allocations for Request Params() by @arturmelanchyk in #3766
- Cleanup return error logic in Bind() by @arturmelanchyk in #3764
- Update RouteChain function by @ReneWerner87 in #3761
- Expand Binder tests coverage by @gaby in #3714
🐛 Bug Fixes
- Middleware/BasicAuth: Improve BasicAuth middleware RFC compliance by @gaby in #3743
- Middleware/Adapter: Handle Unix sockets in adaptor middleware by @Dishank-Sen in #3760
- Fix support for context.Context by @gaby in #3720
🛠️ Maintenance
- build(deps): bump github.com/tinylib/msgp from 1.3.0 to 1.4.0 by @dependabot[bot] in #3716
- build(deps): bump github.com/stretchr/testify from 1.11.0 to 1.11.1 by @dependabot[bot] in #3715
- build(deps): bump github.com/shamaton/msgpack/v2 from 2.3.0 to 2.3.1 by @dependabot[bot] in #3719
- build(deps): bump benchmark-action/github-action-benchmark from 1.20.4 to 1.20.5 by @dependabot[bot] in #3730
- build(deps): bump actions/setup-go from 5 to 6 by @dependabot[bot] in #3732
- build(deps): bump actions/setup-node from 4 to 5 by @dependabot[bot] in #3733
- build(deps): bump codecov/codecov-action from 5.5.0 to 5.5.1 by @dependabot[bot] in #3734
- build(deps): bump golang.org/x/crypto from 0.41.0 to 0.42.0 by @dependabot[bot] in #3737
- build(deps): bump golang.org/x/net from 0.43.0 to 0.44.0 by @dependabot[bot] in #3738
- build(deps): bump benchmark-action/github-action-benchmark from 1.20.5 to 1.20.7 by @dependabot[bot] in #3736
📚 Documentation
- Improve wording and fix typos by @gaby in #3713
- Full audit of documentation by @gaby in #3717
- Add RoutePatternMatch documentation by @ReneWerner87 in #3722
- Clarify context interface implementation by @ReneWerner87 in #3729
- Ensure all exported elements are documented by @gaby in #3752
New Contributors
- @arturmelanchyk made their first contribution in #3758
- @Dishank-Sen made their first contribution in #3760
A fully-detailed view of all new features and the migration guide is available in our
https://docs.gofiber.io/next/whats_new
Full Changelog: v3.0.0-rc.1...v3.0.0-rc.2
v3.0.0-rc.1
🚀 New Features
- Middleware/basicAuth: Add Fiber Context to BasicAuth Authorizer by @gaby in #3621
- Middleware/basicAuth: Add HeaderLimit option to BasicAuth middleware by @gaby in #3620
- Middleware/basicAuth: Support hashed BasicAuth passwords by @gaby in #3631
- Middleware/csrf: Enhance extractor functionality with metadata and security validation by @sixcolors in #3630
- Middleware/limiter: Support for disabling response headers in Limiter Middleware by @gaby in #3618
- Middleware/proxy: Add KeepConnectionHeader option to Proxy middleware by @gaby in #3662
- Middleware/session: Introduce Extractor pattern for session ID retrieval by @sixcolors in #3625
- Support for SendEarlyHints by @pjebs in #3483
- Support generic configurable logger by @ReneWerner87 in #3705
- Add conditional copy helpers by @ReneWerner87 in #3703
- Add support for embedded Koa-Style Req and Res structs by @grivera64 in #3533
- Add default UTF-8 charset by @Copilot in #3583
🧹 Updates
- Middleware/basicAuth: Remove SHA-1/MD5 support in BasicAuth middleware by @gaby in #3634
- Middleware/basicAuth: Remove support for PasswordFromContext from BasicAuth middleware by @gaby in #3638
- Middleware/cors: Fix CORS docs and comments by @gaby in #3637
- Middleware/csrf: Fix CSRF error message mismatch with documentation by @gaby in #3636
- Middleware/csrf: Fix CSRF subdomain wildcard boundary by @gaby in #3694
- Middleware/keyAuth: Extractor-Based Configuration and Enhanced Flexibility by @sixcolors in #3685
- Middleware/keyAuth: Return generic errors in KeyAuth middleware by @gaby in #3692
- Middleware/pprof: Fix pprof middleware docs and default config by @gaby in #3642
- Add tests for quoteRawString by @gaby in #3613
- Replace math/rand with crypto/rand by @gaby in #3508
- Enable govet shadow by @ReneWerner87 in #3617
- Fix Cookie SameSite constants to Pascal case per RFC specification by @Copilot in #3608
- Fix timing for streaming test by @ReneWerner87 in #3628
- Reduce allocation in AutoFormat by @ReneWerner87 in #3652
- Add sync pool and release helpers for Bind by @ReneWerner87 in #3660
- Add CBOR support to AutoFormat() by @gaby in #3665
- Add missing checks in Ctx tests by @gaby in #3670
- Stabilize interrupted stream writer test by @ReneWerner87 in #3669
- Fix AcceptsLanguages() RFC compliance by @gaby in #3672
- Respect immutable config in Params(), Protocol(), and Body() by @gaby in #3676
- Optimize Fresh header parsing for fasthttp 1.65 by @ReneWerner87 in #3687
- Use ephemeral ports in unit tests by @ReneWerner87 in #3686
- Delay routing error creation by @ReneWerner87 in #3683
- Improve Req/Res Benchmarks by @grivera64 in #3693
- Using reflect.TypeAssert by @cuiweixie in #3698
- Skip unstable GenericParseType benchmarks by @ReneWerner87 in #3614
- Require Go 1.25 by @ReneWerner87 in #3682
🐛 Bug Fixes
- Middleware/cors: Fix CORS subdomain wildcard boundary by @gaby in #3690
- Middleware/limiter: Fix limiter middleware not counting fiber.NewErrorf responses as failed requests by @Copilot in #3623
- Middleware/static: Fix Static middleware browser support for subdirectories by @efectn in #3673
- Fix retry config handling by @gaby in #3609
- Fix race in cookie tests by @ReneWerner87 in #3629
- Fix bind All() merging logic by @gaby in #3659
🛠️ Maintenance
- build(deps): bump kenchan0130/actions-system-info from 1.3.1 to 1.4.0 by @dependabot[bot] in #3679
- build(deps): bump github.com/shamaton/msgpack/v2 from 2.2.3 to 2.3.0 by @dependabot[bot] in #3678
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #3681
- build(deps): bump github.com/valyala/fasthttp from 1.64.0 to 1.65.0 by @dependabot[bot] in #3684
- build(deps): bump github.com/gofiber/utils/v2 from 2.0.0-beta.14 to 2.0.0-rc.1 by @dependabot[bot] in #3689
- build(deps): bump codecov/codecov-action from 5.4.3 to 5.5.0 by @dependabot[bot] in #3701
- build(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.0 by @dependabot[bot] in #3712
📚 Documentation
- Add early hints documentation by @ReneWerner87 in #3697
- Add migration tool info by @ReneWerner87 in #3708
- Add context guide by @gaby in #3677
- Fix EarlyData middleware docs by @gaby in #3646
- Fix Skip middleware docs by @gaby in #3649
- Fix context changes doc by @ReneWerner87 in #3650
- Fix RequestID docs by @gaby in #3648
- Fix Proxy middleware docs by @gaby in #3647
- Fix Compress middleware docs by @gaby in #3645
- Fix Cache middleware docs by @gaby in #3644
- Fix Favicon middleware documentation by @gaby in #3640
- Fix Static middleware docs by @gaby in #3643
- Fix Healthcheck middleware documentation by @gaby in #3657
- Fix KeyAuth middleware docs by @gaby in #3641
- Improve Timeout middleware documentation by @gaby in #3675
- Add Learning Resources section with Go Interview Practice platform by @RezaSi in #3691
- Fix typos in documentation by @kianmeng in #3695
- document utils package migration by @ReneWerner87 in #3704
- Note CSRF ContextKey removal by @ReneWerner87 in #3706
- Note removal of context keys by @ReneWerner87 in #3707
New Contributors
- @RezaSi made their first contribution in #3691
- @kianmeng made their first contribution in #3695
- @cuiweixie made their first contribution in #3698
A fully-detailed view of all new features and the migration guide is available in our
https://docs.gofiber.io/next/whats_new
Full Changelog: v3.0.0-beta.5...v3.0.0-rc.1
v3.0.0-beta.5
🚀 New Features
- Middleware/keyAuth: Add support for context.Context in keyauth middleware by @vhespanha in #3287
- Middleware/logger: Add Skip function to logger middleware by @JIeJaitt in #3333
- Middleware/logger: Add predefined log formats by @edvardsanta in #3359
- Middleware/logger: Add support for ForceColors in Logger middleware by @yorickdewid in #3428
- Middleware/session: Add support for Keys() in session middleware by @sixcolors in #3517
- Middelware/timeout: Add config for Timeout middleware by @ReneWerner87 in #3604
- Add End() method to Ctx by @grivera64 in #3280
- Improve and Optimize ShutdownWithContext Func by @JIeJaitt in #3162
- Add support for multipart file binding by @efectn in #3309
- Add Req and Res API by @nickajacks1 in #2894
- Add support for application state management by @efectn in #3360
- Enhance CheckConstraint method for improved error handling by @JIeJaitt in #3356
- Add
Allmethod to Bind by @edvardsanta in #3373 - Add Support for service dependencies by @mdelapenya in #3434
- Add Support for Removing Routes by @ckoch786 in #3230
fiber.Contextimplement context.Context by @pjebs in #3382- Add support for NewErrorf by @gaby in #3463
- Add NewWithCustomCtx initialization helper by @ReneWerner87 in #3476
- Add UNIX socket support by @LaptopCat in #3535
- Add support for Msgpack by @hotrungnhan in #3565
- Add context methods to
fiber.Storageinterface by @efectn in #3566
🧹 Updates
- Middleware/basicAuth: Enhance BasicAuth middleware to better comply with RFC 6750 by @gaby in #3484
- Middleware/basicAuth: Improve BasicAuth middleware default security by @gaby in #3522
- Middleware/cache: Improve cache middleware RFC compliance by @gaby in #3488
- Middleware/cors: Improve CORS middleware response headers by @gaby in #3505
- Middleware/cors: Improve CORS tests coverage by @gaby in #3530
- Middleware/csrf: Improve CSRF tests coverage by @gaby in #3531
- Middleware/csrf: Add missing CSRF token extractor tests by @gaby in #3527
- Middleware/csrf: Refactor CSRF middleware and enhance documentation by @sixcolors in #3598
- Middleware/csrf: Enhance CSRF tests to address unsafe header value issue (#2045) by @sixcolors in #3485
- Middleware/earlyData: Improve EarlyData middleware tests coverage by @gaby in #3520
- Middleware/encryptCookie: Enhance config validation in EncryptCookie middleware by @gaby in #3491
- Middleware/envVar: Refactor EnvVar middleware by @gaby in #3513
- Middleware/helmet: Improve Helmet middleware tests coverage by @gaby in #3523
- Middleware/idempotency: Improve Idempotency middleware tests coverage by @gaby in #3521
- Middleware/keyAuth: Enhance KeyAuth middleware to better comply with RFC 6750 by @gaby in #3482
- Middleware/logger: Logger Middleware tests to use regex for time validation by @ReneWerner87 in #3392
- Middleware/timeout: unify and enhance timeout middleware by @ReneWerner87 in #3275
- Middleware/proxy: Fix proxy middleware tests for offline environments by @gaby in #3467
- Middleware/proxy: Improve proxy middleware by @ReneWerner87 in #3468
- Middleware/static: Improve static middleware security by @gaby in #3595
- Middleware/static: Improve sanitizePath performance by @ReneWerner87 in #3601
- Value of map is unused in uniqueRouteStack by @ksw2000 in #3320
- Reduce the Memory Usage of ignoreHeaders by @ksw2000 in #3322
- Improve Performance of getSplicedStrList by @ksw2000 in #3318
- Add go1.24 to CI matrix by @gaby in #3325
- Migrate randString to rand v2 by @ksw2000 in #3329
- Sorting error in sortAcceptedTypes by @ksw2000 in #3331
- Reduce the memory usage of RoutePatternMatch by @ksw2000 in #3335
- Replace findLastCharsetPosition with strings.LastIndexByte by @ksw2000 in #3338
- Replace isInCharset with bytes.IndexByte by @ksw2000 in #3342
- Optimize routeParser by using sync.Pool by @ksw2000 in #3343
- Fix linter workflow failures by @gaby in #3354
- Mark unused tests with t.SkipNow by @alexandear in #3366
- Remove two string fields in DefaultCtx to save 32 bytes by @ksw2000 in #3353
- Replace treePath with treePathHash in DefaultCtx to reduce memory usage by @ksw2000 in #3368
- Add Immutable benchmarks for default case by @gaby in #3374
- Remove redundant field
methodinDefaultCtxby @ksw2000 in #3372 - Simplify HealthCheck middleware by @gaby in #3380
- Add findNextNonEscapedCharPosition for single-byte charset cases by @ksw2000 in #3378
- Change c.Redirect() default status by @andradei in #3415
- Improve routing treeBuild flow by @ReneWerner87 in #3456
- Add unit-test for header injection by @gaby in #3470
- Performance optimizations by @ReneWerner87 in #3477
- Make genericParseType return error by @ksw2000 in #3473
- Add URI Test case for Test_Ctx_Binders by @ReneWerner87 in #3480
- Improve performance for "equalFieldType" function by @ReneWerner87 in #3479
- Update minimum go version to 1.24 by @ReneWerner87 in #3481
- Use slices.Contains to simplify code by @tongjicoder in #3486
- Use maps.Copy to simplify code by @alexandear in #3490
- Remove deprecated comments and documenting recent changes by @ReneWerner87 in #3498
- Update loop syntax for retry mechanism by @MonkyMars in #3516
- Remove repo codecov.yml by @gaby in #3525
- Improve Retry addon tests coverage by @gaby in #3526
- Improve hooks test coverage by @gaby in #3524
- Update codecov configuration by @gaby in #3528
- Improve Binder tests coverage by @gaby in #3529
- Use GetState to reduce duplicate code by @ksw2000 in #3542
- Improve Cookie() validation by @gaby in #3546
- Improve Router tests coverage by @gaby in #3550
- Improve Accept* compliance with RFC 9110 by @gaby in #3548
- Refactor fasthttp iter calls to range loops by @ReneWerner87 in #3559
- Fix compression benchmarks by @gaby in #3561
- Add iterator helpers for client types by @ReneWerner87 in #3560
- Improve iterator performance. by @ksw2000 in #3562
- Update utils dependency by @ReneWerner87 in #3576
- Refactor Opt-in support for CBOR by @ReneWerner87 in #3580
- Simplify generic function calls by @axrav in #3578
- Add modernize lint by @ReneWerner87 in #3590
- Revert "Add support for context.Context in keyauth middleware" by @sixcolors in #3364
- Revert "Add Context Support to RequestID Middleware" by @sixcolors in #3365
🐛 Bug Fixes
- Middleware/envVar: Fix missing Allow header in EnvVar middleware per RFC 9110 by @gaby in #3570
- Middleware/static: Fix static/favicon middlewares file descriptor leaks by @gaby in https://github.com/gofiber/fiber/pu...
v2.52.9
🐛 Bug Fixes
- Add upper index limit for parsers by @gaby in #3503
- Embedded struct parsing by @ReneWerner87 in #3478
- Fix Content-Type comparison in
Is()by @gaby in #3537 - Fix MIME type equality checks by @gaby in #3603
Full Changelog: v2.52.8...v2.52.9