오픈소스 · Apache-2.0

아름답게, 강력하게.
React로 자연스럽게.

아름다운 기본 디자인으로 바로 시작하고, 편집·정렬·필터·병합·집계·피벗까지 업무에 필요한 데이터 기능을 React 방식으로 유연하게 확장하세요.

npm i beautiful-grid

Apache-2.0 오픈소스 · 모든 기능을 실행 예제와 실제 소스로 확인하세요.

데이터 그리드 불러오는 중

대용량 데이터

550,000

실행 예제로 검증한 행 수

기본 행 높이 29px · 마지막 550,000번째 행까지 확인
왜 55만 행인가?

데이터 배열이 아니라 Chromium의 단일 스크롤 높이가 먼저 한계에 닿기 때문입니다.

15,950,030px16,777,216px
기본 행 높이 29px · 약 827,186px(4.9%) 여유최대 행 높이: ⌊(상한 16,777,216 − 부가 30) ÷ 550,000⌋ = 30px

번들사이즈

59.5KiB

초기 JS + CSS 합산 gzip

JS 51.4KiB · CSS 8.1KiB · React 제외 · 열 재배치12.8KiB · 열 도구상자 4.7KiB · 검색/메뉴2.9KiB 지연 로드 · 런타임 의존성 2

Performance

60fps스크롤56.6ms초기 마운트

스크롤과 첫 화면 표시를 함께 측정

1440×1000 · 72행 · 스크롤 5회 중앙값 · 마운트 현재 로드

다양한 기능

50

현재 지원하는 공개 Grid Props

BGridProps 52개 중 deprecated 2개를 제외했습니다.

업무 흐름별 핵심 기능

기능을 나열하지 않고,
일을 끝내는 흐름으로 연결했습니다.

그리드에서 자주 마주치는 문제를 대용량 탐색, 셀 편집, 조회와 선택, 구조화와 집계의 네 가지 흐름으로 나눠 실제 예제와 함께 정리했습니다.

01대용량 탐색

55만 행도 필요한 만큼만 그려 빠르게 살펴봅니다.

가상 스크롤로 현재 보이는 행만 그리고, 고정 열로 기준 정보를 붙잡습니다. 화면 크기가 달라져도 넓고 긴 데이터를 끊김 없이 살펴볼 수 있습니다.

현재 화면에 필요한 셀만 렌더링
02셀 편집

셀에서 입력하고 저장한 뒤, 다음 칸으로 바로 이동합니다.

텍스트·날짜·선택 입력기를 바로 쓰거나 Ant Design 구성 요소를 연결할 수 있습니다. 유효성 검사와 키보드 이동까지 한 흐름으로 이어집니다.

입력·검증·저장·이동을 한 번에 처리
03조회와 선택

정렬·필터로 찾고, 선택한 행을 다음 업무로 넘깁니다.

여러 조건으로 정렬하고 값·텍스트·숫자를 필터링합니다. 검색과 행 선택 결과는 화면 안에서 처리하거나 서버 조회 조건으로 그대로 넘길 수 있습니다.

조회 조건과 선택 상태를 한곳에서 관리
04구조화와 집계

반복 항목은 묶고, 숫자는 한눈에 읽히게 집계합니다.

열 그룹과 셀 병합으로 구조를 드러내고, 요약 행과 피벗으로 필요한 수치를 모읍니다. 행·열 배치와 색상도 업무 기준에 맞게 조정할 수 있습니다.

업무 기준에 맞춘 묶음·집계·표현

가상 스크롤의 원리

55만 행을 열어도,
화면에는 필요한 셀만 그립니다.

55만 행 × 24열이면 셀은 모두 1,320만 개입니다. BeautifulGrid는 이를 한꺼번에 그리지 않고, 지금 보이는 약 20행 × 12열만 화면에 표시합니다.

셀이 그려지는 방식을 설명하기 위한 예시이며 속도 측정 결과는 아닙니다. 실제 성능은 셀 구성과 브라우저 환경에 따라 달라집니다.

전체 데이터 공간13,200,000

550,000 행 × 24 열

현재 보이는 영역≈ 240

약 20행 × 12열

그리드의 사각형 뷰포트 안에 필요한 셀만 그립니다.

3단계 빠른 시작

설치부터 첫 그리드까지,
세 단계로 시작합니다.

패키지를 설치하고 기본 CSS를 불러온 뒤, 열과 행 데이터만 연결하면 첫 그리드가 완성됩니다.

전체 설치 가이드 보기
01패키지 설치npm으로 시작합니다.
$ npm i beautiful-grid
02스타일 연결기본 CSS를 불러옵니다.
import 'beautiful-grid/style.css';

// Your application entry
createRoot(document.getElementById('root')!).render(<App />);
03데이터 연결타입과 행을 전달합니다.
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: '고객', width: 180 },
];
const rows = [{ values: { id: 1, customer: 'AXISJ' } }];

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

React에 맞춘 업무 그리드

React 생태계에 자연스럽게,
업무 기능은 강력하게.

컴포넌트와 상태 흐름은 React에 자연스럽게 맞추고, 가상 스크롤·편집·정렬·필터·선택·집계처럼 업무 화면에 필요한 기능은 하나의 그리드에 충실하게 담았습니다.

React 상태 흐름에 자연스럽게

데이터와 선택, 편집 상태를 컴포넌트 흐름에 맞춰 제어합니다.

업무 기능을 한 컴포넌트에

가상 스크롤부터 편집·정렬·필터·병합·요약까지 연결합니다.

제품 디자인에 맞게 확장

렌더러와 편집 플러그인, CSS 변수로 화면의 문법을 유지합니다.

대량 데이터도 필요한 만큼만

가상화와 서버 조회 흐름으로 화면에 필요한 범위만 처리합니다.

도입 전에 확인할 범위

Excel 수식 엔진, Ribbon, 전용 디자이너까지 완전히 대체해야 한다면 별도 검토가 필요합니다.

프로젝트에 연결하기

당신의 React 화면에서,
바로 시작해 보세요.

Playground에서 열 구성과 스타일을 먼저 맞춰 보고, 실행 예제의 코드를 실제 프로젝트 흐름에 연결하세요.