Open-source React Data Grid for business applications

Beautiful. Powerful.
Naturally React.

From large-scale virtualization to essential business data features.An open-source React Data Grid for building complex business UIs quickly and flexibly.

Install and start building in minutes.

npm i beautiful-grid

Apache-2.0 open source · Verify every feature with runnable examples and real source.

Loading DataGrid

Verified benchmarks for production

Large datasets

01
1M rows

Large-scale virtual scrolling

Available sincev1.0.3+Row height29pxRunnable example1 → 1MRecommended rangeUp to 10M rows
The runnable example is verified from the first through the last of 1M rows, while logical-scroll coordinates are verified for 10M rows. Practical in-memory capacity depends on row payload size and available browser memory.

Bundle size

02
73.6KiB

Initial JS + CSS gzip total

JavaScript64.3 KiBCSS9.2 KiB
React excluded · measured with gzip level 9

Performance

03
scroll60fpsinitial mount56.6ms

Measure scrolling and first paint together

1440×1000 · 72 rows · median of 5 scrolls · mount from current load

Feature breadth

04
41guides

Runnable feature guides

Cell editingSort & filterRow selectionFrozen columnsCell mergePivot/Summary
Explore everything from editing to aggregation through real examples and source code.

Why Choose BeautifulGrid

Why BeautifulGrid?

Proven performance and rich business features, freely available as an open-source solution.

Apache-2.0

An open-source license you can use freely without feature restrictions

Built for React

Designed to fit naturally into React and TypeScript projects

Built for large data

Virtual scrolling keeps large datasets smooth and responsive

Business-ready features

Business-ready editing, merge, filter, summary, pivot, frozen columns, and more

Core Features & Highlights

Four Core Experiences

Common grid problems are organized into four workflows—large-scale exploration, cell editing, query and selection, and structured aggregation—with runnable examples.

01Large-scale exploration

Explore 1M rows while rendering only what the screen needs.

Virtual scrolling renders only visible rows while frozen columns keep reference data in view. Explore wide, long datasets smoothly across screen sizes.

Render only the cells the viewport needs
02Cell editing

Edit and save in place, then move directly to the next cell.

Use built-in text and checkbox editors, date and select plugins, or connect Ant Design components. Validation and keyboard movement stay in one flow.

Edit, validate, save, and move in one flow
03Query and selection

Find records with sort and filter, then pass selected rows into the next task.

Sort by multiple conditions and filter values, text, or numbers. Process search and selection locally or pass the query to a server.

Manage query and selection state together
04Structure and aggregation

Group repeated values and aggregate numbers into readable results.

Reveal structure with column groups and merged cells, then collect key figures with summary rows and pivots. Adjust layout and color to your workflow.

Grouping, aggregation, and presentation for real work

Virtual Scroll Optimization

Render Only Visible Cells

A dataset with 1M rows and 24 columns contains 24 million cells. BeautifulGrid does not render them at once; it displays roughly the 20 × 12 cells currently visible.

This illustrates how cells are rendered; it is not a benchmark. Actual performance varies with cell composition and browser environment.

Full data space24Mcells

1M rows × 24 columns

Current viewport≈ 240cells

About 20 rows × 12 columns

Only cells needed inside the rectangular viewport are rendered.

3-Step Guide

Installation & Quick Start

Install the package, import the base CSS, and connect columns and row data to complete your first grid.

View the full installation guide
01Install the packageStart with npm.
$ npm i beautiful-grid
02Connect stylesImport the base CSS.
import 'beautiful-grid/style.css';

// Your application entry
createRoot(document.getElementById('root')!).render(<App />);
03Connect dataPass types and rows.
import { BGrid, type BGridColumn } from 'beautiful-grid';

type Order = { id: number; customer: string };
const columns: BGridColumn<Order>[] = [
  { key: 'id', label: 'ID', width: 80 },
  { key: 'customer', label: 'Customer', width: 180 },
];
const rows = [{ values: { id: 1, customer: 'AXISJ' } }];

<BGrid width={640} height={360} columns={columns} data={rows} rowKey="id" />

AI-ready by design

Built for developers. Easy for AI to understand.

From intent to implementation, without losing context.

A clear TypeScript API, task-focused runnable examples, and public documentation all share the same concepts and names. Coding agents can find the context they need and produce reviewable code without depending on a particular tool.

Implementation brief for coding agentsContext matched
Request

Merge cells by department and add a total row at the bottom.

BGridColumn<Order>Typed contractcellMergeOptionsRunnable examplesSummaryPublic context
Reviewable result
✓ Type checked✓ Example traced
const merge = {
  columnsMap: {
    0: { mergeBy: 'department' },
  },
};

<BGrid
  columns={columns}
  data={rows}
  cellMergeOptions={merge}
  summary={summary}
/>

Evaluation Checklist

Supported Environments & License

BeautifulGrid publishes its React, Node.js, and browser baseline. The Apache-2.0 license and complete source let you verify how the grid can be operated and extended after adoption.

React · Node.js baseline

React ^19.2.0 · Node.js 24.x
A client component mounted in the browser.

Current stable browsers

Validate each screen against current stable Chrome, Edge, Safari, and Firefox.

Apache-2.0 open source

Individuals and companies may use, modify, and distribute it commercially under the license terms.

Public source and development

Inspect the TypeScript source, issues, and change history on GitHub, then extend it for your project.

Open Source

Like BeautifulGrid?

If BeautifulGrid is useful for your project, consider giving us a star on GitHub. It helps the project grow.

Apache-2.0 · Open Source · React · TypeScript