mrkeyoor.com_
Fri 16 Oct 18:51 UTC
Dataevaluationupdated 11 Oct 2026

graphql-engine review

Hasura GraphQL Engine exposes database records through an API with queries, updates, and access rules. V2 can work with an existing database, while V3 uses separate data connectors and metadata to describe the API.

+8 / 4dstars / 7d
Verdict

Our Hasura CLI build passed in 79 seconds, but its suite failed with 33 failures out of 77 tests, leaving the contributor path unresolved in our sandbox. Hasura is worth evaluating when generated database access and explicit permissions match your application. Choose V2 or V3 first, verify your role boundaries, and investigate the CLI failures before adopting this checkout for development.

We ran it

Lab card: what happened when we ran graphql-engineScreenshot of graphql-engine (hasura.io)
Install✓ · 50s248 packages
Build✓ · 79s
Tests✗ · 62s44 passed · 33 failed of 77 (go test)
Repo13393 files~574,059 lines of source · 342.3 MB · 2 CI workflows

Answers from our run

Does graphql-engine build from source?

Dependencies installed in 50 seconds (248 packages), and the build succeeded in 79 seconds. We cloned commit e77418e into a clean Debian container with 3 CPUs and no project-specific setup.

Do graphql-engine's tests pass?

Not all of them: 44 of 77 passed and 33 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use graphql-engine?

Teams expecting the data API to implement all business behavior: the V2 README routes custom logic through Actions, remote schemas, and webhooks.

What are the alternatives to graphql-engine?

PostGraphile, PostgREST, Supabase. Our Hasura CLI build passed in 79 seconds, but its suite failed with 33 failures out of 77 tests, leaving the contributor path unresolved in our sandbox.

Setup2/5CLI compiles, but 33 tests fail and server setup remains separate
Docs4/5Detailed permission and deployment docs, with generation choices to track
Community4/5October push and concrete issue work across a large open queue
Maturity4/5Active server maintenance, with our CLI suite still failing

Discussed on

  1. hnShow HN: Hasura – Fast, instant GraphQL APIs on Postgres382 points
  2. hnScaling to 1M active GraphQL subscriptions on Postgres353 points
  3. hnStreaming data in Postgres to 1M clients with GraphQL192 points
  4. hnHasura GraphQL Engine and SQL Server182 points
  5. hnIt never makes sense to use foldl on lists in Haskell (2019)171 points

Who it’s for

Teams with an existing database who want generated GraphQL access and subscriptions.
Developers able to integrate their authentication service and verify role-based permissions.
Operators willing to choose between V2 and V3 and maintain the corresponding engine, metadata, and services.

Who it’s NOT for

Teams expecting the data API to implement all business behavior: the V2 README routes custom logic through Actions, remote schemas, and webhooks.
V3 adopters expecting the engine to query a database by itself: its README requires a separate connector and authored metadata.
Contributors requiring a passing fresh-container CLI suite: our run had 33 failed tests out of 77.
Teams expecting identity management to arrive with the generated API: the V2 README describes integration with an existing authentication system.

Setup reality

Our sandbox installed commit e77418e's Go project in ./cli/ in 50 seconds, adding 248 packages. The build passed in 79 seconds. Tests failed with exit 1 in 62 seconds: 44 passed and 33 failed of 77. The tail names migration, seed, and server-state failures without their underlying causes. This measured the CLI, not the GraphQL server.

An engine deployment needs database connections, metadata, and configured access rules. CLI usage takes an endpoint and admin secret. V2 can integrate an existing authentication service; V3 needs separate data connectors and metadata authored for your database models. The sample V2 Compose file enables development mode and leaves the admin secret commented out.

Our run used Go 1.24 on Debian with 3 CPUs and 8 GB RAM. CLI contributor guidance also lists Docker, Compose, and Node, with engine-image and binary-path settings for integration checks. Those requirements do not establish why our 33 tests failed.

An existing database can become a GraphQL API

Hasura V2 can expose an existing database through GraphQL, with filtering, mutations, and subscriptions described in its README. That is useful when a frontend needs related records and live updates while your team already owns the database. The bargain is attractive: fewer routine endpoints to write. You still decide which tables belong in the API and which requests each user may make.

Our checkout occupied 342.3 MB and contained 13,393 files with roughly 574,059 source lines. That breadth includes several parts of the Hasura ecosystem. The sandbox measured the Go project in ./cli/, not the GraphQL server. Keep that scope in mind before reading a successful build as proof that the API service itself ran. The CLI manages an engine deployment, and the engine has its own runtime requirements.

What happened when we ran it

Our sandbox installed commit e77418e's CLI dependencies in 50 seconds, adding 248 packages, then completed the build in 79 seconds. We ran it on October 10, 2026, in a fresh Debian container using Go 1.24, 3 CPUs, and 8 GB of RAM. The container had no secrets or elevated privileges. These successes establish that the measured CLI path could install and compile in that environment.

The test command failed with exit code 1 after 62 seconds: 44 tests passed and 33 failed out of 77. The supplied tail marks pkg/migrate, seed, and util as failed packages. It names TestDriver_ApplySeedsToDatabase, TestDriver_ExportDatadump, and TestGetServerState among the failures, while telemetry and version packages report success. The tail does not include the underlying assertions or connection errors. The 33 failures deserve follow-up, but the log doesn't establish their cause. Missing services, missing system packages, and code defects would be guesses from this evidence. Our scan found 2 CI workflow files and no Dockerfile or tests directory. Those are scan signals, not a full inventory of this large repository. The defensible finding is that the CLI compiled and its measured suite did not pass in our sandbox.

Authentication supplies identity, and permissions decide access

Hasura's row-permission guide describes expressions that restrict database rows by operation and role. A session variable can tie the caller's identity to a record's owner. The practical work is to configure those rules and verify them as an ordinary user, rather than only through an administrator session. A generated schema makes data convenient to request, so an incorrect permission becomes convenient to exercise too.

Our 44 passing CLI tests do not validate your application's access rules. JWT mode expects your authentication service to issue tokens, which Hasura verifies and maps into session variables. For an organization-based app, check attempts to read another organization's records and update fields the caller shouldn't control. Hasura provides the permission machinery. Your team supplies the identity integration and evidence that its rules match the product's promises.

The sample deployment leaves the admin secret commented out

The repository's V2 Compose manifest enables the console and development mode, uses a sample database password, and comments out HASURA_GRAPHQL_ADMIN_SECRET. Those are concrete reasons to treat the file as a starting point that needs configuration. Set credentials, disable development mode for production, and decide how the administrative endpoint is reached before attaching a database containing real customer records.

The 79-second CLI build doesn't cover that service deployment. The CLI README takes an engine endpoint and admin secret in its usage example. Contributor guidance also lists Docker, Compose, Node, and Go, plus settings identifying the engine image and CLI binary used by integration checks. These documented requirements help plan a fuller evaluation, but they don't explain the failures in our supplied log.

V3 adds connector services and authored metadata

The V3 README says the engine sends queries to data connectors instead of executing database queries directly. Its Postgres route needs a connector alongside the engine and metadata authored for the database's models. DDN is the recommended authoring route there. Choose the generation deliberately: a V2 CLI example and V3 connector deployment are different operating arrangements, even though the root repository presents both.

The 248-package Go install we measured gives no installation or test result for that V3 arrangement. Likewise, V2's Actions and remote schemas let you attach custom business logic rather than supplying every domain rule automatically. If the hard part of your service is payment behavior or another external operation, you still own the code behind that integration. Hasura is most convincing when database access is a substantial part of the work you're trying to remove.

September's release fixes matter to long-lived servers

The last push was October 10, 2026, and GitHub showed 32,125 stars with 2,375 open issues and PRs. Recent activity included Console fixes and deployment-documentation corrections. Release v2.50.3 shipped on September 9 with fixes for memory retained after metadata updates and bounded websocket queue behavior. Those details show ongoing server maintenance. The combined issue count alone says little about how quickly a particular report will be resolved.

PostGraphile is worth considering for a PostgreSQL-centered GraphQL design. PostgREST fits a database-backed REST API, and Supabase suits teams also seeking authentication and storage. Choose Hasura when generated data access and its permission model fit your existing stack. Before committing, reproduce the 33 CLI failures with fuller logs and test your own role boundaries against the engine generation you intend to operate.

Alternatives

ProjectWhat it isPick it when
PostGraphileA PostgreSQL-centered GraphQL project in the Graphile Crystal monorepo.pick this instead when you want PostgreSQL-centered schema design and a Graphile-based GraphQL stack.
PostgREST gh↗A server that exposes a PostgreSQL database through REST.pick this instead when REST meets the client requirement and you want access organized around PostgreSQL roles.
Supabase gh↗A PostgreSQL development platform that also provides authentication and storage.pick this instead when you need those application services alongside database APIs.

What people are saying

  1. [velocity-scout] hasura/graphql-engine

Sources

  1. Hasura root README
  2. V2 features and architecture
  3. CLI usage and source build
  4. CLI contributor environment
  5. V3 connectors and metadata
  6. Row permissions
  7. V2 Compose manifest
  8. v2.50.3 server fixes

More data reviews

wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · The-Quant-Trading-Vault · multimodal-product-discovery · edgequake · the whole board →