Refine
Open-source React-based framework for rapid development of web applications, admin panels, and CRMs.
Why consider Refine?
Refine is a metadata-driven React framework for building enterprise internal tools, admin panels, and dashboards. It integrates seamlessly with Ant Design, Material UI, Tailwind, and Supabase.
Learn Refine by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide11 sections
What is Refine?
Refine is an open-source, React-based meta-framework designed for building enterprise internal tools, administrative dashboards, B2B applications, and Customer Relationship Management (CRM) portals. It operates as a code-first, developer-centric alternative to proprietary low-code platforms like Retool and Forest Admin.
Refine decouples state management, authentication, access control, routing, and data synchronization from user interface rendering. It connects out of the box with popular UI libraries (Ant Design, Material UI, Mantine, Tailwind CSS) and backend services (Supabase, Appwrite, Strapi, Hasura, NestJS, REST, GraphQL).
Who Is It For?
- Frontend & Full-Stack Developers: Building customized, production-grade administrative panels and CRUD applications with 100% code control.
- Enterprise Engineering Teams: Delivering secure internal applications that adhere to strict company design systems without low-code vendor lock-in.
- SaaS Developers: Rapidly developing multi-tenant customer management portals with complex data validation and filtering rules.
Key Features
- Headless architecture: Complete freedom to choose any UI library (Ant Design, Material UI, Mantine, or custom Tailwind CSS).
- 15+ built-in backend Data Providers: Instant integration with REST APIs, GraphQL, Supabase, Strapi, NestJS, and Hasura.
- Automated CRUD operations: Pre-configured React hooks (
useTable,useForm,useList,useShow) handling sorting, filtering, and pagination. - Robust enterprise authentication and authorization (Access Control / RBAC) hooks.
- Native support for Server-Side Rendering (SSR) with Next.js and Remix.
Quick Start: Creating a Refine Application
Bootstrap a new Refine project using the interactive CLI wizard:
# Create a new Refine project with Next.js and Tailwind CSSnpm create refine-app@latest my-refine-app# Choose your preferred framework, UI library, and backend data provider:# - Framework: Next.js# - UI Framework: Tailwind CSS / Ant Design# - Data Provider: Supabase / REST API# - Auth Provider: Custom / Supabase Authcd my-refine-appnpm run devExample: Building a CRUD Resource in React
import { useTable, List } from "@refinedev/core";export const ProductList = () => { const { tableQueryResult } = useTable({ resource: "products", pagination: { pageSize: 10 }, }); const products = tableQueryResult?.data?.data ?? []; return ( <List> <table className="min-w-full divide-y divide-gray-200"> <thead> <tr> <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">ID</th> <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Name</th> <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Price</th> </tr> </thead> <tbody className="bg-white divide-y divide-gray-200"> {products.map((p) => ( <tr key={p.id}> <td className="px-6 py-4 whitespace-nowrap">{p.id}</td> <td className="px-6 py-4 whitespace-nowrap">{p.name}</td> <td className="px-6 py-4 whitespace-nowrap">${p.price}</td> </tr> ))} </tbody> </table> </List> );};Practical Use Cases
1. B2B Multi-Tenant SaaS Admin Portal
An engineering team builds a customer account management portal connecting to Supabase with real-time row-level security and automated data tables.
2. E-Commerce Order Management Dashboard
A retailer builds a custom order processing dashboard with Ant Design and GraphQL, managing hundreds of orders, stock updates, and refund dispatches.
3. Microservice Orchestration Console
A platform team builds an internal tool with Next.js SSR that aggregates multiple internal microservice REST APIs into a single developer dashboard.
Troubleshooting and Limitations
- Data Provider Response Structure: When writing custom Data Providers, ensure your API responses follow Refine's expected structure (
{ data: [...], total: 100 }) to ensure automatic pagination functions correctly. - Custom Access Control Integration: Implement the
accessControlProviderinterface to integrate custom role-based permissions (CASL, Cerbos, Ory Keto).
Official Resources
- Official Website: https://refine.dev
- GitHub Repository: https://github.com/refinedev/refine
- Documentation: https://refine.dev/docs/
Related tools
More options with a similar category or technology profile.
diskus
Minimal, fast alternative to du -sh written in Rust using multi-threaded directory traversal.
peco
Simplistic interactive filtering tool for Unix pipelines, process lists, and file trees.
Dapr CLI
Command-line tool for managing Dapr distributed application runtime environments and sidecars.
Freeze
Generate beautiful image screenshots and SVGs of code snippets and terminal outputs.