Skip to main content
Version: Next

⚑ Make Fiber Faster

Custom JSON Encoder/Decoder​

Fiber defaults to the standard encoding/json for stability and reliability. If you need more speed, consider these libraries:

Example
package main

import "github.com/gofiber/fiber/v3"
import "github.com/goccy/go-json"

func main() {
app := fiber.New(fiber.Config{
JSONEncoder: json.Marshal,
JSONDecoder: json.Unmarshal,
})

// ...
}

References​

Alternative Regex Engines for regex() Constraints​

Fiber route patterns still do not support general regex routes, but you can swap the compiler used by regex() parameter constraints through Config.RegexHandler. This lets you try high-performance engines such as coregex on the matching path.

Configure RegexHandler​

Set RegexHandler to the compile function you want Fiber to use for regex() constraints.

Example
package main

import (
"github.com/coregx/coregex"
"github.com/gofiber/fiber/v3"
)

func main() {
app := fiber.New(fiber.Config{
RegexHandler: coregex.MustCompile,
})

app.Get("/api/:id<regex(\\d+)>", func(c fiber.Ctx) error {
return c.SendString("ID: " + c.Params("id"))
})
}

You can also set it explicitly to the standard library default:

Example
package main

import (
"regexp"

"github.com/gofiber/fiber/v3"
)

func main() {
app := fiber.New(fiber.Config{
RegexHandler: regexp.MustCompile,
})

_ = app
}

Notes​

  • RegexHandler only affects regex() parameter constraints
  • invalid patterns still panic during route registration because Fiber uses MustCompile-style semantics
  • Fiber may invoke RegexHandler more than once per route while parsing raw and normalized route patterns during registration
  • compiled matchers are reused across requests, so custom matchers must be safe for concurrent use
  • Zero Allocation: why Ctx values are reused across requests and how to copy them safely
  • Benchmarks: how Fiber compares to other frameworks