Back to Fiber

⚡ Make Fiber Faster

docs/guide/faster-fiber.md

3.3.02.4 KB
Original Source

Custom JSON Encoder/Decoder

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

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

go
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:

go
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