{
  "schemaVersion": 1,
  "capturedAt": "2026-07-14",
  "metric": "retained-js-heap",
  "unit": "MB",
  "aggregation": "median",
  "iterations": 3,
  "systems": {
    "opt-datagrid": {
      "version": "1.4.2"
    },
    "tanstack-table-v9": {
      "version": "9.0.0-beta.31",
      "virtualVersion": "3.14.6"
    }
  },
  "environment": {
    "cpu": "Apple M2 Max",
    "logicalCpuCount": 12,
    "memoryGb": 32,
    "operatingSystem": "macOS / Darwin 25.5.0",
    "bun": "1.3.14",
    "node": "24.3.0",
    "playwright": "1.58.2",
    "browser": "Playwright bundled Chromium"
  },
  "results": [
    {
      "id": "rows-10x8-initial",
      "kind": "rows",
      "size": "10 × 8",
      "phase": "initial",
      "optDatagrid": 2.4,
      "tanstackTableV9": 2.09
    },
    {
      "id": "rows-10x8-end",
      "kind": "rows",
      "size": "10 × 8",
      "phase": "end-scroll",
      "optDatagrid": 3.03,
      "tanstackTableV9": 2.86
    },
    {
      "id": "rows-1000x8-initial",
      "kind": "rows",
      "size": "1,000 × 8",
      "phase": "initial",
      "optDatagrid": 3.17,
      "tanstackTableV9": 2.8
    },
    {
      "id": "rows-1000x8-end",
      "kind": "rows",
      "size": "1,000 × 8",
      "phase": "end-scroll",
      "optDatagrid": 3.92,
      "tanstackTableV9": 4.04
    },
    {
      "id": "rows-100000x8-initial",
      "kind": "rows",
      "size": "100,000 × 8",
      "phase": "initial",
      "optDatagrid": 12.61,
      "tanstackTableV9": 40.32
    },
    {
      "id": "rows-100000x8-end",
      "kind": "rows",
      "size": "100,000 × 8",
      "phase": "end-scroll",
      "optDatagrid": 13.36,
      "tanstackTableV9": 41.56
    },
    {
      "id": "rows-1000000x8-initial",
      "kind": "rows",
      "size": "1,000,000 × 8",
      "phase": "initial",
      "optDatagrid": 98.43,
      "tanstackTableV9": 383.53
    },
    {
      "id": "rows-1000000x8-end",
      "kind": "rows",
      "size": "1,000,000 × 8",
      "phase": "end-scroll",
      "optDatagrid": 99.23,
      "tanstackTableV9": 384.77
    },
    {
      "id": "columns-10x10-initial",
      "kind": "columns",
      "size": "10 × 10",
      "phase": "initial",
      "optDatagrid": 2.48,
      "tanstackTableV9": 2.22
    },
    {
      "id": "columns-10x10-end",
      "kind": "columns",
      "size": "10 × 10",
      "phase": "end-scroll",
      "optDatagrid": 3.11,
      "tanstackTableV9": 3.06
    },
    {
      "id": "columns-100x100-initial",
      "kind": "columns",
      "size": "100 × 100",
      "phase": "initial",
      "optDatagrid": 4.51,
      "tanstackTableV9": 3.79
    },
    {
      "id": "columns-100x100-end",
      "kind": "columns",
      "size": "100 × 100",
      "phase": "end-scroll",
      "optDatagrid": 5.13,
      "tanstackTableV9": 6.53
    },
    {
      "id": "columns-100x1000-initial",
      "kind": "columns",
      "size": "100 × 1,000",
      "phase": "initial",
      "optDatagrid": 8.48,
      "tanstackTableV9": 10.69
    },
    {
      "id": "columns-100x1000-end",
      "kind": "columns",
      "size": "100 × 1,000",
      "phase": "end-scroll",
      "optDatagrid": 9.1,
      "tanstackTableV9": 16.94
    },
    {
      "id": "columns-100x10000-initial",
      "kind": "columns",
      "size": "100 × 10,000",
      "phase": "initial",
      "optDatagrid": 46.71,
      "tanstackTableV9": 80.19
    },
    {
      "id": "columns-100x10000-end",
      "kind": "columns",
      "size": "100 × 10,000",
      "phase": "end-scroll",
      "optDatagrid": 47.33,
      "tanstackTableV9": 127.78
    }
  ],
  "notes": [
    "Positive advantage means opt-datagrid retained less JS heap.",
    "Small cases (≤ 1,000 rows / 10×10) show opt-datagrid retaining 0.3–0.7 MB more due to fixed runtime overhead.",
    "Sources: benchmarks/datagrid-memory-runner results from 2026-07-14 full-matrix runs (3 iterations)."
  ]
}
