@opencorestack/opengridx 3.5.0 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +4 -3
- package/dist/opengridx.es.js +3707 -3657
- package/dist/opengridx.es.js.map +1 -1
- package/dist/opengridx.umd.js +16 -16
- package/dist/opengridx.umd.js.map +1 -1
- package/docs/architecture/datagrid-orchestration.md +2 -1
- package/docs/features/virtualization.md +5 -5
- package/docs/performance.md +212 -1
- package/docs/roadmap.md +1 -1
- package/lib/components/DataGrid/DataGrid.tsx +8 -1
- package/lib/hooks/core/useGridDevWarnings.ts +21 -6
- package/lib/hooks/core/useGridMaxContentHeight.ts +16 -0
- package/lib/hooks/core/useGridVirtualization.ts +19 -0
- package/lib/utils/maxElementHeight.ts +53 -0
- package/llms.txt +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [3.5.1] — 2026-10-12
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Large grids did not scroll at all in Firefox.** Firefox lays out elements up to about 17.9M px and collapses a taller one instead of clamping it, so a grid with more content (about 344,000 rows at the default 52 px row height, 559,000 at 32 px) showed only its first screen of rows and had nothing to scroll. The grid now measures the browser's height limit once per page (an invisible probe, `lib/utils/maxElementHeight.ts`) and caps its scroll content to it: Firefox scrolls normally and reaches every row above the limit, as Chromium and WebKit already did up to theirs (about 33.5M px). Rows below the limit are still not reachable in a single scrolling grid; use pagination or server-side loading. Nothing changes for grids under the limit.
|
|
13
|
+
- The dev warning about very tall content now appears only when rows are actually cut off in the current browser, and says how many rows can be scrolled to ("Only the first 344,000 of 500,000 rows can be scrolled to in this browser").
|
|
14
|
+
|
|
15
|
+
### Internal
|
|
16
|
+
|
|
17
|
+
- **Large-dataset benchmark** — `npm run bench` (`bench/run.mjs`) packs the library, installs it into `bench/app` (a Vite + React 19 production app, like the smoke fixtures; port 4320) and measures it with Playwright in Chromium, Firefox and WebKit at 10k, 100k, 500k and 1M rows (1M also at 32 px): mount, sort, filter, quick filter, group + `sum`, a scripted 5 s scroll (frame-time percentiles and missed frames), DOM size, the furthest reachable row, and long tasks and JS heap in Chromium. Times run from the call to the first painted frame showing the result; medians of 5 runs after a warm-up. `bench/report.mjs` writes the Markdown tables; results and method are in `docs/performance.md` → Benchmarks. Flags `--rows`, `--engine`, `--repeat`, `--quick`. The weekly workflow runs a Chromium `--quick` pass and uploads the JSON; it never fails on numbers. Packing and tarball install are shared with the smoke suite (`scripts/lib/package-fixture.mjs`).
|
|
18
|
+
- **Docs: the browser height limit, as measured** — `docs/performance.md`, `docs/features/virtualization.md` and the README now give the benchmark's numbers instead of unmeasured claims ("60fps for 100k+ rows"), and correct the Firefox limit: past about 17.9M px of content (about 344,000 rows at 52 px) Firefox does not stop at the cap like Chromium and WebKit; the content collapses and the grid does not scroll at all.
|
|
19
|
+
|
|
8
20
|
## [3.5.0] — 2026-10-09
|
|
9
21
|
|
|
10
22
|
### Added
|
package/README.md
CHANGED
|
@@ -68,7 +68,7 @@ Without a `height` prop the grid fills its container (`height: 100%`, or the fre
|
|
|
68
68
|
|
|
69
69
|
## 🚀 Key Features
|
|
70
70
|
|
|
71
|
-
- **High-Performance Virtualization**: Row and column virtualization
|
|
71
|
+
- **High-Performance Virtualization**: Row and column virtualization, [benchmarked](docs/performance.md#benchmarks) from 10k to 1M rows. (Browsers cap an element's height, so a single scrolling grid reaches 645,277 rows at the default 52 px row height in Chromium and Safari and about 344,000 in Firefox; page or stream larger datasets.)
|
|
72
72
|
- **Advanced Layouts**: Native support for **Row & Column Spanning**, Grouping, and Tree Data.
|
|
73
73
|
- **Data Orchestration**: 19 filter operators across string, number, date, boolean and select columns, AND/OR filter groups, multi-column sorting, and client or server pagination.
|
|
74
74
|
- **Zero UI Dependencies**: 100% vanilla CSS (BEM) and pure React/TypeScript logic.
|
|
@@ -500,7 +500,8 @@ Built-in themes: `darkTheme`, `roseTheme`, `emeraldTheme`, `amberTheme`, `compac
|
|
|
500
500
|
- **Tree-shaking Ready**: ES Module build — bundlers (Vite, Webpack) only include what you use.
|
|
501
501
|
- **Zero UI Dependencies**: No MUI, Ant Design, or Radix. Pure React + vanilla CSS.
|
|
502
502
|
- **Lazy Advanced Export**: ExcelJS and jsPDF are optional peer deps — not bundled, loaded only when you call `exportToExcelAdvanced` / `exportToPdf`.
|
|
503
|
-
- **Efficient Rendering**: Row and column virtualization keeps the DOM small
|
|
503
|
+
- **Efficient Rendering**: Row and column virtualization keeps the DOM small (needs a bounded grid height): about 19 rows at rest and under 90 while scrolling fast, at 10k or 1M rows.
|
|
504
|
+
- **[Benchmarks](docs/performance.md#benchmarks)** (`npm run bench`, Apple M1, Chromium, production build): at 100k rows the grid mounts in 89 ms, sorts in 102–160 ms, filters in 28–33 ms and groups with a sum in 87 ms; at 1M rows mount takes 0.7 s and a sort 1.1–1.3 s. Scrolling missed no frames at any size in Chromium. Past the browser's height cap (645,277 rows at 52 px in Chromium and Safari, about 344,000 in Firefox) rows cannot be scrolled to; page or stream larger datasets.
|
|
504
505
|
|
|
505
506
|
---
|
|
506
507
|
|
|
@@ -515,7 +516,7 @@ Full documentation at 👉 **[opencorestack.github.io/OpenGridX](https://opencor
|
|
|
515
516
|
- **[Column Visibility](docs/components/column-visibility.md)** — Column show/hide panel
|
|
516
517
|
|
|
517
518
|
### 🚀 Features
|
|
518
|
-
- **[Virtualization](docs/features/virtualization.md)** —
|
|
519
|
+
- **[Virtualization](docs/features/virtualization.md)** — row and column virtualization; [measured](docs/performance.md#benchmarks) from 10k to 1M rows
|
|
519
520
|
- **[Filtering & Search](docs/features/filtering.md)** — Quick filters and advanced operators
|
|
520
521
|
- **[Sorting & Pagination](docs/features/sorting-pagination.md)** — Multi-column sorting
|
|
521
522
|
- **[Editing & Reordering](docs/features/editing-reordering.md)** — Inline edits and DnD
|