mrkeyoor.com_
Sat 17 Oct 13:33 UTC
Self-Hostedevaluationupdated 26 Aug 2026

strapi review

Strapi is a headless content-management system that gives editors a web dashboard and developers generated REST and GraphQL APIs. It replaces the custom admin panel and content backend that teams otherwise build for each website, app, or device, and it can run on your infrastructure or Strapi Cloud.

+30stars / 7d
Verdict

Our Strapi monorepo installed 3,991 packages in 199 seconds, then the build timed out at 900 seconds while Node spawn calls returned EAGAIN. Strapi still belongs on the shortlist when editors need a visual CMS and developers need a customizable content API. Self-host it only if the team accepts a stateful public service, regular upgrades, plugin review, and the Community versus Enterprise license boundary.

We ran it

Lab card: what happened when we ran strapiScreenshot of strapi (strapi.io)
Install✓ · 199s3991 packages · 1293 MB
Build✗ timed out · 900s
Testsn/ano test script
Repo6546 files~641,470 lines of source · 69.2 MB · 28 CI workflows · tests dir

Answers from our run

Does strapi build from source?

Dependencies installed in 199 seconds (3991 packages), and the build failed. We cloned commit e5f3785 into a clean Debian container with 3 CPUs and no project-specific setup.

Does strapi have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use strapi?

Teams expecting a complete website from the CMS alone: Strapi supplies content and APIs, so the frontend remains your job.

What are the alternatives to strapi?

Payload, Directus, Keystone. Our Strapi monorepo installed 3,991 packages in 199 seconds, then the build timed out at 900 seconds while Node spawn calls returned EAGAIN.

Setup3/5Quick app scaffold; core monorepo build timed out in our run
Docs5/5Deep CMS, API, deployment, customization, and migration docs
Community5/5Current release, same-day push, and active confirmed issues
Maturity4/5Established CMS with a clear support policy and regular fixes

Discussed on

  1. hnStrapi – Open-source Node.js Headless CMS106 points
  2. hnHow to Build a Notion Clone with Strapi v4 and Next.js (Part 1 of 2)46 points
  3. hnAPIs in less than 5 minutes with Strapi32 points
  4. hnStrapi raises $4M for their open-source Headless CMS31 points
  5. hnStrapi v3.6 with Internationalization17 points

Who it’s for

JavaScript and TypeScript teams that want editors to manage structured content without code changes.
Product teams serving several frontends from one content API.
Organizations ready to operate Node.js, a production database, media storage, backups, and upgrades.
Developers who need to customize routes, middleware, controllers, services, the admin panel, or plugins.

Who it’s NOT for

Teams expecting a complete website from the CMS alone: Strapi supplies content and APIs, so the frontend remains your job.
Operators who require an official container image: the README says Strapi does not ship one and points to a community Docker generator.
Buyers who need every repository file under MIT terms: Community Edition and code under ee/ directories use different license terms.
Organizations relying on vendor security coverage for marketplace plugins: the security policy excludes third-party and community plugins.
Node 26 teams choosing the default SQLite scaffold today: confirmed issue 27354 says its pinned driver cannot install on that supported Node release.
Strict MCP clients evaluating the Enterprise server: confirmed issue 27395 says its tool schemas use the wrong JSON Schema dialect and can be rejected.

Setup reality

At commit e5f3785, installation succeeded in 199 seconds in our 3-CPU, 8 GB Debian container. Yarn installed 3,991 packages using 1,293 MB. The repository held 6,546 files and about 641,470 source lines. The build did not finish within the 900-second limit. Its log showed repeated spawn /usr/local/bin/node EAGAIN errors and build:types:server exiting with 1.

The log does not establish why Node processes could not be spawned, so we cannot assign the timeout to Strapi or the container. The monorepo exposed no single test script or target for our harness, so tests were skipped. It has 28 CI workflows, a tests directory, and workspaces, but no Dockerfile.

That contributor build is much heavier than creating an application with npx create-strapi@latest. Production still needs secrets, CORS, a supported database, durable media, TLS, upload policy, monitoring, backups, and restore tests. Strapi Cloud handles much of that; self-hosters build their own image.

A content backend for teams with separate frontends

Strapi lets developers define articles, products, authors, or other content types while editors manage entries in a browser. The same model becomes REST and GraphQL APIs for websites, mobile apps, kiosks, or devices. Roles, permissions, uploads, internationalization, drafts, publishing, and a media library arrive as CMS features instead of an application backlog.

Editors avoid database access and Git, while developers keep control of routes, middleware, controllers, services, and the admin interface. SQLite makes a local project quick; PostgreSQL, MySQL, and MariaDB are available for production. TypeScript is a supported path rather than an outside add-on.

Headless still means the customer-facing site is separate. A team must build previews, caching, search, and frontend deployments around the content API. That freedom suits product engineering groups and adds needless architecture to a simple marketing site that would be happier in an integrated builder.

What happened when we ran it

We cloned commit e5f3785 into an unprivileged Debian container with 3 CPUs and 8 GB of RAM. This is a large monorepo: 6,546 files, about 641,470 lines of source, and a 69.2 MB checkout. Yarn installation succeeded in 199 seconds, adding 3,991 packages and consuming 1,293 MB.

The build did not complete within our 900-second limit. Near the end, Yarn repeatedly printed Internal Error: spawn /usr/local/bin/node EAGAIN, followed by build:types:server exiting with code 1 while Nx type builds were still being scheduled. This is a timed-out and failed build in our environment. The tail does not prove whether process limits, project behavior, or another condition caused it.

Our harness found no single test script or target, so tests were skipped. The repository does contain a tests directory and 28 CI workflow files. Those signals show internal test infrastructure, but we did not run it and will not imply a passing result.

The user quick start is a different workload

Running npx create-strapi@latest my-project produces an application with an admin panel, content modeling, authentication, permissions, and upload support. A developer can define a collection and query it from an API without learning the 639,000-line core repository. The visual Content-Type Builder is especially useful when editors and engineers need to discuss a schema together.

Customization goes beyond the UI. Requests flow through documented backend layers, and plugins can extend the server and admin panel. That flexibility also ties the application to Strapi's content models, lifecycle behavior, permissions, and plugin APIs. Prototype the hardest relationship, localization rule, preview flow, and authorization case before committing a large content graph.

A confirmed issue exposes a current quick-start boundary. Strapi declares Node 26 support, but issue 27354 says the SQLite scaffold pins a better-sqlite3 release whose engine range excludes Node 26. Until that changes, use a documented compatible Node version or another database and verify the generated app's install.

Self-hosting is an operations choice

Production Strapi is a public Node service with a database and uploaded assets. Operators need stable secrets, a supported runtime, durable media storage, a reverse proxy, TLS, logs, monitoring, backups, and restore tests. CORS, API tokens, admin access, rate limits, and upload restrictions must match the deployment.

Strapi does not publish an official Docker image. Its README points to a community tool that generates a Dockerfile and Compose setup, or operators can build from the deployment guide. That is workable, but the team owns the image and upgrade path. Strapi Cloud is the simpler choice when maintaining the database, assets, and CDN is unwanted.

Release 5.52.2 changed generated projects to block SVG uploads by default because SVG can carry active browser content. Existing projects are unchanged. Operators should still define the allowed upload types, size limits, storage policy, and serving headers their application requires.

Third-party plugins require their own review. Strapi's security scope covers current core packages and the bundled admin panel, not marketplace plugins. Record each plugin's maintainer, supported Strapi range, data access, and removal plan.

Open core terms and current extras

GitHub cannot reduce the repository to one standard license identifier. The root license grants MIT Expat terms to Community Edition use under stated conditions, while software inside ee/ directories has a separate Enterprise Edition license unless another agreement or Cloud subscription applies. Map required features to those terms before procurement or deep customization.

Strapi now includes an AI layer and an Enterprise MCP server. The core CMS should be evaluated separately from those additions. Confirmed issue 27395 says the MCP server advertises draft-07 schemas, causing strict clients that expect JSON Schema 2020-12 to reject every tool. That is a specific blocker for some agent integrations, not a verdict on content APIs.

Health and the decision

Version 5.52.2 shipped on August 26, 2026, and the repository was pushed on August 26. GitHub listed 544 open issues and pull requests combined, with confirmed reports receiving current triage. Only stable Strapi 5 releases are supported; version 4 security support ended in April 2026. Self-hosters need an upgrade routine, not a set-and-forget deployment.

Strapi is a strong editorial CMS when a team needs a visual admin and adaptable APIs. Its convenience shifts work rather than removing it: the frontend, production hardening, plugins, storage, and upgrades stay with the operator. That bargain is reasonable for a maintained product platform and excessive for a small site.

Alternatives

ProjectWhat it isPick it when
Payload gh↗A TypeScript-first CMS designed to live close to a modern application codebase.pick this instead when content configuration in TypeScript and application integration matter more than a visual-first schema builder.
Directus gh↗A data studio and API layer over a new or existing SQL database.pick this instead when the database is the center of the system and you want an admin studio over its schema.
KeystoneA programmable TypeScript CMS and GraphQL backend with schemas defined in code.pick this instead when GraphQL and code-defined models matter more than Strapi's visual builder and plugin catalog.

What people are saying

  1. [github-trending] strapi/strapi

Sources

  1. Strapi README
  2. Strapi repository facts
  3. Strapi v5.52.2 release
  4. Strapi root license
  5. Strapi security policy
  6. Node 26 SQLite scaffold issue
  7. MCP schema dialect issue
  8. Default upload policy issue

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →