mrkeyoor.com_
Sun 25 Oct 08:45 UTC
Dev Toolsevaluationupdated 24 Oct 2026

gofr review

GoFr is an opinionated Go framework for microservices. Its README emphasizes Kubernetes deployment and built-in observability, and lists HTTP, gRPC, configuration, logging, tracing, metrics, Pub/Sub and other service features. These are documented capabilities; our recorded run did not exercise them as a deployed application.

-7stars / 7d
Verdict

GoFr is worth evaluating when its documented combination of microservice features matches your project. Our 2026-10-15 run at dbeb125 recorded successful install and build steps, but retained build evidence stops at vet-exit:0, and the test command failed across multiple packages. That warrants reproduction and diagnosis before adoption. It does not establish that GoFr is broken or that a sample service was successfully built and run.

We ran it

Lab card: what happened when we ran gofrScreenshot of gofr (gofr.dev)
Install✓ · 76s639 packages
Build✓ · 146s
Tests✗ · 156s97 passed · 13 failed of 110 (go test)
Repo1166 files~230,009 lines of source · 15.9 MB · 5 CI workflows · Dockerfile

Answers from our run

Does gofr build from source?

Dependencies installed in 76 seconds (639 packages), and the build succeeded in 146 seconds. We cloned commit dbeb125 into a clean Debian container with 3 CPUs and no project-specific setup.

Do gofr's tests pass?

No. The project's own test command finished in 156 seconds and reported 97 passed, 13 failed (go test).

Who should not use gofr?

Projects that want only HTTP routing and prefer to choose their other libraries independently

What are the alternatives to gofr?

Gin, chi. GoFr is worth evaluating when its documented combination of microservice features matches your project.

Setup2/5Limited evidence: install and build steps exited 0, but the build tail only records vet-exit:0, no application or binary check is retained, and the test command exited 1.
Docs3/5Useful evidence with limits: the supplied README gives a toolchain requirement and starter example, and the documentation introduction describes service features. Deeper guide accuracy was not tested.
Community1/5Insufficient evidence to assess community health: contribution invitations do not establish adoption, support response times or contributor activity. This score expresses the evidence gap.
Maturity2/5Limited evidence: the recorded test output includes successful and failing packages, but failure causes, release-tag behavior and production reliability remain unverified.

Who it’s for

Go developers evaluating a framework that combines service features such as HTTP, gRPC, health checks and telemetry
Teams that prefer framework conventions over assembling each service component separately
Contributors willing to reproduce package failures and investigate their prerequisites before drawing conclusions

Who it’s NOT for

Projects that want only HTTP routing and prefer to choose their other libraries independently
Teams unable to meet the README's Go 1.26-or-above requirement
Buyers who need this review to establish production reliability, workload performance or compatibility with their infrastructure; our recorded run does not establish those

Setup reality

In our recorded run on 2026-10-15 at commit dbeb125c20def775a1f1b670d63547c8835c1d14, the install step exited 0 in 76 seconds and recorded 639 dependencies. Its tail shows a Go 1.26.0 toolchain download. The build step exited 0 in 146 seconds, but the retained tail is only vet-exit:0; it does not demonstrate a built application binary. The test step exited 1 in 156 seconds. The parser recorded 97 successful and 13 failing package results, plus seven packages without tests, rather than 110 individual test cases. Exhaustive unique counts were not reconciled against a complete log. No running sample service, installed-binary check or workload benchmark is recorded.

GoFr's appeal is the service plumbing it documents in one framework. The adoption question is whether those conventions suit your service, and what the recorded setup run actually verifies.

What the framework documents

The GoFr README describes an opinionated microservice framework focused on Kubernetes deployment and out-of-the-box observability. It lists REST defaults, configuration, logs, traces, metrics, authentication middleware, gRPC, HTTP services with circuit breakers, Pub/Sub, health checks, migrations, cron jobs, remote log-level changes, Swagger rendering, abstracted filesystems and websockets.

The documentation introduction describes logging, response types, health and readiness monitoring, Prometheus metrics and tracing. These sources explain the intended feature set. Our run did not verify each integration or a Kubernetes deployment.

The README example uses gofr.New(), a GET handler and Run(). A short example helps explain the API, but does not measure the work needed to configure your databases, messaging or telemetry.

What our recorded run establishes

Our stored run began on 2026-10-15 at 03:20:37.143 UTC against commit dbeb125c20def775a1f1b670d63547c8835c1d14. The recorded sandbox had 3 CPUs, 8 GB of memory and image golang:1.24-bookworm. That image label does not establish the toolchain used: the install tail explicitly records go: downloading go1.26.0 (linux/amd64).

Step Recorded result What it establishes
Install Exit 0, 76 seconds; dependency count 639 The harness install step completed. Its retained output shows a toolchain download, not an installed CLI check.
Build Exit 0, 146 seconds; tail vet-exit:0 The harness build step completed successfully. The retained tail does not establish that an application binary was produced or run.
Tests Exit 1, 156 seconds; no harness timeout The test command failed in this checkout and environment. The retained output includes multiple failing packages.

The parser summary records 97 successful package results, 13 failing package results and seven packages without tests. Its total of 110 concerns the successful and failing package results, not individual test cases. These are recorded parser counts; no complete-log reconciliation established exhaustive unique coverage.

The retained output includes failures in HTTP-server, Redis, migration and subscriber examples, as well as gofr.dev/pkg/gofr/metrics/exporters. It names TestMainInitialization, TestBuildResource_carriesRequiredLabelSources and TestBuildResource_schemaURLConflictIsNotAFailure among the failures. This is broader than an isolated exporter-package failure.

The excerpt does not establish the cause of every failure, the state of upstream CI or production reliability. The absence of a harness timeout also does not explain each test's failure. No sample endpoint check, installed-binary check, security audit or measured service workload is recorded.

Toolchain and version boundaries

Both the supplied commit-pinned README and the current repository extract require Go 1.26 or above. Plan around that documented requirement rather than the sandbox image's Go 1.24 label. The download line alone does not prove the exact toolchain used by every later command.

The existing page carries the version label v1.60.1. Our measurements belong to commit dbeb125, not a verified run of that release tag. The supplied evidence does not establish that v1.60.1 is the latest release or support a release-cadence assessment.

Choosing the scope you need

Evaluate GoFr if several of its documented service features are requirements and you are comfortable adopting its conventions. Build a representative service with your actual dependencies, then verify startup, health checks, telemetry and failure handling. Those checks remain work to do; they are not results of this review.

For an HTTP-focused project, Gin documents middleware, JSON binding and validation, route grouping and rendering. Its supplied README also requires Go 1.26 or above. chi documents a composable router compatible with standard net/http handlers and middleware. Choose between these approaches by the scope and handler model you need. We have no comparable setup or workload measurements supporting speed or resource-use rankings here.

How to read the scores

These are editorial evidence ratings, not benchmark results. The rubric is: 1 means the available record cannot support an assessment; 2 means limited evidence with substantial gaps; 3 means useful evidence with material limits; 4 means broad evidence across the relevant tasks; 5 means comprehensive, independently corroborated evidence. A 1 for unknown community health does not mean the community is poor.

Setup receives 2 because the recorded steps lack an application or binary check and the test command failed. Documentation receives 3 because the README and documentation introduction explain setup and feature scope, while deeper guide accuracy was not tested. Community receives 1 because the supplied extracts do not establish response times, contributor activity or adoption. Maturity receives 2 because package-level execution provides some evidence, but failure causes and production behavior remain unresolved.

Start with the README's supported toolchain and a service that resembles your intended deployment. Reproduce and diagnose the package failures before treating this run as an adoption decision.

Alternatives

ProjectWhat it isPick it when
Gin gh↗An HTTP web framework for Go with middleware, JSON binding and validation, route grouping and rendering.Choose Gin when your immediate requirement is an HTTP application framework with these request-handling features. Its supplied README also requires Go 1.26 or above; this is not evidence of easier setup or better performance than GoFr.
chi gh↗A composable Go HTTP router compatible with net/http, with optional middleware packages.Choose chi when standard net/http handlers and middleware are central to your design and you want to assemble the rest of the service separately.

What people are saying

  1. [velocity-scout] gofr-dev/gofr

Sources

  1. GoFr GitHub repository
  2. GoFr documentation

More dev tools reviews

brotli · agentskills · hallmark · ds-harness-remote · PCL · rpcs3 · the whole board →