Top Related Projects
🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table
Feature-rich and customizable data grid React component
The best JavaScript Data Table for building Enterprise Applications. Supports React / Angular / Vue / Plain JavaScript.
Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.
The library for web and native user interfaces.
Quick Overview
ReactDataGrid is a powerful and feature-rich data grid component for React applications. It offers high performance, extensive customization options, and a wide range of built-in functionalities for handling large datasets efficiently.
Pros
- High performance with virtualization for handling large datasets
- Extensive customization options for columns, cells, and overall appearance
- Built-in features like sorting, filtering, grouping, and pagination
- Excellent TypeScript support and comprehensive documentation
Cons
- Steep learning curve due to the extensive API and configuration options
- Large bundle size, which may impact initial load times for smaller applications
- Some advanced features require a commercial license
- Limited community-contributed plugins compared to some other data grid libraries
Code Examples
- Basic usage with default configuration:
import ReactDataGrid from '@inovua/reactdatagrid-community'
import '@inovua/reactdatagrid-community/index.css'
const columns = [
{ name: 'name', header: 'Name', minWidth: 50, defaultFlex: 2 },
{ name: 'age', header: 'Age', maxWidth: 1000, defaultFlex: 1 }
]
const dataSource = [
{ id: 1, name: 'John McQueen', age: 35 },
{ id: 2, name: 'Mary Stones', age: 25 },
{ id: 3, name: 'Robert Fil', age: 27 },
{ id: 4, name: 'Roger Robson', age: 81 },
{ id: 5, name: 'Billary Konwik', age: 18 }
]
const App = () => (
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={dataSource}
/>
)
- Enabling sorting and filtering:
import ReactDataGrid from '@inovua/reactdatagrid-community'
import '@inovua/reactdatagrid-community/index.css'
const App = () => (
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={dataSource}
sortable={true}
filterable={true}
/>
)
- Custom cell rendering:
import ReactDataGrid from '@inovua/reactdatagrid-community'
import '@inovua/reactdatagrid-community/index.css'
const columns = [
{
name: 'name',
header: 'Name',
render: ({ value }) => <strong>{value}</strong>
},
{
name: 'age',
header: 'Age',
render: ({ value }) => value < 30 ? <span style={{ color: 'green' }}>{value}</span> : value
}
]
const App = () => (
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={dataSource}
/>
)
Getting Started
- Install the package:
npm install @inovua/reactdatagrid-community
- Import the component and styles in your React application:
import ReactDataGrid from '@inovua/reactdatagrid-community'
import '@inovua/reactdatagrid-community/index.css'
- Use the component in your application:
const App = () => (
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={dataSource}
/>
)
Make sure to define your columns
and dataSource
as shown in the code examples above.
Competitor Comparisons
🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table
Pros of Table
- Highly flexible and framework-agnostic, supporting React, Vue, Solid, and more
- Lightweight core with modular plugins for advanced features
- Strong TypeScript support and type safety
Cons of Table
- Steeper learning curve due to its headless nature and flexibility
- Requires more setup and configuration for basic use cases
- Less out-of-the-box styling and UI components
Code Comparison
Table:
import { useReactTable, getCoreRowModel, flexRender } from '@tanstack/react-table'
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
})
ReactDataGrid:
import ReactDataGrid from '@inovua/reactdatagrid-community'
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={data}
/>
Summary
Table offers greater flexibility and framework support, making it suitable for complex, custom implementations across various JavaScript frameworks. It provides a more modular approach with strong TypeScript integration. However, it requires more initial setup and may have a steeper learning curve.
ReactDataGrid, on the other hand, provides a more opinionated and ready-to-use solution specifically for React. It offers more out-of-the-box styling and UI components, making it easier to get started with basic use cases. However, it may be less flexible for highly customized implementations and is limited to React applications.
Feature-rich and customizable data grid React component
Pros of react-data-grid
- Open-source and free to use
- Lightweight and performant for large datasets
- Extensive documentation and community support
Cons of react-data-grid
- Limited built-in features compared to reactdatagrid
- Less frequent updates and maintenance
- Steeper learning curve for advanced customizations
Code Comparison
react-data-grid:
import ReactDataGrid from 'react-data-grid';
const columns = [
{ key: 'id', name: 'ID' },
{ key: 'title', name: 'Title' }
];
const rows = [
{ id: 1, title: 'Example 1' },
{ id: 2, title: 'Example 2' }
];
function Example() {
return <ReactDataGrid columns={columns} rows={rows} />;
}
reactdatagrid:
import ReactDataGrid from '@inovua/reactdatagrid-community';
const columns = [
{ name: 'id', header: 'ID', defaultFlex: 1 },
{ name: 'title', header: 'Title', defaultFlex: 1 }
];
const dataSource = [
{ id: 1, title: 'Example 1' },
{ id: 2, title: 'Example 2' }
];
function Example() {
return <ReactDataGrid columns={columns} dataSource={dataSource} />;
}
Both libraries offer similar basic functionality, but reactdatagrid provides more built-in features and a more modern API. react-data-grid is lighter and may be suitable for simpler use cases, while reactdatagrid offers more advanced capabilities out of the box.
The best JavaScript Data Table for building Enterprise Applications. Supports React / Angular / Vue / Plain JavaScript.
Pros of ag-grid
- More comprehensive feature set, including advanced filtering, sorting, and grouping
- Better performance with large datasets due to virtualization techniques
- Extensive documentation and community support
Cons of ag-grid
- Steeper learning curve due to complex API and configuration options
- More expensive licensing for enterprise features
- Larger bundle size, which may impact initial load times
Code Comparison
reactdatagrid:
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={data}
style={{ height: 400 }}
/>
ag-grid:
<AgGridReact
columnDefs={columnDefs}
rowData={rowData}
domLayout='autoHeight'
/>
Both libraries offer similar basic setup, but ag-grid typically requires more configuration for advanced features. reactdatagrid aims for a simpler API, while ag-grid provides more granular control over grid behavior and appearance.
reactdatagrid focuses on React-specific implementation, whereas ag-grid supports multiple frameworks. This specialization allows reactdatagrid to offer a more React-idiomatic API, potentially simplifying integration for React developers.
ag-grid's extensive feature set and performance optimizations make it suitable for complex enterprise applications with large datasets. reactdatagrid, while less feature-rich, may be more appropriate for simpler use cases or projects where a lightweight solution is preferred.
Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.
Pros of Material-UI
- Comprehensive UI component library with a wide range of pre-built components
- Strong community support and extensive documentation
- Follows Material Design principles, ensuring a consistent and modern look
Cons of Material-UI
- Larger bundle size due to the extensive component library
- Customization can be complex for highly specific designs
- Learning curve for developers new to Material Design concepts
Code Comparison
Material-UI:
import { DataGrid } from '@mui/x-data-grid';
const columns = [
{ field: 'id', headerName: 'ID', width: 90 },
{ field: 'firstName', headerName: 'First name', width: 150 },
];
<DataGrid rows={rows} columns={columns} />
ReactDataGrid:
import ReactDataGrid from '@inovua/reactdatagrid-enterprise';
const columns = [
{ name: 'id', header: 'ID', width: 90 },
{ name: 'firstName', header: 'First name', width: 150 },
];
<ReactDataGrid columns={columns} dataSource={rows} />
Both libraries offer data grid components, but Material-UI provides a more extensive set of UI components beyond just data grids. ReactDataGrid focuses specifically on powerful and flexible data grid functionality, while Material-UI offers a broader range of components for building complete user interfaces. The code syntax is similar, with minor differences in prop naming and structure.
The library for web and native user interfaces.
Pros of React
- Massive ecosystem and community support
- Extensive documentation and learning resources
- Flexible and can be used for various types of applications
Cons of React
- Steeper learning curve for beginners
- Requires additional libraries for complex state management
- More boilerplate code for simple applications
Code Comparison
React:
function App() {
return (
<div>
<h1>Hello, World!</h1>
</div>
);
}
ReactDataGrid:
import ReactDataGrid from '@inovua/reactdatagrid-community'
function App() {
return <ReactDataGrid columns={columns} dataSource={dataSource} />
}
Key Differences
- React is a general-purpose UI library, while ReactDataGrid is a specialized data grid component
- ReactDataGrid provides out-of-the-box functionality for displaying and manipulating tabular data
- React requires more setup and additional components to achieve similar data grid functionality
Use Cases
- React: Building complex, interactive web applications
- ReactDataGrid: Quickly implementing data-heavy tables and grids in React applications
Community and Support
- React: Large, active community with frequent updates and extensive third-party resources
- ReactDataGrid: Smaller, more focused community with specialized support for data grid use cases
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Table of Contents
- Purpose
- Problem
- Solution
- Installation & Getting Started
- TypeScript support
- Features
- Evaluating and using the Enterprise Edition
- Documentation
- Examples
- Client stories
- License
Purpose
We've set out to build the best React Data Grid written specifically with React
in mind.
Problem
We know other solutions exist out there, but we find they have one or multiple of the following problems:
- are just thin wrappers around
React
- more like an after-thought; - are too bloated;
- are not extensible and easy to use;
- don't have enterprise-grade features;
- lack of documentation.
Solution
We've poured our soul into ReactDataGrid
and built it from scratch with React
in mind.
There are 2 editions of the ReactDataGrid
that we're releasing:
- Community Edition - includes the core functionality most people actually use in their products (MIT License);
- Enterprise Edition - includes advanced functionality, especially targeted for enterprise apps (Commercial License).
Both editions of the ReactDataGrid
are published and available in the public npm registry.
Installation & Getting Started
ReactDataGrid
is distributed via npm. So getting started is as easy as:
$ npm install @inovua/reactdatagrid-community --save
or if you want to evaluate the Enterprise Edition
$ npm install @inovua/reactdatagrid-enterprise --save
See the documentation getting started page for more details.
TypeScript support
ReactDataGrid
ships with TypeScript
definition files, so it's fully integrated with your preferred editor to help with autocompletion and type-safety.
Features
ReactDataGrid
is packed with all the functionality you would expect from an enterprise-grade grid.
As stated before, the ReactDataGrid
is built with React
in mind, so it supports popular patterns in the React
world: controlled/uncontrolled props, render props, built with immutability from the ground up etc.
Here's a list of the features that we support for each edition:
Community Edition features
- Remote data source
- Sorting
- Pagination
- Inline edit with custom editor support
- Filtering with built in filters
- Stacked columns
- Context menu integration
- Rowspan and colspan
- Row selection
- Cell selection
- Keyboard navigation
- Customizing rows, cells and headers
- Scroll customization
- RTL support
- Beautiful themes
- Column reorder
- Column resize
Enterprise Edition features
- Live pagination
- Grouping
- Locked columns - start and end
- Row details
- Pivoting
- Row resize
- Row reorder
- Footer
- Locked rows - top and bottom
- Master-Detail
- TreeGrid
Besides the above, there's a lot more backed into the ReactDataGrid
, so make sure you explore our documentation.
Evaluating and using the Enterprise Edition
The Enterprise Edition is a commercial product and it requires a commercial license - please visit the pricing page for more details. Once you buy a license, we'll provide you a license key, so you can start using the ReactDataGrid
Enterprise Edition in your apps.
You are free to evaluate the Enterprise Edition of the ReactDataGrid
even without a license key - all the features are available and ready to use, but a license notice will be displayed initially for a few seconds. If you want to remove that, you can contact us and we'll send you an evaluation license key which you can use for 30 days.
Please note you are not allowed to integrate the Enterprise Edition of the ReactDataGrid
into end products or use it for any commercial, productive or training purpose without a valid commercial license. Read EULA for more details.
After you purchase and receive your commercial license key, you have to set it in the licenseKey
prop then you can start using the ReactDataGrid
in development and production.
import ReactDataGrid from '@inovua/reactdatagrid-enterprise';
import '@inovua/reactdatagrid-enterprise/index.css';
<ReactDataGrid licenseKey="..." />;
Even without a license key, all features are unlocked so you can evaluate the ReactDataGrid
and decide whether you need the Community Edition or the Enterprise Edition.
Documentation
We're heavily invested into our documentation - it ships with full working examples and a live editor. Each prop ReactDataGrid
supports has it's own description and usage example.
Additionally, each feature is clearly presented and has a dedicated page that explains the feature and shows examples of real-life usage. See for example sorting, filtering, grouping etc.
Examples
import React from 'react';
import ReactDataGrid from '@inovua/reactdatagrid-enterprise';
import '@inovua/reactdatagrid-enterprise/index.css';
const columns = [
{ name: 'name', header: 'Name', minWidth: 50, defaultFlex: 2 },
{ name: 'age', header: 'Age', maxWidth: 1000, defaultFlex: 1 },
];
const gridStyle = { minHeight: 550 };
const dataSource = [
{ id: 1, name: 'John McQueen', age: 35 },
{ id: 2, name: 'Mary Stones', age: 25 },
{ id: 3, name: 'Robert Fil', age: 27 },
{ id: 4, name: 'Roger Robson', age: 81 },
{ id: 5, name: 'Billary Konwik', age: 18 },
{ id: 6, name: 'Bob Martin', age: 18 },
{ id: 7, name: 'Matthew Richardson', age: 54 },
{ id: 8, name: 'Ritchie Peterson', age: 54 },
{ id: 9, name: 'Bryan Martin', age: 40 },
{ id: 10, name: 'Mark Martin', age: 44 },
{ id: 11, name: 'Michelle Sebastian', age: 24 },
{ id: 12, name: 'Michelle Sullivan', age: 61 },
{ id: 13, name: 'Jordan Bike', age: 16 },
{ id: 14, name: 'Nelson Ford', age: 34 },
{ id: 15, name: 'Tim Cheap', age: 3 },
{ id: 16, name: 'Robert Carlson', age: 31 },
{ id: 17, name: 'Johny Perterson', age: 40 },
];
export default () => (
<ReactDataGrid
idProperty="id"
columns={columns}
dataSource={dataSource}
style={gridStyle}
/>
);
Our documentation contains hundreds of running examples, so please make sure you check that out.
Client stories
Itâs already been used by thousands of users in business-critical apps, so you can trust it from the get-go. Our clients are building their apps with the ReactDataGrid
at the core of their products.
With the help of the ReactDataGrid, provided by Inovua Trading S.R.L., we have been able to offer our customers the perfect support for state-of-the-art data management in our fleet management solution WEBFLEET.
--Thomas Boehm, Senior Engineering Manager at Webfleet Solutions, a Bridgestone Company
Enterprise-grade Datagrid component with outstanding feature coverage and second-to-none performance made it a straightforward decision to include it in our cloud-centric on-demand solutions.
--Yuri Genin, Lead UI Architect at PROS
License
Top Related Projects
🤖 Headless UI for building powerful tables & datagrids for TS/JS - React-Table, Vue-Table, Solid-Table, Svelte-Table
Feature-rich and customizable data grid React component
The best JavaScript Data Table for building Enterprise Applications. Supports React / Angular / Vue / Plain JavaScript.
Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.
The library for web and native user interfaces.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot