mrkeyoor.com_
Tue 15 Sept 20:18 UTC
Webevaluationupdated 15 Sept 2026

react-admin review

React-admin is a TypeScript framework for building browser-based admin panels and other internal applications on top of an existing REST or GraphQL API. It supplies the CRUD screens, forms, data fetching, routing, and authentication hooks that teams otherwise rebuild for each back office.

Verdict

Our React-admin checkout installed 2,692 packages and used 1,997 MB, while all 2,844 executed Jest tests passed before Yarn rejected the command's -s option. Use it when your admin app maps cleanly to API resources and your React team wants mature CRUD behavior with room to replace the defaults. Skip it for a tiny panel, a public content site, or a project that cannot budget for provider code and regression testing around complex forms.

We ran it

Lab card: what happened when we ran react-adminScreenshot of react-admin (marmelab.com/react-admin)
Install✓ · 218s2692 packages · 1997 MB
Build✓ · 152s
Tests✗ · 200s2844 passed · 0 failed · 11 skipped of 2855 (jest)
Repo3214 files~234,981 lines of source · 159.8 MB · 3 CI workflows

Answers from our run

Does react-admin build from source?

Dependencies installed in 218 seconds (2692 packages), and the build succeeded in 152 seconds. We cloned commit f0f9f33 into a clean Debian container with 3 CPUs and no project-specific setup.

Do react-admin's tests pass?

Yes: 2844 of 2855 passed when we ran the project's own test command (jest). Some failures need services or credentials a bare container does not have.

Who should not use react-admin?

Teams without an API to administer: the project is a frontend SPA, and its data provider translates calls to a backend you must already run.

What are the alternatives to react-admin?

Refine, AdminJS, Appsmith. Our React-admin checkout installed 2,692 packages and used 1,997 MB, while all 2,844 executed Jest tests passed before Yarn rejected the command's -s option.

Setup3/5Build passed, but the workspace install took 218 seconds
Docs5/5Provider, auth, component, and customization guides are detailed
Community5/526,935 stars, 46 open issues, and a September 2026 push
Maturity4/5Version 5.15.3 is active; current form and access issues remain

Who it’s for

React teams building an internal tool around resource-shaped REST or GraphQL data.
Developers who want ready-made list, show, edit, and create flows without giving up component-level control.
Organizations comfortable with Material UI and willing to write or select data and authentication providers.
Product teams that expect an admin interface to grow beyond a generated CRUD table.

Who it’s NOT for

Teams without an API to administer: the project is a frontend SPA, and its data provider translates calls to a backend you must already run.
Public sites that depend on server-rendered pages for indexing: the architecture guide says React-admin is specifically designed for browser SPAs.
Small projects that need a light contributor checkout: our install pulled 2,692 packages and occupied 1,997 MB before any app data existed.
Teams that cannot test accessibility themselves: open issue 11108 reports that clickable rows in the helpdesk demo are exposed to NVDA as plain text rather than links or buttons.
React 19 teams with large tabbed forms that cannot absorb a current edge-case investigation: issue 11368 reports a maximum-update-depth crash in version 5.15.3.

Setup reality

Our sandbox install at commit f0f9f33 succeeded in 218 seconds, adding 2,692 packages and using 1,997 MB. The build passed in 152 seconds. The test command exited 1 after 200 seconds, although Jest reported 2,844 passed, 0 failed, and 11 skipped out of 2,855. Yarn then rejected the unsupported -s option.

A real app needs a REST or GraphQL API plus a compatible data provider. Authentication is off by default. You must supply an auth provider, decide where credentials live, and make the data provider attach them to API requests. Existing adapters can reduce that work.

This is a Yarn workspace monorepo with 3,214 files, about 234,981 source lines, and a 159.8 MB checkout. Our scan found three CI workflow files, no Dockerfile, and no top-level tests directory. Tests are present inside packages, as the 288 passing Jest suites show.

Each Resource declaration can wire 4 CRUD page types

Version 5.15.3 lets a resource declare 4 page components: list, edit, create, and show. The framework wires routes and record context around them for entities such as posts, customers, or invoices. Its building blocks cover tables, filters, forms, validation, notifications, permissions, translations, and themes. This is useful work to avoid. Internal apps often repeat the same state and error handling with different field names.

The browser still talks to your backend through a data provider. React-admin's README points to more than 45 adapters for REST, GraphQL, Firebase, and named frameworks. A provider exposes methods such as getList, getOne, create, and update, then translates their arguments into your API's URLs and payloads. The abstraction pays off when resources behave consistently. An API full of special commands and irregular response shapes will put more code into that adapter.

Authentication stays off until an auth provider turns it on

In version 5.15.3, authentication remains disabled until you pass an auth provider. The guide defines 6 provider methods for login, logout, identity, credential checks, error checks, and optional access control. Your code decides how those operations reach the identity service. The data provider must also attach the resulting credential to API calls. Custom routes need explicit protection or the app-wide requireAuth setting. That split is sensible, though it means a rendered login screen is not proof that the backend authorization model is correct.

The contributor setup makes the framework's scope visible. Our commit f0f9f33 checkout contained 3,214 files and about 234,981 lines of source before dependencies. Installing its Yarn workspaces added 2,692 packages and left 1,997 MB on disk. Those are monorepo development figures, not the dependency cost of adding the published react-admin package to one application. They matter if your team expects to debug internals, run upstream tests, or carry a patch.

What happened when we ran it

We cloned commit f0f9f33 into a fresh unprivileged container with Node 22, 3 CPUs, 8 GB of RAM, and no secrets. Its install completed in 218 seconds and its build in 152 seconds. Both steps succeeded. The checkout was 159.8 MB, and the repository had three CI workflow files. It had no Dockerfile, which is reasonable for a browser framework but leaves contributor environment parity to the package manager and project instructions.

The test step ended with exit code 1 after 200 seconds. Jest itself reported 288 passing suites, with 2,844 tests passed, none failed, and 11 skipped out of 2,855. After that clean Jest summary, Yarn printed Unknown Syntax Error: Unsupported option name ("-s"). The log establishes a command-line incompatibility after the tests. It does not show a failing React-admin assertion, so treating the whole run as either fully passing or as 1 failed test would both be wrong.

Version 5.15.3 still defaults to Material UI

The 5.15.3 package combines React, Material UI, React Hook Form, React Router, and TanStack Query. That gets a competent admin interface on screen quickly, including optimistic updates and cached queries. React-admin also permits custom layouts, fields, inputs, and lower-level controller hooks. Its architecture guide admits the cost of composition: changing one part can require replacing several wrapper components before the custom piece reaches the top-level Admin component.

Edge cases deserve application-level tests even after 2,844 upstream tests pass. Open issue 11368 reports that a sufficiently large TabbedForm on React 19 and React-admin 5.15.3 can hit React's maximum update depth while validation runs. Issue 11108 comes from a screen-reader user who found clickable Material UI table rows announced as plain text in the helpdesk demo. These reports concern specific components, not every screen. They are still good acceptance tests if your app relies on tabbed forms or row-click navigation.

The free core is mature, while some business features are paid

The 5.15.3 core package uses the MIT license and includes the usual resource views plus hooks for replacing visible parts. Marmelab sells an Enterprise Edition with private modules for functions such as advanced grids, role-based access control, audit logs, realtime updates, trees, and calendars. It also places professional support there. Check that boundary before committing to a design, especially if procurement will object after a prototype has already used an Enterprise example.

Maintenance looks active rather than merely popular. GitHub recorded 26,935 stars, 46 open issues, a last push on September 14, 2026, and release 5.15.3 on September 4. That release fixed access checks in DataTable, duplicate undo notifications, and a rich-text-editor crash. The 218-second install and 152-second build are the better warning for contributors: this is a large framework to understand. For a resource-heavy internal app, that cost can still be lower than owning every list, form, permission check, and loading state yourself.

Alternatives

ProjectWhat it isPick it when
RefineA React framework for internal tools with a headless core and several UI integrations.pick this instead when choosing among UI systems and routing integrations matters more than React-admin's Material UI defaults.
AdminJSAn admin panel that connects directly to resources in Node.js applications.pick this instead when your backend is already Node.js and you want the admin layer attached to server-side models.
Appsmith gh↗A self-hostable internal-app platform with database and API connectors.pick this instead when a visual builder should do more of the interface work than a React component framework.

What people are saying

  1. [velocity-scout] marmelab/react-admin

Sources

  1. React-admin README
  2. React-admin data provider setup
  3. React-admin authentication guide
  4. React-admin architecture guide
  5. React-admin Enterprise Edition
  6. React-admin 5.15.3 release
  7. React 19 TabbedForm issue 11368
  8. Table-row accessibility issue 11108

More web reviews

gin · components · docs · docusaurus · engine · openui · the whole board →