# goa

> Design-first Go framework that generates API code, documentation, and clients. Define once in an elegant DSL, deploy as HTTP and gRPC services with zero drift between code and docs.

- **URL**: https://www.freshcrate.ai/projects/goa
- **Author**: goadesign
- **Category**: Frameworks
- **Latest version**: `v3.28.0` (2026-06-02)
- **License**: MIT
- **Source**: https://github.com/goadesign/goa
- **Homepage**: https://goa.design
- **Language**: Go
- **GitHub**: 6,076 stars, 580 forks
- **Registry**: github
- **Tags**: `api`, `code-generation`, `go`, `goa`, `golang`, `microservices`, `openapi`, `rest`

## Description

Design-first Go framework that generates API code, documentation, and clients. Define once in an elegant DSL, deploy as HTTP and gRPC services with zero drift between code and docs.

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v3.28.0` | 2026-06-02 | High | Goa v3.28.0 focuses on faster generation for large designs, more accurate OpenAPI security output, and compatibility with the current Go 1.25 toolchain.  ## Highlights  - Code generation now avoids repeated import recomputation across generated file batches, significantly reducing generation time for large designs. In downstream testing, a full generation script dropped from about 46 seconds to about 11 seconds. [#3932](https://github.com/goadesign/goa/pull/3932) - OpenAPI v2 and v3 generation n |
| `v3.27.0` | 2026-05-24 | High | Goa v3.27.0 adds first-class support for standard Bearer token authentication and improves generated code in a few places that matter when real projects turn on stricter typing and linting.  ## Highlights  - Added `BearerSecurity` and `BearerToken` for APIs that use the standard `Authorization: Bearer` format without needing JWT-specific DSL names. This gives generic bearer-token APIs clearer designs, generated code, and OpenAPI output. (#3925) - Fixed HTTP path and query parameter generation fo |
| `v3.26.0` | 2026-04-12 | High | Goa v3.26.0 improves code generation correctness across HTTP and gRPC, adds support for cookie-backed API key inference, and reduces generator churn for downstream users.  ## Highlights  - Added cookie-backed API key security inference across generated HTTP code and OpenAPI output. - Fixed mixed gRPC streaming request generation by moving one-shot payloads back into the typed protobuf channel instead of implicitly rewriting them into metadata. - Improved generator stability with deterministic un |
| `v3.25.3` | 2026-02-19 | Low | ## Highlights  - Fixes a code generation regression where HTTP request decoders for **primitive payloads** (e.g. `string`, `bool`, numeric types) could emit invalid early returns (`return nil, err`) on validation/decode errors. - Prevents downstream build failures such as `cannot use nil as string value in return statement` for designs using primitive payloads with validations (e.g. `Format(FormatIP)` on path params). - Adds regression coverage, including a golden-backed case for `Format(FormatI |
| `v3.25.2` | 2026-02-19 | Low | ## Highlights  - Fixes code generation for `OneOf` primitive aliases when service types are emitted to custom packages via `struct:pkg:path`. - Prevents `undefined: Value*` compile errors in generated service code for affected designs. - Adds regression coverage for nested types and JSON-tagged field variants to prevent this from reappearing.  ## What's Changed  - codegen/service: fix primitive OneOf alias emission with struct:pkg:path by @raphael in #3900  ## Full Changelog  https://github.com/ |
| `v3.25.1` | 2026-02-16 | Low | ## Highlights  - **HTTP route tagging fix (otelhttp)**: v3.25.1 completes the `r.Pattern` route tagging work from v3.25.0 so `otelhttp` (v0.65.0+) reliably records the `http.route` span attribute and metric route when used as a mux middleware (`mux.Use(otelhttp.NewMiddleware(...))`). ([#3898](https://github.com/goadesign/goa/pull/3898)) - **Better DSL error messages**: validation errors include `file:line` locations pointing to the offending design declaration, making it much faster to find and |
| `v3.25.0` | 2026-02-16 | Low | ## Highlights  - **Automatic HTTP route tagging**: the default Goa muxer now sets `r.Pattern` on every dispatched request, enabling observability middleware like `otelhttp` (v0.65.0+) to tag spans and metrics with the matched route automatically — no per-handler wrapping or plugin required. ([#3897](https://github.com/goadesign/goa/pull/3897)) - **Better DSL error messages**: validation errors now include `file:line` locations pointing to the offending design declaration, making it much faster t |
| `v3.24.3` | 2026-02-07 | Low | ## Highlights - **Codegen (views/OneOf)**: fix generated examples when a `ResultType` contains a `OneOf` (union) field by emitting the required union helpers in the `views` package. ([#3884](https://github.com/goadesign/goa/pull/3884)) - **Codegen (mixed unary + SSE)**: support services that expose both unary and SSE streaming results cleanly. ([#3883](https://github.com/goadesign/goa/pull/3883)) - **HTTP client codegen**: fixes and improvements to the generated HTTP client. ([#3879](https://git |
| `v3.24.2` | 2026-02-01 | Low | ## Highlights - **Codegen correctness for union transforms**: sum-type union **object branches now use the generated per-type helper transforms**, avoiding branch-local inline conversions that could disagree on details (notably **nested map key casts**). ([#3880](https://github.com/goadesign/goa/pull/3880)) - **Qualified type refs are now stable and real**: transport codegen no longer “suffixes” the `Type` portion of `pkg.Type` refs (preventing invalid refs like `pkg.Foo2`), while still **reusin |
| `v3.24.1` | 2026-01-18 | Low | ### Goa v3.24.1  ### Highlights - **Fix: unions + custom `struct:pkg:path` now generate valid code**    v3.24.0 introduced generated JSON marshalers for union sum types. When a union (or a type containing a union) was generated into a separate file via `Meta("struct:pkg:path", ...)`, the generated file could miss the required `encoding/json` import, causing compile failures.    v3.24.1 fixes this by ensuring service codegen `struct:pkg:path` “User types” files include the JSON import.  ### Chang |

## Citation

- HTML: https://www.freshcrate.ai/projects/goa
- Markdown: https://www.freshcrate.ai/projects/goa.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/goa/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
