# Fiber — Express-Inspired Web Framework Written in Go > Fiber is an Express-inspired web framework written in Go, built on top of Fasthttp — the fastest HTTP engine for Go. Familiar Express-like API, zero memory allocation routing, built-in middleware, and WebSocket support. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash mkdir my-api && cd my-api go mod init my-api go get github.com/gofiber/fiber/v2 ``` ```go // main.go package main import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/logger" ) type Asset struct { ID int `json:"id"` Repo string `json:"repo"` Stars int `json:"stars"` } func main() { app := fiber.New() app.Use(logger.New()) app.Use(cors.New()) assets := []Asset{ {1, "react", 230000}, {2, "vue", 210000}, } app.Get("/api/assets", func(c *fiber.Ctx) error { return c.JSON(assets) }) app.Post("/api/assets", func(c *fiber.Ctx) error { var a Asset if err := c.BodyParser(&a); err != nil { return c.Status(400).JSON(fiber.Map{"error": err.Error()}) } a.ID = len(assets) + 1 assets = append(assets, a) return c.Status(201).JSON(a) }) app.Listen(":3000") } ``` ```bash go run main.go curl http://localhost:3000/api/assets ``` ## Intro Fiber is an Express-inspired web framework written in Go, built on top of Fasthttp — the fastest HTTP engine for Go. Fiber aims to ease things up for fast development with zero memory allocation and performance in mind. Familiar API for developers coming from Express.js or Koa. - **Repo**: https://github.com/gofiber/fiber - **Stars**: 39K+ - **Language**: Go - **License**: MIT ## What Fiber Does - **Express-like API** — `app.Get()`, `app.Post()`, familiar method signatures - **Zero memory allocation** — routing uses no heap allocations - **Fasthttp** — fastest HTTP library for Go (not net/http) - **Middleware** — Logger, CORS, Rate Limiter, Compress, ETag, Cache, Helmet - **Template engines** — HTML, Pug, Handlebars, Mustache - **WebSocket** — built-in WebSocket support - **File upload** — multipart form handling - **Static files** — `app.Static()` built in - **Group routing** — Express-style route groups - **Hooks** — OnRoute, OnName, OnGroup lifecycle hooks ## Architecture Built on Fasthttp (no net/http). Fasthttp reuses request objects and uses byte slices instead of strings to eliminate allocations. Fiber wraps this with an Express-like API. Note: Fasthttp is not fully compatible with Go stdlib middleware (requires adaptation). ## Self-Hosting ```bash go build -o server main.go ./server # Single binary, zero deps ``` ## Key Features - Fastest Go web framework (Fasthttp-based) - Zero allocation routing - Express-familiar API - 30+ built-in middleware - WebSocket support - Template engines - Route groups - Prefork mode for multi-core - Graceful shutdown - File upload handling ## Comparison | Framework | HTTP Engine | Allocations | API Style | |---|---|---|---| | Fiber | Fasthttp | Zero | Express | | Gin | net/http + httprouter | Low | Express-like | | Echo | net/http | Low | Express-like | | Chi | net/http | Low | stdlib | | stdlib net/http | net/http | Variable | Raw | ## FAQ **Q: Fiber vs Gin?** A: Fiber is based on Fasthttp (faster but not stdlib-compatible); Gin is based on net/http (compatible with stdlib middleware). Pick Fiber for pure performance, Gin for maximum compatibility. **Q: Fasthttp limitations?** A: Fasthttp does not support HTTP/2 and cannot directly use net/http middleware. You need adapters or give up part of the stdlib integration. **Q: What scenarios is it for?** A: High-QPS REST APIs, microservices needing the lowest latency, and migrating from Express.js to Go. ## Sources - Docs: https://docs.gofiber.io - GitHub: https://github.com/gofiber/fiber - License: MIT --- Source: https://tokrepo.com/en/workflows/fiber-express-inspired-web-framework-written-go-65c0e1cd Author: Script Depot