aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/public/images/blog
diff options
context:
space:
mode:
authorHsiangNianian <admin@jyunko.cn>2023-04-22 19:52:26 +0800
committerHsiangNianian <admin@jyunko.cn>2023-04-22 19:52:26 +0800
commit4838df315931bb883f704ec3e1abe2685f296cdf (patch)
tree57a8550c4cd5338f1126364bb518c6cde8d96e7d /docs/public/images/blog
parentdb74ade0234a40c2120ad5f2a41bee50ce13de02 (diff)
downloadHydroRoll-4838df315931bb883f704ec3e1abe2685f296cdf.tar.gz
HydroRoll-4838df315931bb883f704ec3e1abe2685f296cdf.zip
😀
Diffstat (limited to 'docs/public/images/blog')
-rw-r--r--docs/public/images/blog/joining-vercel/twitter-card.pngbin0 -> 375010 bytes
-rw-r--r--docs/public/images/blog/saml-sso-now-available/twitter-card.pngbin0 -> 47874 bytes
-rw-r--r--docs/public/images/blog/turbo-0-4-0/turbo-vs-lerna-execution.pngbin0 -> 565547 bytes
-rw-r--r--docs/public/images/blog/turbo-0-4-0/twitter-card.pngbin0 -> 375010 bytes
-rw-r--r--docs/public/images/blog/turbo-1-1-0/turborepo-weekly-npm-downloads.pngbin0 -> 516416 bytes
-rw-r--r--docs/public/images/blog/turbo-1-1-0/twitter-card.pngbin0 -> 308547 bytes
-rw-r--r--docs/public/images/blog/turbo-1-2-0/turbo-dry-run.pngbin0 -> 543570 bytes
-rw-r--r--docs/public/images/blog/turbo-1-2-0/twitter-card.pngbin0 -> 321397 bytes
-rw-r--r--docs/public/images/blog/turbo-1-3-0/twitter-card.pngbin0 -> 988638 bytes
-rw-r--r--docs/public/images/blog/turbo-1-4-0/twitter-card.pngbin0 -> 957060 bytes
-rw-r--r--docs/public/images/blog/turbo-1-5-0/twitter-card.pngbin0 -> 956454 bytes
-rw-r--r--docs/public/images/blog/turbo-1-6-0/twitter-card.pngbin0 -> 958685 bytes
-rw-r--r--docs/public/images/blog/turbo-1-7-0/turbo-inference.pngbin0 -> 3921505 bytes
-rw-r--r--docs/public/images/blog/turbo-1-7-0/twitter-card.pngbin0 -> 962653 bytes
-rw-r--r--docs/public/images/blog/turbo-1-8-0/twitter-card.pngbin0 -> 964389 bytes
-rw-r--r--docs/public/images/blog/turbo-1-9-0/twitter-card.pngbin0 -> 956654 bytes
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_dark.svg202
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_light.svg202
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_dark.svg147
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_light.svg147
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_startup_dark.svg127
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/bench_startup_light.svg127
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/triangle-dark.pngbin0 -> 125774 bytes
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/triangle-light.pngbin0 -> 118511 bytes
-rw-r--r--docs/public/images/blog/turbopack-benchmarks/twitter-card.pngbin0 -> 466495 bytes
-rw-r--r--docs/public/images/blog/you-might-not-need-typescript-project-references/twitter-card.pngbin0 -> 47376 bytes
26 files changed, 952 insertions, 0 deletions
diff --git a/docs/public/images/blog/joining-vercel/twitter-card.png b/docs/public/images/blog/joining-vercel/twitter-card.png
new file mode 100644
index 0000000..b508a0b
--- /dev/null
+++ b/docs/public/images/blog/joining-vercel/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/saml-sso-now-available/twitter-card.png b/docs/public/images/blog/saml-sso-now-available/twitter-card.png
new file mode 100644
index 0000000..4056896
--- /dev/null
+++ b/docs/public/images/blog/saml-sso-now-available/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-0-4-0/turbo-vs-lerna-execution.png b/docs/public/images/blog/turbo-0-4-0/turbo-vs-lerna-execution.png
new file mode 100644
index 0000000..b4bf572
--- /dev/null
+++ b/docs/public/images/blog/turbo-0-4-0/turbo-vs-lerna-execution.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-0-4-0/twitter-card.png b/docs/public/images/blog/turbo-0-4-0/twitter-card.png
new file mode 100644
index 0000000..b508a0b
--- /dev/null
+++ b/docs/public/images/blog/turbo-0-4-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-1-0/turborepo-weekly-npm-downloads.png b/docs/public/images/blog/turbo-1-1-0/turborepo-weekly-npm-downloads.png
new file mode 100644
index 0000000..d4337eb
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-1-0/turborepo-weekly-npm-downloads.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-1-0/twitter-card.png b/docs/public/images/blog/turbo-1-1-0/twitter-card.png
new file mode 100644
index 0000000..fe158d8
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-1-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-2-0/turbo-dry-run.png b/docs/public/images/blog/turbo-1-2-0/turbo-dry-run.png
new file mode 100644
index 0000000..609e3d1
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-2-0/turbo-dry-run.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-2-0/twitter-card.png b/docs/public/images/blog/turbo-1-2-0/twitter-card.png
new file mode 100644
index 0000000..b75a07f
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-2-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-3-0/twitter-card.png b/docs/public/images/blog/turbo-1-3-0/twitter-card.png
new file mode 100644
index 0000000..6483924
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-3-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-4-0/twitter-card.png b/docs/public/images/blog/turbo-1-4-0/twitter-card.png
new file mode 100644
index 0000000..40a021e
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-4-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-5-0/twitter-card.png b/docs/public/images/blog/turbo-1-5-0/twitter-card.png
new file mode 100644
index 0000000..9b88a42
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-5-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-6-0/twitter-card.png b/docs/public/images/blog/turbo-1-6-0/twitter-card.png
new file mode 100644
index 0000000..9341976
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-6-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-7-0/turbo-inference.png b/docs/public/images/blog/turbo-1-7-0/turbo-inference.png
new file mode 100644
index 0000000..0550736
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-7-0/turbo-inference.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-7-0/twitter-card.png b/docs/public/images/blog/turbo-1-7-0/twitter-card.png
new file mode 100644
index 0000000..c0f6e7a
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-7-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-8-0/twitter-card.png b/docs/public/images/blog/turbo-1-8-0/twitter-card.png
new file mode 100644
index 0000000..e4071b3
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-8-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbo-1-9-0/twitter-card.png b/docs/public/images/blog/turbo-1-9-0/twitter-card.png
new file mode 100644
index 0000000..12e1752
--- /dev/null
+++ b/docs/public/images/blog/turbo-1-9-0/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_dark.svg b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_dark.svg
new file mode 100644
index 0000000..7a6cc04
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_dark.svg
@@ -0,0 +1,202 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="110,617 222,578 364,488 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="110,621 222,600 364,560 929,245 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,623 222,623 364,623 929,621 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,628 222,628 364,628 929,628 "/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="623" x2="929" y2="623"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="617" x2="929" y2="617"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="611" x2="929" y2="611"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="605" x2="929" y2="605"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="599" x2="929" y2="599"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="593" x2="929" y2="593"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="587" x2="929" y2="587"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="581" x2="929" y2="581"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="575" x2="929" y2="575"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="563" x2="929" y2="563"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="557" x2="929" y2="557"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="551" x2="929" y2="551"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="545" x2="929" y2="545"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="539" x2="929" y2="539"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="533" x2="929" y2="533"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="527" x2="929" y2="527"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="521" x2="929" y2="521"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="515" x2="929" y2="515"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="503" x2="929" y2="503"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="497" x2="929" y2="497"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="491" x2="929" y2="491"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="485" x2="929" y2="485"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="479" x2="929" y2="479"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="473" x2="929" y2="473"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="467" x2="929" y2="467"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="461" x2="929" y2="461"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="455" x2="929" y2="455"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="443" x2="929" y2="443"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="437" x2="929" y2="437"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="431" x2="929" y2="431"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="425" x2="929" y2="425"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="419" x2="929" y2="419"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="413" x2="929" y2="413"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="407" x2="929" y2="407"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="401" x2="929" y2="401"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="395" x2="929" y2="395"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="383" x2="929" y2="383"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="377" x2="929" y2="377"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="371" x2="929" y2="371"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="365" x2="929" y2="365"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="359" x2="929" y2="359"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="353" x2="929" y2="353"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="347" x2="929" y2="347"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="341" x2="929" y2="341"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="335" x2="929" y2="335"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="323" x2="929" y2="323"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="317" x2="929" y2="317"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="311" x2="929" y2="311"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="305" x2="929" y2="305"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="299" x2="929" y2="299"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="293" x2="929" y2="293"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="281" x2="929" y2="281"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="275" x2="929" y2="275"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="263" x2="929" y2="263"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="257" x2="929" y2="257"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="251" x2="929" y2="251"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="245" x2="929" y2="245"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="239" x2="929" y2="239"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="233" x2="929" y2="233"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="227" x2="929" y2="227"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="221" x2="929" y2="221"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="215" x2="929" y2="215"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="203" x2="929" y2="203"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="197" x2="929" y2="197"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="191" x2="929" y2="191"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="185" x2="929" y2="185"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="179" x2="929" y2="179"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="173" x2="929" y2="173"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="167" x2="929" y2="167"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="161" x2="929" y2="161"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="155" x2="929" y2="155"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="143" x2="929" y2="143"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="137" x2="929" y2="137"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="131" x2="929" y2="131"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="125" x2="929" y2="125"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="119" x2="929" y2="119"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="113" x2="929" y2="113"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="107" x2="929" y2="107"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="101" x2="929" y2="101"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="95" x2="929" y2="95"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="83" x2="929" y2="83"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="77" x2="929" y2="77"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="71" x2="929" y2="71"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="59" x2="929" y2="59"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="53" x2="929" y2="53"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="47" x2="929" y2="47"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="41" x2="929" y2="41"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="35" x2="929" y2="35"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+0s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="569" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+1s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,569 109,569 "/>
+<text x="100" y="509" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+2s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,509 109,509 "/>
+<text x="100" y="449" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+3s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,449 109,449 "/>
+<text x="100" y="389" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+4s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,389 109,389 "/>
+<text x="100" y="329" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+5s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,329 109,329 "/>
+<text x="100" y="269" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+6s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,269 109,269 "/>
+<text x="100" y="209" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+7s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,209 109,209 "/>
+<text x="100" y="149" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+8s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,149 109,149 "/>
+<text x="100" y="89" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+9s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,89 109,89 "/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 929,630 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="364,630 364,635 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="929,630 929,635 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 110,635 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="222,630 222,635 "/>
+<rect x="115" y="35" width="175" height="123" opacity="1" fill="#222222" stroke="none"/>
+<rect x="115" y="35" width="175" height="123" opacity="0.2" fill="none" stroke="#FFFFFF"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Next.js 11 SSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Next.js 12 SSR
+</text>
+<text x="161" y="101" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Vite SWC CSR
+</text>
+<text x="161" y="126" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="131,84 151,84 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,109 151,109 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,134 151,134 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_light.svg b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_light.svg
new file mode 100644
index 0000000..c0d4ec7
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_light.svg
@@ -0,0 +1,202 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="110,617 222,578 364,488 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="110,621 222,600 364,560 929,245 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,623 222,623 364,623 929,621 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,628 222,628 364,628 929,628 "/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="623" x2="929" y2="623"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="617" x2="929" y2="617"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="611" x2="929" y2="611"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="605" x2="929" y2="605"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="599" x2="929" y2="599"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="593" x2="929" y2="593"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="587" x2="929" y2="587"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="581" x2="929" y2="581"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="575" x2="929" y2="575"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="563" x2="929" y2="563"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="557" x2="929" y2="557"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="551" x2="929" y2="551"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="545" x2="929" y2="545"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="539" x2="929" y2="539"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="533" x2="929" y2="533"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="527" x2="929" y2="527"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="521" x2="929" y2="521"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="515" x2="929" y2="515"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="503" x2="929" y2="503"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="497" x2="929" y2="497"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="491" x2="929" y2="491"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="485" x2="929" y2="485"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="479" x2="929" y2="479"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="473" x2="929" y2="473"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="467" x2="929" y2="467"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="461" x2="929" y2="461"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="455" x2="929" y2="455"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="443" x2="929" y2="443"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="437" x2="929" y2="437"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="431" x2="929" y2="431"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="425" x2="929" y2="425"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="419" x2="929" y2="419"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="413" x2="929" y2="413"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="407" x2="929" y2="407"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="401" x2="929" y2="401"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="395" x2="929" y2="395"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="383" x2="929" y2="383"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="377" x2="929" y2="377"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="371" x2="929" y2="371"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="365" x2="929" y2="365"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="359" x2="929" y2="359"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="353" x2="929" y2="353"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="347" x2="929" y2="347"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="341" x2="929" y2="341"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="335" x2="929" y2="335"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="323" x2="929" y2="323"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="317" x2="929" y2="317"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="311" x2="929" y2="311"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="305" x2="929" y2="305"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="299" x2="929" y2="299"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="293" x2="929" y2="293"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="281" x2="929" y2="281"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="275" x2="929" y2="275"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="263" x2="929" y2="263"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="257" x2="929" y2="257"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="251" x2="929" y2="251"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="245" x2="929" y2="245"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="239" x2="929" y2="239"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="233" x2="929" y2="233"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="227" x2="929" y2="227"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="221" x2="929" y2="221"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="215" x2="929" y2="215"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="203" x2="929" y2="203"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="197" x2="929" y2="197"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="191" x2="929" y2="191"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="185" x2="929" y2="185"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="179" x2="929" y2="179"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="173" x2="929" y2="173"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="167" x2="929" y2="167"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="161" x2="929" y2="161"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="155" x2="929" y2="155"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="143" x2="929" y2="143"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="137" x2="929" y2="137"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="131" x2="929" y2="131"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="125" x2="929" y2="125"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="119" x2="929" y2="119"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="113" x2="929" y2="113"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="107" x2="929" y2="107"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="101" x2="929" y2="101"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="95" x2="929" y2="95"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="83" x2="929" y2="83"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="77" x2="929" y2="77"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="71" x2="929" y2="71"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="59" x2="929" y2="59"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="53" x2="929" y2="53"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="47" x2="929" y2="47"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="41" x2="929" y2="41"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="35" x2="929" y2="35"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+0s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="569" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+1s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,569 109,569 "/>
+<text x="100" y="509" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+2s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,509 109,509 "/>
+<text x="100" y="449" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+3s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,449 109,449 "/>
+<text x="100" y="389" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+4s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,389 109,389 "/>
+<text x="100" y="329" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+5s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,329 109,329 "/>
+<text x="100" y="269" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+6s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,269 109,269 "/>
+<text x="100" y="209" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+7s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,209 109,209 "/>
+<text x="100" y="149" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+8s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,149 109,149 "/>
+<text x="100" y="89" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+9s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,89 109,89 "/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 929,630 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="222,630 222,635 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="929,630 929,635 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="364,630 364,635 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 110,635 "/>
+<rect x="115" y="35" width="175" height="123" opacity="1" fill="#FFFFFF" stroke="none"/>
+<rect x="115" y="35" width="175" height="123" opacity="0.2" fill="none" stroke="#000000"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Next.js 11 SSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Next.js 12 SSR
+</text>
+<text x="161" y="101" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Vite SWC CSR
+</text>
+<text x="161" y="126" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="131,84 151,84 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,109 151,109 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,134 151,134 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_dark.svg b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_dark.svg
new file mode 100644
index 0000000..d033bc4
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_dark.svg
@@ -0,0 +1,147 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,181 222,160 364,146 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,549 222,528 364,531 929,533 "/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="621" x2="929" y2="621"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="612" x2="929" y2="612"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="604" x2="929" y2="604"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="595" x2="929" y2="595"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="587" x2="929" y2="587"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="578" x2="929" y2="578"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="570" x2="929" y2="570"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="561" x2="929" y2="561"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="552" x2="929" y2="552"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="544" x2="929" y2="544"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="535" x2="929" y2="535"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="527" x2="929" y2="527"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="518" x2="929" y2="518"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="510" x2="929" y2="510"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="501" x2="929" y2="501"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="493" x2="929" y2="493"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="484" x2="929" y2="484"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="475" x2="929" y2="475"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="467" x2="929" y2="467"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="458" x2="929" y2="458"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="450" x2="929" y2="450"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="441" x2="929" y2="441"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="433" x2="929" y2="433"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="424" x2="929" y2="424"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="415" x2="929" y2="415"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="407" x2="929" y2="407"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="398" x2="929" y2="398"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="390" x2="929" y2="390"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="381" x2="929" y2="381"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="373" x2="929" y2="373"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="364" x2="929" y2="364"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="356" x2="929" y2="356"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="347" x2="929" y2="347"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="338" x2="929" y2="338"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="330" x2="929" y2="330"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="321" x2="929" y2="321"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="313" x2="929" y2="313"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="304" x2="929" y2="304"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="296" x2="929" y2="296"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="279" x2="929" y2="279"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="270" x2="929" y2="270"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="261" x2="929" y2="261"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="253" x2="929" y2="253"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="244" x2="929" y2="244"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="236" x2="929" y2="236"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="227" x2="929" y2="227"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="219" x2="929" y2="219"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="210" x2="929" y2="210"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="201" x2="929" y2="201"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="193" x2="929" y2="193"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="184" x2="929" y2="184"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="176" x2="929" y2="176"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="167" x2="929" y2="167"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="159" x2="929" y2="159"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="150" x2="929" y2="150"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="142" x2="929" y2="142"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="133" x2="929" y2="133"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="124" x2="929" y2="124"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="116" x2="929" y2="116"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="107" x2="929" y2="107"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="99" x2="929" y2="99"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="90" x2="929" y2="90"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="82" x2="929" y2="82"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="73" x2="929" y2="73"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="56" x2="929" y2="56"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="47" x2="929" y2="47"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="39" x2="929" y2="39"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="544" x2="929" y2="544"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="458" x2="929" y2="458"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="373" x2="929" y2="373"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="201" x2="929" y2="201"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="116" x2="929" y2="116"/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+0ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="544" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+20ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,544 109,544 "/>
+<text x="100" y="458" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+40ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,458 109,458 "/>
+<text x="100" y="373" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+60ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,373 109,373 "/>
+<text x="100" y="287" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+80ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,287 109,287 "/>
+<text x="100" y="201" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+100ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,201 109,201 "/>
+<text x="100" y="116" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+120ms
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,116 109,116 "/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 929,630 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="929,630 929,635 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="364,630 364,635 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="222,630 222,635 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 110,635 "/>
+<rect x="115" y="35" width="175" height="73" opacity="1" fill="#222222" stroke="none"/>
+<rect x="115" y="35" width="175" height="73" opacity="0.2" fill="none" stroke="#FFFFFF"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Vite SWC CSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,84 151,84 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_light.svg b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_light.svg
new file mode 100644
index 0000000..c61665d
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_hmr_to_commit_turbopack_vite_light.svg
@@ -0,0 +1,147 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,181 222,160 364,146 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,549 222,528 364,531 929,533 "/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="621" x2="929" y2="621"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="612" x2="929" y2="612"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="604" x2="929" y2="604"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="595" x2="929" y2="595"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="587" x2="929" y2="587"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="578" x2="929" y2="578"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="570" x2="929" y2="570"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="561" x2="929" y2="561"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="552" x2="929" y2="552"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="544" x2="929" y2="544"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="535" x2="929" y2="535"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="527" x2="929" y2="527"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="518" x2="929" y2="518"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="510" x2="929" y2="510"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="501" x2="929" y2="501"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="493" x2="929" y2="493"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="484" x2="929" y2="484"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="475" x2="929" y2="475"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="467" x2="929" y2="467"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="458" x2="929" y2="458"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="450" x2="929" y2="450"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="441" x2="929" y2="441"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="433" x2="929" y2="433"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="424" x2="929" y2="424"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="415" x2="929" y2="415"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="407" x2="929" y2="407"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="398" x2="929" y2="398"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="390" x2="929" y2="390"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="381" x2="929" y2="381"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="373" x2="929" y2="373"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="364" x2="929" y2="364"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="356" x2="929" y2="356"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="347" x2="929" y2="347"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="338" x2="929" y2="338"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="330" x2="929" y2="330"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="321" x2="929" y2="321"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="313" x2="929" y2="313"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="304" x2="929" y2="304"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="296" x2="929" y2="296"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="279" x2="929" y2="279"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="270" x2="929" y2="270"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="261" x2="929" y2="261"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="253" x2="929" y2="253"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="244" x2="929" y2="244"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="236" x2="929" y2="236"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="227" x2="929" y2="227"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="219" x2="929" y2="219"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="210" x2="929" y2="210"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="201" x2="929" y2="201"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="193" x2="929" y2="193"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="184" x2="929" y2="184"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="176" x2="929" y2="176"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="167" x2="929" y2="167"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="159" x2="929" y2="159"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="150" x2="929" y2="150"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="142" x2="929" y2="142"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="133" x2="929" y2="133"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="124" x2="929" y2="124"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="116" x2="929" y2="116"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="107" x2="929" y2="107"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="99" x2="929" y2="99"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="90" x2="929" y2="90"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="82" x2="929" y2="82"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="73" x2="929" y2="73"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="56" x2="929" y2="56"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="47" x2="929" y2="47"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="39" x2="929" y2="39"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="544" x2="929" y2="544"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="458" x2="929" y2="458"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="373" x2="929" y2="373"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="287" x2="929" y2="287"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="201" x2="929" y2="201"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="116" x2="929" y2="116"/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+0ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="544" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+20ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,544 109,544 "/>
+<text x="100" y="458" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+40ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,458 109,458 "/>
+<text x="100" y="373" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+60ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,373 109,373 "/>
+<text x="100" y="287" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+80ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,287 109,287 "/>
+<text x="100" y="201" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+100ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,201 109,201 "/>
+<text x="100" y="116" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+120ms
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,116 109,116 "/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 929,630 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="929,630 929,635 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="222,630 222,635 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="364,630 364,635 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 110,635 "/>
+<rect x="115" y="35" width="175" height="73" opacity="1" fill="#FFFFFF" stroke="none"/>
+<rect x="115" y="35" width="175" height="73" opacity="0.2" fill="none" stroke="#000000"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Vite SWC CSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,84 151,84 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_startup_dark.svg b/docs/public/images/blog/turbopack-benchmarks/bench_startup_dark.svg
new file mode 100644
index 0000000..886d46e
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_startup_dark.svg
@@ -0,0 +1,127 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="110,607 222,551 364,457 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="110,621 222,600 364,574 929,416 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,619 222,590 364,552 929,395 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,626 222,620 364,612 929,577 "/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="617" x2="929" y2="617"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="605" x2="929" y2="605"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="593" x2="929" y2="593"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="581" x2="929" y2="581"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="557" x2="929" y2="557"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="545" x2="929" y2="545"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="533" x2="929" y2="533"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="521" x2="929" y2="521"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="497" x2="929" y2="497"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="485" x2="929" y2="485"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="473" x2="929" y2="473"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="461" x2="929" y2="461"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="437" x2="929" y2="437"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="425" x2="929" y2="425"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="413" x2="929" y2="413"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="401" x2="929" y2="401"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="377" x2="929" y2="377"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="365" x2="929" y2="365"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="353" x2="929" y2="353"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="341" x2="929" y2="341"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="317" x2="929" y2="317"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="305" x2="929" y2="305"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="293" x2="929" y2="293"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="281" x2="929" y2="281"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="257" x2="929" y2="257"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="245" x2="929" y2="245"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="233" x2="929" y2="233"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="221" x2="929" y2="221"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="197" x2="929" y2="197"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="185" x2="929" y2="185"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="173" x2="929" y2="173"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="161" x2="929" y2="161"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="137" x2="929" y2="137"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="125" x2="929" y2="125"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="113" x2="929" y2="113"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="101" x2="929" y2="101"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="77" x2="929" y2="77"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="53" x2="929" y2="53"/>
+<line opacity="0.1" stroke="#FFFFFF" stroke-width="1" x1="110" y1="41" x2="929" y2="41"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#FFFFFF">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.2" stroke="#FFFFFF" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+0s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="509" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+50s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,509 109,509 "/>
+<text x="100" y="389" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+100s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,389 109,389 "/>
+<text x="100" y="269" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+150s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,269 109,269 "/>
+<text x="100" y="149" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+200s
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="104,149 109,149 "/>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 929,630 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="929,630 929,635 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="364,630 364,635 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="222,630 222,635 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#FFFFFF">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#FFFFFF" stroke-width="1" points="110,630 110,635 "/>
+<rect x="115" y="35" width="175" height="123" opacity="1" fill="#222222" stroke="none"/>
+<rect x="115" y="35" width="175" height="123" opacity="0.2" fill="none" stroke="#FFFFFF"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Next.js 11 SSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Next.js 12 SSR
+</text>
+<text x="161" y="101" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Vite SWC CSR
+</text>
+<text x="161" y="126" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#FFFFFF">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="131,84 151,84 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,109 151,109 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,134 151,134 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/bench_startup_light.svg b/docs/public/images/blog/turbopack-benchmarks/bench_startup_light.svg
new file mode 100644
index 0000000..7f3bc8b
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/bench_startup_light.svg
@@ -0,0 +1,127 @@
+<svg width="960" height="720" viewBox="0 0 960 720" xmlns="http://www.w3.org/2000/svg">
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="110,607 222,551 364,457 929,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="110,621 222,600 364,574 929,416 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="110,619 222,590 364,552 929,395 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="110,626 222,620 364,612 929,577 "/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="617" x2="929" y2="617"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="605" x2="929" y2="605"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="593" x2="929" y2="593"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="581" x2="929" y2="581"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="569" x2="929" y2="569"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="557" x2="929" y2="557"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="545" x2="929" y2="545"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="533" x2="929" y2="533"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="521" x2="929" y2="521"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="497" x2="929" y2="497"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="485" x2="929" y2="485"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="473" x2="929" y2="473"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="461" x2="929" y2="461"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="449" x2="929" y2="449"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="437" x2="929" y2="437"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="425" x2="929" y2="425"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="413" x2="929" y2="413"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="401" x2="929" y2="401"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="377" x2="929" y2="377"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="365" x2="929" y2="365"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="353" x2="929" y2="353"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="341" x2="929" y2="341"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="329" x2="929" y2="329"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="317" x2="929" y2="317"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="305" x2="929" y2="305"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="293" x2="929" y2="293"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="281" x2="929" y2="281"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="257" x2="929" y2="257"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="245" x2="929" y2="245"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="233" x2="929" y2="233"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="221" x2="929" y2="221"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="209" x2="929" y2="209"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="197" x2="929" y2="197"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="185" x2="929" y2="185"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="173" x2="929" y2="173"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="161" x2="929" y2="161"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="137" x2="929" y2="137"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="125" x2="929" y2="125"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="113" x2="929" y2="113"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="101" x2="929" y2="101"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="89" x2="929" y2="89"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="77" x2="929" y2="77"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="65" x2="929" y2="65"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="53" x2="929" y2="53"/>
+<line opacity="0.1" stroke="#000000" stroke-width="1" x1="110" y1="41" x2="929" y2="41"/>
+<text x="30" y="330" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000" transform="rotate(270, 30, 330)">
+Mean time — lower is better
+</text>
+<text x="520" y="690" dy="-0.5ex" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="19.35483870967742" opacity="1" fill="#000000">
+Number of modules
+</text>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="110" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="929" y1="629" x2="929" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="222" y1="629" x2="222" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="364" y1="629" x2="364" y2="30"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="629" x2="929" y2="629"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="509" x2="929" y2="509"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="389" x2="929" y2="389"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="269" x2="929" y2="269"/>
+<line opacity="0.2" stroke="#000000" stroke-width="1" x1="110" y1="149" x2="929" y2="149"/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="109,30 109,629 "/>
+<text x="100" y="629" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+0s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,629 109,629 "/>
+<text x="100" y="509" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+50s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,509 109,509 "/>
+<text x="100" y="389" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+100s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,389 109,389 "/>
+<text x="100" y="269" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+150s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,269 109,269 "/>
+<text x="100" y="149" dy="0.5ex" text-anchor="end" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+200s
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="104,149 109,149 "/>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 929,630 "/>
+<text x="110" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+1,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="110,630 110,635 "/>
+<text x="929" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+30,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="929,630 929,635 "/>
+<text x="222" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+5,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="222,630 222,635 "/>
+<text x="364" y="640" dy="0.76em" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="0.75" fill="#000000">
+10,000
+</text>
+<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="364,630 364,635 "/>
+<rect x="115" y="35" width="175" height="123" opacity="1" fill="#FFFFFF" stroke="none"/>
+<rect x="115" y="35" width="175" height="123" opacity="0.2" fill="none" stroke="#000000"/>
+<text x="161" y="51" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Next.js 11 SSR
+</text>
+<text x="161" y="76" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Next.js 12 SSR
+</text>
+<text x="161" y="101" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Vite SWC CSR
+</text>
+<text x="161" y="126" dy="0.76em" text-anchor="start" font-family="ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, &quot;Helvetica Neue&quot;, Arial, &quot;Noto Sans&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;" font-size="16.129032258064516" opacity="1" fill="#000000">
+Turbopack SSR
+</text>
+<polyline fill="none" opacity="1" stroke="#2196F3" stroke-width="4" points="131,59 151,59 "/>
+<polyline fill="none" opacity="1" stroke="#00BCD4" stroke-width="4" points="131,84 151,84 "/>
+<polyline fill="none" opacity="1" stroke="#4CAF50" stroke-width="4" points="131,109 151,109 "/>
+<polyline fill="none" opacity="1" stroke="#F44336" stroke-width="4" points="131,134 151,134 "/>
+</svg>
diff --git a/docs/public/images/blog/turbopack-benchmarks/triangle-dark.png b/docs/public/images/blog/turbopack-benchmarks/triangle-dark.png
new file mode 100644
index 0000000..d600927
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/triangle-dark.png
Binary files differ
diff --git a/docs/public/images/blog/turbopack-benchmarks/triangle-light.png b/docs/public/images/blog/turbopack-benchmarks/triangle-light.png
new file mode 100644
index 0000000..f9d021b
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/triangle-light.png
Binary files differ
diff --git a/docs/public/images/blog/turbopack-benchmarks/twitter-card.png b/docs/public/images/blog/turbopack-benchmarks/twitter-card.png
new file mode 100644
index 0000000..ed6c2d1
--- /dev/null
+++ b/docs/public/images/blog/turbopack-benchmarks/twitter-card.png
Binary files differ
diff --git a/docs/public/images/blog/you-might-not-need-typescript-project-references/twitter-card.png b/docs/public/images/blog/you-might-not-need-typescript-project-references/twitter-card.png
new file mode 100644
index 0000000..7f8759e
--- /dev/null
+++ b/docs/public/images/blog/you-might-not-need-typescript-project-references/twitter-card.png
Binary files differ