IFR architecture scale trends
Five product architectures on one generated content SFC, scaled from ~1k to ~30k elements. Lead chart is cost space (MT gzip × FCP); FCP vs N follows. See also the Unified Benchmark Matrix for the same-host IFR × VDOM/Vapor × React story.
Linear scale — cost space + FCP vs N
Paint vs MT load cost (linear) Linear cost space (playground-style, zero baseline). Same points as the framework bench's create×update chart: architectures that pay MT gzip without buying FCP shoot right; those that scale poorly shoot up. CPU ×1.
0 100k 200k 300k 400k 500k 600k 0 200 400 600 800 1k
MT section gzip — bytes, linear
FCP — ms, linear
VDOM · 1k
N=1004 FCP=86.6ms MT gz=7.1KB VDOM · 3k
N=3004 FCP=143.4ms MT gz=7.1KB VDOM · 5k
N=5004 FCP=188.3ms MT gz=7.1KB VDOM · 10k
N=10004 FCP=310.4ms MT gz=7.1KB VDOM · 20k
N=20004 FCP=586.9ms MT gz=7.1KB VDOM · 30k
N=30004 FCP=841.5ms MT gz=7.1KB 1k 3k 5k 10k 20k 30k VDOM VDOM+IFR · 1k
N=1004 FCP=77.7ms MT gz=33.8KB VDOM+IFR · 3k
N=3004 FCP=119.6ms MT gz=34.6KB VDOM+IFR · 5k
N=5004 FCP=163.1ms MT gz=35.4KB VDOM+IFR · 10k
N=10004 FCP=378.9ms MT gz=37.1KB VDOM+IFR · 20k
N=20004 FCP=695.1ms MT gz=40.2KB VDOM+IFR · 30k
N=30004 FCP=1010.0ms MT gz=43.1KB VDOM+IFR VDOM+IFR+ET · 1k
N=1004 FCP=70.0ms MT gz=54.1KB VDOM+IFR+ET · 3k
N=3004 FCP=118.8ms MT gz=94.4KB VDOM+IFR+ET · 5k
N=5004 FCP=160.9ms MT gz=134.3KB VDOM+IFR+ET · 10k
N=10004 FCP=278.4ms MT gz=233.9KB VDOM+IFR+ET · 20k
N=20004 FCP=526.1ms MT gz=432.1KB VDOM+IFR+ET · 30k
N=30004 FCP=770.6ms MT gz=628.3KB VDOM+IFR+ET Vapor · 1k
N=1004 FCP=93.3ms MT gz=7.1KB Vapor · 3k
N=3004 FCP=156.3ms MT gz=7.1KB Vapor · 5k
N=5004 FCP=209.5ms MT gz=7.1KB Vapor · 10k
N=10004 FCP=365.4ms MT gz=7.1KB Vapor · 20k
N=20004 FCP=691.7ms MT gz=7.1KB Vapor · 30k
N=30004 FCP=1010.1ms MT gz=7.1KB Vapor Vapor+IFR · 1k
N=1004 FCP=86.9ms MT gz=43.3KB Vapor+IFR · 3k
N=3004 FCP=141.0ms MT gz=54.3KB Vapor+IFR · 5k
N=5004 FCP=193.3ms MT gz=65.4KB Vapor+IFR · 10k
N=10004 FCP=337.6ms MT gz=90.5KB Vapor+IFR · 20k
N=20004 FCP=637.1ms MT gz=138.7KB Vapor+IFR · 30k
N=30004 FCP=905.9ms MT gz=185.2KB Vapor+IFR
FCP vs content scale (linear) Linear, zero baseline, 1k→30k — absolute FCP gaps. VDOM+IFR without ET crosses above plain VDOM and can DNF on deep MT mount. CPU ×1.
0 5k 10k 15k 20k 25k 30k 0 200 400 600 800 1k
elements N — linear
FCP — ms, linear
VDOM · 1k
N=1004 FCP=86.6ms MT gz=7.1KB VDOM · 3k
N=3004 FCP=143.4ms MT gz=7.1KB VDOM · 5k
N=5004 FCP=188.3ms MT gz=7.1KB VDOM · 10k
N=10004 FCP=310.4ms MT gz=7.1KB VDOM · 20k
N=20004 FCP=586.9ms MT gz=7.1KB VDOM · 30k
N=30004 FCP=841.5ms MT gz=7.1KB 1k 3k 5k 10k 20k 30k VDOM VDOM+IFR · 1k
N=1004 FCP=77.7ms MT gz=33.8KB VDOM+IFR · 3k
N=3004 FCP=119.6ms MT gz=34.6KB VDOM+IFR · 5k
N=5004 FCP=163.1ms MT gz=35.4KB VDOM+IFR · 10k
N=10004 FCP=378.9ms MT gz=37.1KB VDOM+IFR · 20k
N=20004 FCP=695.1ms MT gz=40.2KB VDOM+IFR · 30k
N=30004 FCP=1010.0ms MT gz=43.1KB VDOM+IFR VDOM+IFR+ET · 1k
N=1004 FCP=70.0ms MT gz=54.1KB VDOM+IFR+ET · 3k
N=3004 FCP=118.8ms MT gz=94.4KB VDOM+IFR+ET · 5k
N=5004 FCP=160.9ms MT gz=134.3KB VDOM+IFR+ET · 10k
N=10004 FCP=278.4ms MT gz=233.9KB VDOM+IFR+ET · 20k
N=20004 FCP=526.1ms MT gz=432.1KB VDOM+IFR+ET · 30k
N=30004 FCP=770.6ms MT gz=628.3KB VDOM+IFR+ET Vapor · 1k
N=1004 FCP=93.3ms MT gz=7.1KB Vapor · 3k
N=3004 FCP=156.3ms MT gz=7.1KB Vapor · 5k
N=5004 FCP=209.5ms MT gz=7.1KB Vapor · 10k
N=10004 FCP=365.4ms MT gz=7.1KB Vapor · 20k
N=20004 FCP=691.7ms MT gz=7.1KB Vapor · 30k
N=30004 FCP=1010.1ms MT gz=7.1KB Vapor Vapor+IFR · 1k
N=1004 FCP=86.9ms MT gz=43.3KB Vapor+IFR · 3k
N=3004 FCP=141.0ms MT gz=54.3KB Vapor+IFR · 5k
N=5004 FCP=193.3ms MT gz=65.4KB Vapor+IFR · 10k
N=10004 FCP=337.6ms MT gz=90.5KB Vapor+IFR · 20k
N=20004 FCP=637.1ms MT gz=138.7KB Vapor+IFR · 30k
N=30004 FCP=905.9ms MT gz=185.2KB Vapor+IFR
Log-log scale
Paint vs MT load cost (log) Log-log cost space (playground-style). Each polyline is one architecture through 1k→30k. Right = heavier main-thread bundle; up = slower FCP. CPU ×1. Lower-left dominates.
10k 30k 100k 300k 100 300 1k
MT section gzip — bytes, log
FCP — ms, log
VDOM · 1k
N=1004 FCP=86.6ms MT gz=7.1KB VDOM · 3k
N=3004 FCP=143.4ms MT gz=7.1KB VDOM · 5k
N=5004 FCP=188.3ms MT gz=7.1KB VDOM · 10k
N=10004 FCP=310.4ms MT gz=7.1KB VDOM · 20k
N=20004 FCP=586.9ms MT gz=7.1KB VDOM · 30k
N=30004 FCP=841.5ms MT gz=7.1KB 1k 3k 5k 10k 20k 30k VDOM VDOM+IFR · 1k
N=1004 FCP=77.7ms MT gz=33.8KB VDOM+IFR · 3k
N=3004 FCP=119.6ms MT gz=34.6KB VDOM+IFR · 5k
N=5004 FCP=163.1ms MT gz=35.4KB VDOM+IFR · 10k
N=10004 FCP=378.9ms MT gz=37.1KB VDOM+IFR · 20k
N=20004 FCP=695.1ms MT gz=40.2KB VDOM+IFR · 30k
N=30004 FCP=1010.0ms MT gz=43.1KB VDOM+IFR VDOM+IFR+ET · 1k
N=1004 FCP=70.0ms MT gz=54.1KB VDOM+IFR+ET · 3k
N=3004 FCP=118.8ms MT gz=94.4KB VDOM+IFR+ET · 5k
N=5004 FCP=160.9ms MT gz=134.3KB VDOM+IFR+ET · 10k
N=10004 FCP=278.4ms MT gz=233.9KB VDOM+IFR+ET · 20k
N=20004 FCP=526.1ms MT gz=432.1KB VDOM+IFR+ET · 30k
N=30004 FCP=770.6ms MT gz=628.3KB VDOM+IFR+ET Vapor · 1k
N=1004 FCP=93.3ms MT gz=7.1KB Vapor · 3k
N=3004 FCP=156.3ms MT gz=7.1KB Vapor · 5k
N=5004 FCP=209.5ms MT gz=7.1KB Vapor · 10k
N=10004 FCP=365.4ms MT gz=7.1KB Vapor · 20k
N=20004 FCP=691.7ms MT gz=7.1KB Vapor · 30k
N=30004 FCP=1010.1ms MT gz=7.1KB Vapor Vapor+IFR · 1k
N=1004 FCP=86.9ms MT gz=43.3KB Vapor+IFR · 3k
N=3004 FCP=141.0ms MT gz=54.3KB Vapor+IFR · 5k
N=5004 FCP=193.3ms MT gz=65.4KB Vapor+IFR · 10k
N=10004 FCP=337.6ms MT gz=90.5KB Vapor+IFR · 20k
N=20004 FCP=637.1ms MT gz=138.7KB Vapor+IFR · 30k
N=30004 FCP=905.9ms MT gz=185.2KB Vapor+IFR
FCP vs content scale (log) Log-log. Same generated SFC at ~1k→30k elements. Lynx for Web, CPU ×1. α ≈ 1 → linear in N; α ≪ 1 → dominated by fixed costs.
1k 3k 10k 30k 100 300 1k
elements N — log
FCP — ms, log
VDOM · 1k
N=1004 FCP=86.6ms MT gz=7.1KB VDOM · 3k
N=3004 FCP=143.4ms MT gz=7.1KB VDOM · 5k
N=5004 FCP=188.3ms MT gz=7.1KB VDOM · 10k
N=10004 FCP=310.4ms MT gz=7.1KB VDOM · 20k
N=20004 FCP=586.9ms MT gz=7.1KB VDOM · 30k
N=30004 FCP=841.5ms MT gz=7.1KB 1k 3k 5k 10k 20k 30k VDOM VDOM+IFR · 1k
N=1004 FCP=77.7ms MT gz=33.8KB VDOM+IFR · 3k
N=3004 FCP=119.6ms MT gz=34.6KB VDOM+IFR · 5k
N=5004 FCP=163.1ms MT gz=35.4KB VDOM+IFR · 10k
N=10004 FCP=378.9ms MT gz=37.1KB VDOM+IFR · 20k
N=20004 FCP=695.1ms MT gz=40.2KB VDOM+IFR · 30k
N=30004 FCP=1010.0ms MT gz=43.1KB VDOM+IFR VDOM+IFR+ET · 1k
N=1004 FCP=70.0ms MT gz=54.1KB VDOM+IFR+ET · 3k
N=3004 FCP=118.8ms MT gz=94.4KB VDOM+IFR+ET · 5k
N=5004 FCP=160.9ms MT gz=134.3KB VDOM+IFR+ET · 10k
N=10004 FCP=278.4ms MT gz=233.9KB VDOM+IFR+ET · 20k
N=20004 FCP=526.1ms MT gz=432.1KB VDOM+IFR+ET · 30k
N=30004 FCP=770.6ms MT gz=628.3KB VDOM+IFR+ET Vapor · 1k
N=1004 FCP=93.3ms MT gz=7.1KB Vapor · 3k
N=3004 FCP=156.3ms MT gz=7.1KB Vapor · 5k
N=5004 FCP=209.5ms MT gz=7.1KB Vapor · 10k
N=10004 FCP=365.4ms MT gz=7.1KB Vapor · 20k
N=20004 FCP=691.7ms MT gz=7.1KB Vapor · 30k
N=30004 FCP=1010.1ms MT gz=7.1KB Vapor Vapor+IFR · 1k
N=1004 FCP=86.9ms MT gz=43.3KB Vapor+IFR · 3k
N=3004 FCP=141.0ms MT gz=54.3KB Vapor+IFR · 5k
N=5004 FCP=193.3ms MT gz=65.4KB Vapor+IFR · 10k
N=10004 FCP=337.6ms MT gz=90.5KB Vapor+IFR · 20k
N=20004 FCP=637.1ms MT gz=138.7KB Vapor+IFR · 30k
N=30004 FCP=905.9ms MT gz=185.2KB Vapor+IFR
Scaling exponents
α ≈ 0 → FCP dominated by fixed overhead (bundle parse / boot / IPC). α ≈ 1 → cost grows with content.
metric ~ Nα VDOM VDOM+IFR VDOM+IFR+ET Vapor Vapor+IFR FCP α=0.68 α=0.80 α=0.72 α=0.71 α=0.71 MT gzip α=0.00 α=0.07 α=0.73 α=0.00 α=0.43 web gzip α=0.08 α=0.09 α=0.74 α=0.43 α=0.44
Raw medians
architecture · scale elements FCP ms Δ vs VDOM MT gzip web gzip VDOM · 1k 1004 86.6 — 7.1 KB 35.0 KB VDOM+IFR · 1k 1004 77.7 -10% 33.8 KB 62.9 KB VDOM+IFR+ET · 1k 1004 70.0 -19% 54.1 KB 104.6 KB Vapor · 1k 1004 93.3 +8% 7.1 KB 44.5 KB Vapor+IFR · 1k 1004 86.9 +0% 43.3 KB 85.9 KB VDOM · 3k 3004 143.4 — 7.1 KB 35.9 KB VDOM+IFR · 3k 3004 119.6 -17% 34.6 KB 64.7 KB VDOM+IFR+ET · 3k 3004 118.8 -17% 94.4 KB 184.9 KB Vapor · 3k 3004 156.3 +9% 7.1 KB 55.8 KB Vapor+IFR · 3k 3004 141.0 -2% 54.3 KB 108.3 KB VDOM · 5k 5004 188.3 — 7.1 KB 36.8 KB VDOM+IFR · 5k 5004 163.1 -13% 35.4 KB 66.5 KB VDOM+IFR+ET · 5k 5004 160.9 -15% 134.3 KB 266.3 KB Vapor · 5k 5004 209.5 +11% 7.1 KB 66.6 KB Vapor+IFR · 5k 5004 193.3 +3% 65.4 KB 129.9 KB VDOM · 10k 10004 310.4 — 7.1 KB 39.0 KB VDOM+IFR · 10k 10004 378.9 +22% 37.1 KB 70.7 KB VDOM+IFR+ET · 10k 10004 278.4 -10% 233.9 KB 465.7 KB Vapor · 10k 10004 365.4 +18% 7.1 KB 92.5 KB Vapor+IFR · 10k 10004 337.6 +9% 90.5 KB 180.8 KB VDOM · 20k 20004 586.9 — 7.1 KB 42.8 KB VDOM+IFR · 20k 20004 695.1 +18% 40.2 KB 77.9 KB VDOM+IFR+ET · 20k 20004 526.1 -10% 432.1 KB 862.3 KB Vapor · 20k 20004 691.7 +18% 7.1 KB 139.8 KB Vapor+IFR · 20k 20004 637.1 +9% 138.7 KB 277.4 KB VDOM · 30k 30004 841.5 — 7.1 KB 46.2 KB VDOM+IFR · 30k 30004 1010.0 +20% 43.1 KB 84.9 KB VDOM+IFR+ET · 30k 30004 770.6 -8% 628.3 KB 1260.1 KB Vapor · 30k 30004 1010.1 +20% 7.1 KB 187.4 KB Vapor+IFR · 30k 30004 905.9 +8% 185.2 KB 371.3 KB