Open Source · Apache-2.0

Beautiful. Powerful.
Naturally React.

Start with a beautiful default and scale to advanced editing, sorting, filtering, merging, aggregation, and pivoting—all designed to fit naturally into React.

npm i beautiful-grid

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

Loading DataGrid

Large datasets

550,000

Rows verified in a runnable example

29px default row height · verified through row 550,000
Why 550K rows?

Chromium’s single-scroll height limit is reached before the data array becomes the constraint.

15,950,030px16,777,216px
29px default row height · about 827,186px (4.9%) headroomMaximum row height: floor((16,777,216 limit - 30 overhead) / 550,000) = 30px

Bundle size

59.5KiB

Initial JS + CSS gzip total

JS 51.4KiB · CSS 8.1KiB · React excluded · column reorder12.8KiB · toolbox 4.7KiB · search/menu2.9KiB lazy-loaded · runtime dependencies 2

Performance

60fpsscroll56.6msinitial mount

Measure scrolling and first paint together

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

Feature breadth

50

Currently supported public Grid props

50 current props, excluding 2 deprecated members from 52 BGridProps.

Core capabilities by workflow

More than a feature list—
a connected path to finished work.

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 550,000 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, date, and select editors 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

How virtual scrolling works

Even with 550K rows,
only needed cells reach the screen.

A 550,000 × 24 dataset contains 13.2 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 space13,200,000cells

550,000 rows × 24 columns

Current viewport≈ 240cells

About 20 rows × 12 columns

Only cells needed inside the rectangular viewport are rendered.

Three-step quick start

From install to first grid,
start in three steps.

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" />

A business grid made for React

Seamless in the React ecosystem,
powerful across real data workflows.

Components and state follow React naturally, while virtual scrolling, editing, sorting, filtering, selection, and aggregation remain fully integrated in one grid.

Natural React state flow

Control data, selection, and editing state through component flow.

Business features in one component

Connect virtual scrolling, editing, sort, filter, merge, and summary.

Extend to match your product

Preserve your visual language with renderers, editor plugins, and CSS variables.

Process only what large data needs

Virtualization and server queries keep work scoped to the visible range.

Confirm before adoption

If you need a complete replacement for Excel formulas, Ribbon, or a dedicated designer, review that requirement separately.

Connect it to your project

Start directly
in your React screen.

Tune columns and styles in the Playground, then connect runnable example code to your project workflow.