Fiber Go web framework inspired by Express. Covers routing, middleware, context, WebSocket, and prefork. Use for Express-like Go development. USE WHEN: user mentions "fiber", "gofiber", "express-like go", "fasthttp go", asks about "fiber middleware", "fiber context", "fiber prefork", "fiber websocket", "go express", "fast go framework" DO NOT USE FOR: Gin projects - use `gin` instead, Echo projects - use `echo` instead, Chi projects - use `chi` instead, standard net/http compatibility required

GitHub
Install command
npx skhub add claude-dev-suite/fiber
Markdown
SKILL.md

Fiber Core Knowledge

Full Reference: See advanced.md for validation with go-playground/validator, WebSocket setup, custom error handling, prefork mode, and graceful shutdown.

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: fiber for comprehensive documentation.

Basic Setup

package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World!")
    })

    app.Listen(":8080")
}

Configuration

app := fiber.New(fiber.Config{
    Prefork:       true,               // Multiple processes
    StrictRouting: true,               // /foo != /foo/
    CaseSensitive: true,               // /Foo != /foo
    BodyLimit:     4 * 1024 * 1024,    // 4MB
    ReadTimeout:   10 * time.Second,
    WriteTimeout:  10 * time.Second,
})

Routing

app.Get("/users", listUsers)
app.Get("/users/:id", getUser)
app.Post("/users", createUser)
app.Put("/users/:id", updateUser)
app.Delete("/users/:id", deleteUser)

// Path parameters
app.Get("/users/:id", func(c *fiber.Ctx) error {
    id := c.Params("id")
    return c.JSON(fiber.Map{"id": id})
})

// Optional parameter
app.Get("/users/:name?", func(c *fiber.Ctx) error {
    name := c.Params("name", "anonymous")
    return c.JSON(fiber.Map{"name": name})
})

// Route groups
api := app.Group("/api")
v1 := api.Group("/v1")
v1.Get("/users", listUsersV1)

Context - Request Data

app.Post("/users", func(c *fiber.Ctx) error {
    // Path params
    id := c.Params("id")
    idInt, _ := c.ParamsInt("id")

    // Query params
    page := c.Query("page", "1")
    pageInt := c.QueryInt("page", 1)

    // Headers
    auth := c.Get("Authorization")

    // Cookies
    session := c.Cookies("session_id")

    return c.SendStatus(fiber.StatusOK)
})

Body Parsing

type CreateUserRequest struct {
    Name  string `json:"name"`
    Email string `json:"email"`
}

app.Post("/users", func(c *fiber.Ctx) error {
    var req CreateUserRequest
    if err := c.BodyParser(&req); err != nil {
        return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
            "error": err.Error(),
        })
    }
    return c.Status(fiber.StatusCreated).JSON(req)
})

Middleware

import (
    "github.com/gofiber/fiber/v2/middleware/logger"
    "github.com/gofiber/fiber/v2/middleware/recover"
    "github.com/gofiber/fiber/v2/middleware/cors"
    "github.com/gofiber/fiber/v2/middleware/limiter"
)

app.Use(recover.New())
app.Use(logger.New())

app.Use(cors.New(cors.Config{
    AllowOrigins: "https://example.com",
    AllowMethods: "GET,POST,PUT,DELETE",
}))

app.Use(limiter.New(limiter.Config{
    Max:        100,
    Expiration: 1 * time.Minute,
}))

Health Checks

app.Get("/health", func(c *fiber.Ctx) error {
    return c.JSON(fiber.Map{"status": "healthy"})
})

app.Get("/ready", func(c *fiber.Ctx) error {
    if err := db.Ping(); err != nil {
        return c.Status(fiber.StatusServiceUnavailable).JSON(fiber.Map{
            "status": "not ready",
        })
    }
    return c.JSON(fiber.Map{"status": "ready"})
})

When NOT to Use This Skill

  • Gin projects - Gin has different context API
  • Echo projects - Echo has different middleware patterns
  • Chi projects - Chi is stdlib-compatible
  • Standard net/http required - Fiber uses fasthttp, not net/http
  • gRPC services - Fiber doesn't support gRPC

Anti-Patterns

Anti-PatternWhy It's BadSolution
Not calling c.Next() in middlewareBreaks middleware chainAlways call c.Next() unless stopping
Using c.Body() multiple timesBody is consumedStore body in variable first
Missing error handlingSilent failuresCheck BodyParser() return value
Not setting Prefork carefullyMay cause issues with stateOnly use Prefork without shared state
No rate limitingDDoS vulnerabilityUse limiter middleware

Quick Troubleshooting

ProblemDiagnosisFix
Route not foundWrong method or pathCheck exact route registration
Body parsing failsWrong content-typeEnsure Content-Type header is correct
CORS errorsNot configuredUse cors.New() middleware
Middleware not executingWrong orderPlace before route handlers
Prefork issuesShared state problemsAvoid shared mutable state with Prefork

Production Checklist

  • Recovery middleware enabled
  • CORS configured
  • Rate limiting enabled
  • Request body size limit set
  • Timeouts configured
  • Structured logging
  • Health/readiness endpoints
  • Graceful shutdown
  • Input validation

Reference Documentation

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/backend-frameworks/fiber

Default branch

main

Latest commit

9496306

Tree SHA

fe4e2f1