Skip to content

Simplify build process #4790

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Simplify build process #4790

wants to merge 1 commit into from

Conversation

JoviDeCroock
Copy link
Member

Summary

This PR replaces the existing microbundle build system with a custom build pipeline using ESBuild, Babel, and Terser. The main goal here is to improve performance as we stopped supporting ES5 and IE11 features in the v11 release.

Changes

🚀 New Build System (build.mjs)

  • ESBuild: Similar to vitest, fast bunlding
  • Babel: We sadly still need this for property renaming, one of the goals for both vitest and this would be to remove this eventually
  • Terser: Minification with the same configuration as before
  • Multi-format output: CommonJS (.js), ES Modules (.mjs), and UMD (.umd.js)

Build time: ~2.3 seconds (down from > 10s)

I hope this doesn't change size semantics and I still need to evaluate which files should stay.

@JoviDeCroock JoviDeCroock force-pushed the simplify-build branch 2 times, most recently from 049b05b to 5c8b629 Compare June 7, 2025 06:34
Copy link

github-actions bot commented Jun 7, 2025

📊 Tachometer Benchmark Results

Summary

⏳ Benchmarks are currently running. Results below are out of date.

duration

  • create10k: slower ❌ 1% - 1% (5.26ms - 12.51ms)
    preact-local vs preact-main
  • filter-list: unsure 🔍 -2% - +1% (-0.25ms - +0.13ms)
    preact-local vs preact-main
  • hydrate1k: slower ❌ 13% - 17% (8.87ms - 11.86ms)
    preact-local vs preact-main
  • many-updates: faster ✔ 5% - 10% (0.89ms - 1.68ms)
    preact-local vs preact-main
  • replace1k: slower ❌ 23% - 26% (14.35ms - 15.85ms)
    preact-local vs preact-main
  • text-update: unsure 🔍 -5% - +2% (-0.10ms - +0.05ms)
    preact-local vs preact-main
  • todo: slower ❌ 7% - 12% (2.35ms - 3.94ms)
    preact-local vs preact-main
  • update10th1k: slower ❌ 4% - 9% (1.14ms - 2.52ms)
    preact-local vs preact-main

usedJSHeapSize

  • create10k: faster ✔ 1% - 1% (0.10ms - 0.10ms)
    preact-local vs preact-main
  • filter-list: faster ✔ 8% - 9% (0.13ms - 0.13ms)
    preact-local vs preact-main
  • hydrate1k: slower ❌ 13% - 28% (1.02ms - 2.15ms)
    preact-local vs preact-main
  • many-updates: faster ✔ 3% - 3% (0.12ms - 0.13ms)
    preact-local vs preact-main
  • replace1k: faster ✔ 4% - 4% (0.11ms - 0.13ms)
    preact-local vs preact-main
  • text-update: faster ✔ 8% - 12% (0.09ms - 0.14ms)
    preact-local vs preact-main
  • todo: faster ✔ 10% - 11% (0.13ms - 0.13ms)
    preact-local vs preact-main
  • update10th1k: faster ✔ 4% - 4% (0.11ms - 0.12ms)
    preact-local vs preact-main

Results

⏳ Benchmarks are currently running. Results below are out of date.
create10k

duration

VersionAvg timevs preact-localvs preact-main
preact-local997.40ms - 1001.62ms-slower ❌
1% - 1%
5.26ms - 12.51ms
preact-main987.68ms - 993.57msfaster ✔
1% - 1%
5.26ms - 12.51ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local19.08ms - 19.08ms-faster ✔
1% - 1%
0.10ms - 0.10ms
preact-main19.18ms - 19.18msslower ❌
1% - 1%
0.10ms - 0.10ms
-
filter-list

duration

VersionAvg timevs preact-localvs preact-main
preact-local16.56ms - 16.61ms-unsure 🔍
-2% - +1%
-0.25ms - +0.13ms
preact-main16.46ms - 16.83msunsure 🔍
-1% - +2%
-0.13ms - +0.25ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local1.40ms - 1.40ms-faster ✔
8% - 9%
0.13ms - 0.13ms
preact-main1.53ms - 1.54msslower ❌
9% - 10%
0.13ms - 0.13ms
-
hydrate1k

duration

VersionAvg timevs preact-localvs preact-main
preact-local78.50ms - 80.30ms-slower ❌
13% - 17%
8.87ms - 11.86ms
preact-main67.85ms - 70.24msfaster ✔
11% - 15%
8.87ms - 11.86ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local8.84ms - 9.79ms-slower ❌
13% - 28%
1.02ms - 2.15ms
preact-main7.43ms - 8.04msfaster ✔
12% - 22%
1.02ms - 2.15ms
-
many-updates

duration

VersionAvg timevs preact-localvs preact-main
preact-local14.73ms - 15.51ms-faster ✔
5% - 10%
0.89ms - 1.68ms
preact-main16.33ms - 16.47msslower ❌
6% - 11%
0.89ms - 1.68ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local3.65ms - 3.65ms-faster ✔
3% - 3%
0.12ms - 0.13ms
preact-main3.77ms - 3.77msslower ❌
3% - 3%
0.12ms - 0.13ms
-
replace1k
  • Browser: chrome-headless
  • Sample size: 100
  • Built by: CI #4749
  • Commit: 5c8b629

duration

VersionAvg timevs preact-localvs preact-main
preact-local76.45ms - 77.30ms-slower ❌
23% - 26%
14.35ms - 15.85ms
preact-main61.16ms - 62.39msfaster ✔
19% - 21%
14.35ms - 15.85ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local2.86ms - 2.88ms-faster ✔
4% - 4%
0.11ms - 0.13ms
preact-main2.99ms - 2.99msslower ❌
4% - 4%
0.11ms - 0.13ms
-

run-warmup-0

VersionAvg timevs preact-localvs preact-main
preact-local25.65ms - 26.35ms-unsure 🔍
-1% - +3%
-0.16ms - +0.84ms
preact-main25.30ms - 26.02msunsure 🔍
-3% - +1%
-0.84ms - +0.16ms
-

run-warmup-1

VersionAvg timevs preact-localvs preact-main
preact-local33.36ms - 34.61ms-unsure 🔍
-1% - +5%
-0.18ms - +1.69ms
preact-main32.53ms - 33.93msunsure 🔍
-5% - +1%
-1.69ms - +0.18ms
-

run-warmup-2

VersionAvg timevs preact-localvs preact-main
preact-local32.13ms - 33.21ms-slower ❌
12% - 18%
3.51ms - 4.95ms
preact-main27.97ms - 28.92msfaster ✔
11% - 15%
3.51ms - 4.95ms
-

run-warmup-3

VersionAvg timevs preact-localvs preact-main
preact-local26.39ms - 27.48ms-slower ❌
0% - 5%
0.02ms - 1.43ms
preact-main25.76ms - 26.66msfaster ✔
0% - 5%
0.02ms - 1.43ms
-

run-warmup-4

VersionAvg timevs preact-localvs preact-main
preact-local20.88ms - 21.29ms-faster ✔
3% - 8%
0.59ms - 1.85ms
preact-main21.71ms - 22.90msslower ❌
3% - 9%
0.59ms - 1.85ms
-

run-final

VersionAvg timevs preact-localvs preact-main
preact-local24.27ms - 24.72ms-slower ❌
16% - 21%
3.42ms - 4.34ms
preact-main20.21ms - 21.02msfaster ✔
14% - 18%
3.42ms - 4.34ms
-
text-update
  • Browser: chrome-headless
  • Sample size: 190
  • Built by: CI #4749
  • Commit: 5c8b629

duration

VersionAvg timevs preact-localvs preact-main
preact-local2.05ms - 2.13ms-unsure 🔍
-5% - +2%
-0.10ms - +0.05ms
preact-main2.06ms - 2.18msunsure 🔍
-2% - +5%
-0.05ms - +0.10ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local1.04ms - 1.07ms-faster ✔
8% - 12%
0.09ms - 0.14ms
preact-main1.15ms - 1.19msslower ❌
8% - 13%
0.09ms - 0.14ms
-
todo

duration

VersionAvg timevs preact-localvs preact-main
preact-local34.76ms - 36.34ms-slower ❌
7% - 12%
2.35ms - 3.94ms
preact-main32.29ms - 32.53msfaster ✔
7% - 11%
2.35ms - 3.94ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local1.11ms - 1.11ms-faster ✔
10% - 11%
0.13ms - 0.13ms
preact-main1.24ms - 1.24msslower ❌
12% - 12%
0.13ms - 0.13ms
-
update10th1k
  • Browser: chrome-headless
  • Sample size: 140
  • Built by: CI #4749
  • Commit: 5c8b629

duration

VersionAvg timevs preact-localvs preact-main
preact-local29.39ms - 30.45ms-slower ❌
4% - 9%
1.14ms - 2.52ms
preact-main27.64ms - 28.54msfaster ✔
4% - 8%
1.14ms - 2.52ms
-

usedJSHeapSize

VersionAvg timevs preact-localvs preact-main
preact-local2.82ms - 2.83ms-faster ✔
4% - 4%
0.11ms - 0.12ms
preact-main2.94ms - 2.94msslower ❌
4% - 4%
0.11ms - 0.12ms
-

tachometer-reporter-action v2 for CI

Copy link

github-actions bot commented Jun 7, 2025

Size Change: +4.65 kB (+7.26%) 🔍

Total Size: 68.7 kB

Filename Size Change
compat/dist/compat.js 4.48 kB +704 B (+18.63%) ⚠️
compat/dist/compat.mjs 3.69 kB +1 B (+0.03%)
compat/dist/compat.umd.js 4.08 kB +244 B (+6.37%) 🔍
debug/dist/debug.js 4.35 kB +497 B (+12.9%) ⚠️
debug/dist/debug.mjs 3.79 kB -60 B (-1.56%)
debug/dist/debug.umd.js 4.12 kB +184 B (+4.67%) 🔍
devtools/dist/devtools.js 565 B +305 B (+117.31%) 🆘
devtools/dist/devtools.mjs 254 B -17 B (-6.27%)
devtools/dist/devtools.umd.js 590 B +244 B (+70.52%) 🆘
dist/preact.js 5.34 kB +692 B (+14.89%) ⚠️
dist/preact.mjs 4.54 kB -121 B (-2.59%)
dist/preact.umd.js 4.85 kB +131 B (+2.77%)
hooks/dist/hooks.js 2.14 kB +624 B (+41.16%) 🚨
hooks/dist/hooks.mjs 1.48 kB -56 B (-3.64%)
hooks/dist/hooks.umd.js 1.86 kB +273 B (+17.25%) ⚠️
jsx-runtime/dist/jsxRuntime.js 1.16 kB +295 B (+34.26%) 🚨
jsx-runtime/dist/jsxRuntime.mjs 798 B -32 B (-3.86%)
jsx-runtime/dist/jsxRuntime.umd.js 1.13 kB +192 B (+20.56%) 🚨
test-utils/dist/testUtils.js 787 B +314 B (+66.38%) 🆘
test-utils/dist/testUtils.mjs 455 B -18 B (-3.81%)
test-utils/dist/testUtils.umd.js 809 B +254 B (+45.77%) 🚨
ℹ️ View Unchanged
Filename Size
compat/dist/compat.min.js 4.08 kB
debug/dist/debug.min.js 4.12 kB
devtools/dist/devtools.min.js 590 B
dist/preact.min.js 4.85 kB
hooks/dist/hooks.min.js 1.86 kB
jsx-runtime/dist/jsxRuntime.min.js 1.13 kB
test-utils/dist/testUtils.min.js 809 B

compressed-size-action

@JoviDeCroock JoviDeCroock force-pushed the simplify-build branch 7 times, most recently from 64a64ce to ed1378f Compare June 7, 2025 07:52
@JoviDeCroock JoviDeCroock marked this pull request as draft June 7, 2025 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant