{
  "description": "Reviewed chart inputs for the App Canvas Safari article. MiB = 2^20 bytes. Not exact per-page JavaScript heap.",
  "mac": {
    "rows": [
      {
        "reading": "Early: settled",
        "memoryMiB": 2267.66,
        "trial": "baseline-7",
        "scope": "Mac Safari; 946 \u00d7 946 window"
      },
      {
        "reading": "Early: zoom peak",
        "memoryMiB": 4991.42,
        "trial": "baseline-7",
        "scope": "Mac Safari; 946 \u00d7 946 window"
      },
      {
        "reading": "Selected: peak",
        "memoryMiB": 1912.41,
        "trial": "final-native-v3-landscape",
        "scope": "Mac Safari; 1728 \u00d7 954 window; 20 zoom cycles"
      },
      {
        "reading": "Selected: returned",
        "memoryMiB": 634.58,
        "trial": "final-native-v3-landscape",
        "scope": "Mac Safari; 1728 \u00d7 954 window; 20 zoom cycles"
      }
    ],
    "source": {
      "provider": "Recorded desktop Safari experiments",
      "description": "Sampled WebContent physical footprint including charged graphics. Selected exploratory trials, not matched workloads. No percentage reduction is established.",
      "files": [
        "Mac Safari experiment aggregate (baseline-7; final-native-v3-landscape)"
      ],
      "links": [
        {
          "label": "Public Mac methodology",
          "href": "https://github.com/tombelieber/app-canvas/blob/b645d3e720713bb0ff0708496387cfd4efd93cbe/docs/rendering-performance.md"
        }
      ],
      "metricDefinitions": [
        {
          "label": "memoryMiB",
          "definition": "Sampled WebContent physical footprint in MiB, including charged graphics; selected settled/peak/returned readings."
        }
      ],
      "evidenceFlow": [
        {
          "title": "Source",
          "detail": "Recorded native Mac Safari profiling: baseline-7, 4991.42 MiB peak and 2267.66 MiB returned; final-native-v3-landscape, 1912.41 MiB peak and 634.58 MiB returned. Public methodology: https://github.com/tombelieber/app-canvas/blob/b645d3e720713bb0ff0708496387cfd4efd93cbe/docs/rendering-performance.md"
        }
      ]
    }
  },
  "iphone": {
    "rows": [
      {
        "variant": "Shipped baseline",
        "peakMiB": 1703.02,
        "minMiB": 1515.22,
        "maxMiB": 1911.31,
        "trials": 3
      },
      {
        "variant": "Rejected candidate",
        "peakMiB": 1971.08,
        "minMiB": 1781.63,
        "maxMiB": 2049.92,
        "trials": 3
      }
    ],
    "source": {
      "provider": "Physical iPhone 13 Pro / iOS 18.6.2",
      "description": "Later A/B against an already-working renderer. Median of 3 trial peaks per variant; ABBAAB; memory sampled every 500 ms. Not a comparison with the original crashing build. Observed min/max are spread, not confidence intervals.",
      "files": [
        "safari-benchmark-2026-10-18.json"
      ],
      "links": [
        {
          "label": "Public aggregate and per-trial data",
          "href": "https://github.com/tombelieber/app-canvas/blob/b645d3e720713bb0ff0708496387cfd4efd93cbe/docs/safari-benchmark-2026-10-18.json"
        }
      ],
      "metricDefinitions": [
        {
          "label": "peakMiB",
          "definition": "Median of three per-trial sampled active WebContent peak physical footprints in MiB; charged graphics and retained contexts may be included."
        }
      ],
      "evidenceFlow": [
        {
          "title": "Load public JSON",
          "detail": "https://github.com/tombelieber/app-canvas/blob/b645d3e720713bb0ff0708496387cfd4efd93cbe/docs/safari-benchmark-2026-10-18.json"
        },
        {
          "title": "Transform",
          "detail": "Read summary.baseline.activeWebContentPeakMiB and summary.optimized.activeWebContentPeakMiB; retain median, min, max and repetitionsPerVariant=3."
        }
      ]
    }
  },
  "rendering": "Rendered with the Data plugin shared React/Recharts renderer and native PNG export. No new benchmark was run for these charts.",
  "renderedLabelMapping": {
    "Shipped": "Shipped baseline",
    "Rejected": "Rejected candidate"
  }
}
