Skip to content

fix(bundler): export *에서 default export 제외 (ESM 스펙 준수)#457

Merged
ohah merged 1 commit intomainfrom
fix/bundler-export-star-exclude-default
Mar 27, 2026
Merged

fix(bundler): export *에서 default export 제외 (ESM 스펙 준수)#457
ohah merged 1 commit intomainfrom
fix/bundler-export-star-exclude-default

Conversation

@ohah
Copy link
Copy Markdown
Owner

@ohah ohah commented Mar 27, 2026

Summary

ECMAScript 15.2.3.5 — export *default를 제외해야 함.

Changes

  • collectExportsRecursive에서 export * 재귀 진입 전에 seen에 "default" 추가
  • 직접 선언된 export { default }는 영향 없음 (첫 루프에서 이미 수집)

Comparison (date-fns)

번들러 exports hasDefault
ZTS (before) 251 true
ZTS (after) 250 false
esbuild 250 false
rolldown 250 false

Test plan

  • 유닛 테스트 전체 통과
  • date-fns 250개 (esbuild/rolldown 동일)
  • graphql 215, mobx 68, neverthrow 13 — 모두 esbuild 일치

🤖 Generated with Claude Code

ECMAScript 15.2.3.5 — export *는 "default"를 제외해야 함.
collectExportsRecursive에서 export * 재귀 진입 전에 seen에 "default" 추가.
직접 선언된 export { default }는 영향 없음 (첫 루프에서 이미 수집).

- date-fns 251→250 (esbuild/rolldown 동일)
- graphql, mobx, neverthrow 등 이미 일치 확인

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ohah ohah added the bug Something isn't working label Mar 27, 2026
@ohah ohah self-assigned this Mar 27, 2026
@ohah ohah merged commit cf5de14 into main Mar 27, 2026
12 of 13 checks passed
@github-actions
Copy link
Copy Markdown

Benchmark Results (CI)

macos-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 2 2 3 1.0x
esbuild 4 4 5 2.0x
Bun 7 7 7 3.5x
oxc (node) 66 59 75 33.0x
SWC 122 110 128 61.0x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 4 3 4 1.0x
esbuild 5 4 5 1.3x
Bun 7 6 8 1.8x
oxc (node) 66 61 69 16.5x
SWC 121 114 131 30.3x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 4 4 4 1.0x
ZTS 8 8 8 2.0x
Bun 9 8 10 2.3x
oxc (node) 64 60 68 16.0x
SWC 122 118 127 30.5x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 2 2 2 1.0x
esbuild 6 6 7 3.0x
Bun 6 5 6 3.0x
rspack 191 109 394 95.5x
rolldown 194 107 301 97.0x
webpack 392 382 404 196.0x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 5 4 5 1.0x
Bun 7 7 7 1.4x
esbuild 8 8 9 1.6x
rspack 126 123 131 25.2x
rolldown 223 117 354 44.6x
webpack 383 373 400 76.6x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 10 10 11 1.0x
ZTS 13 12 16 1.3x
esbuild 17 13 20 1.7x
rolldown 132 106 228 13.2x

ubuntu-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 1 1 2 1.0x
esbuild 2 2 3 2.0x
Bun 3 3 3 3.0x
oxc (node) 31 29 32 31.0x
SWC 95 93 99 95.0x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 2 2 2 1.0x
ZTS 4 4 4 2.0x
Bun 4 4 5 2.0x
oxc (node) 29 29 29 14.5x
SWC 99 95 105 49.5x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
esbuild 2 2 2 1.0x
Bun 11 11 12 5.5x
ZTS 16 15 16 8.0x
oxc (node) 31 30 31 15.5x
SWC 119 117 122 59.5x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 2 2 2 1.0x
Bun 5 5 5 2.5x
esbuild 6 6 6 3.0x
rolldown 116 111 123 58.0x
rspack 116 115 117 58.0x
webpack 527 519 533 263.5x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 6 5 6 1.0x
ZTS 7 7 7 1.2x
esbuild 8 8 8 1.3x
rolldown 118 113 122 19.7x
rspack 122 121 123 20.3x
webpack 532 528 538 88.7x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 10 10 10 1.0x
esbuild 16 15 17 1.6x
ZTS 39 37 39 3.9x
rolldown 127 121 131 12.7x

windows-latest

transpile — small (100 lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 8 7 8 1.0x
Bun 17 16 18 2.1x
oxc (node) 62 61 64 7.8x

transpile — medium (1K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 10 9 10 1.0x
Bun 17 16 18 1.7x
oxc (node) 60 58 62 6.0x

transpile — large (5K lines)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 16 16 17 1.0x
ZTS 20 20 20 1.3x
oxc (node) 59 59 60 3.7x

bundle — small (10 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 10 10 10 1.0x
Bun 30 29 30 3.0x

bundle — medium (50 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
ZTS 24 24 24 1.0x
Bun 32 32 33 1.3x

bundle — large (200 modules)

Tool Avg (ms) Min (ms) Max (ms) vs fastest
Bun 44 42 46 1.0x
ZTS 78 76 80 1.8x

Auto-generated by CI on 2026-03-27 06:25 UTC

@github-actions
Copy link
Copy Markdown

Smoke Test Results (CI)

Smoke Test Results

Project ZTS Size Time esbuild Size Time rolldown Size Time Output
lodash-es OK 51KB 78ms OK 65KB 54ms OK 100KB 384ms MATCH
preact OK 13KB 4ms OK 15KB 7ms OK 13KB 117ms MATCH
date-fns OK 38KB 314ms OK 47KB 36ms OK 78KB 136ms MATCH
uuid OK 2KB 5ms OK 2KB 7ms OK 2KB 111ms MATCH
zod OK 438KB 86ms OK 507KB 29ms OK 90KB 130ms MATCH
axios OK 353KB 49ms FAIL 414KB 26ms OK 377KB 149ms MATCH
toolkit OK 78KB 11ms OK 118KB 17ms OK 38KB 123ms MATCH
rxjs OK 325KB 108ms OK 369KB 36ms OK 309KB 145ms MATCH
immer OK 22KB 5ms OK 26KB 9ms OK 23KB 116ms MATCH
superjson OK 23KB 11ms OK 26KB 10ms OK 24KB 115ms MATCH
express OK 787KB 89ms OK 1129KB 40ms OK 882KB 159ms MATCH
react OK 52KB 5ms OK 64KB 9ms OK 54KB 115ms MATCH
commander OK 70KB 8ms OK 124KB 11ms OK 104KB 121ms MATCH
eventemitter3 OK 6KB 2ms OK 8KB 7ms OK 9KB 104ms MATCH
ms OK 3KB 2ms OK 4KB 6ms OK 4KB 113ms MATCH
dotenv OK 13KB 3ms OK 16KB 7ms OK 13KB 112ms MATCH
jsonwebtoken OK 115KB 28ms OK 139KB 17ms OK 142KB 132ms MATCH
bcryptjs OK 28KB 4ms OK 31KB 7ms OK 37KB 114ms MATCH
clsx OK 1KB 2ms OK 1KB 6ms OK 1KB 111ms MATCH
tiny-invariant OK 0KB 2ms OK 1KB 6ms OK 1KB 108ms MATCH
tanstack-query OK 48KB 10ms OK 57KB 12ms OK 49KB 116ms MATCH
fast-glob OK 164KB 31ms OK 200KB 19ms OK 187KB 135ms MATCH
micromatch OK 81KB 12ms OK 100KB 12ms OK 100KB 126ms MATCH
semver OK 55KB 13ms OK 67KB 11ms OK 52KB 123ms MATCH
debug OK 15KB 4ms OK 20KB 7ms OK 20KB 114ms MATCH
chalk OK 13KB 4ms OK 15KB 7ms OK 14KB 119ms MATCH
yaml OK 209KB 31ms OK 262KB 21ms OK 228KB 138ms MATCH
yargs OK 202KB 23ms FAIL 222KB 18ms OK 202KB 136ms MATCH
effect OK 558KB 466ms OK 477KB 251ms OK 368KB 289ms MATCH
vue OK 1624KB 121ms OK 2008KB 77ms OK 1605KB 254ms MATCH
svelte OK 94KB 23ms OK 5KB 16ms OK 4KB 123ms MATCH
solid-js OK 3KB 3ms OK 2KB 7ms OK 2KB 112ms MATCH
three OK 799KB 79ms OK 414KB 85ms OK 267KB 184ms MATCH
graphql OK 61KB 26ms OK 605KB 34ms OK 547KB 156ms MATCH
supabase OK 334KB 33ms OK 758KB 29ms OK 705KB 150ms MATCH
mobx OK 143KB 12ms OK 271KB 23ms OK 234KB 143ms MATCH
jotai OK 21KB 6ms OK 23KB 8ms OK 20KB 124ms MATCH
valtio OK 7KB 3ms OK 8KB 7ms OK 8KB 118ms MATCH
react-dom OK 530KB 25ms OK 664KB 24ms OK 516KB 152ms MATCH
d3 OK 148KB 130ms OK 99KB 64ms OK 96KB 165ms MATCH
hono OK 45KB 15ms OK 59KB 12ms OK 52KB 123ms MATCH
dayjs OK 11KB 3ms OK 14KB 7ms OK 11KB 111ms MATCH
nanoid OK 1KB 2ms OK 1KB 6ms OK 1KB 111ms MATCH
zlib OK 97KB 11ms OK 112KB 16ms OK 102KB 124ms MATCH
fp-ts OK 18KB 9ms OK 71KB 12ms OK 100KB 127ms MATCH
neverthrow OK 11KB 3ms OK 18KB 7ms OK 13KB 119ms MATCH
drizzle-orm OK 22KB 74ms OK 31KB 21ms OK 26KB 120ms MATCH
tslib FAIL 22KB 4ms OK 1KB 7ms OK 1KB 112ms -
iconv-lite OK 298KB 10ms OK 546KB 13ms OK 321KB 124ms MATCH
qs OK 78KB 23ms OK 95KB 15ms OK 81KB 119ms MATCH
change-case OK 3KB 2ms OK 3KB 6ms OK 3KB 115ms MATCH
path-to-regexp OK 12KB 3ms OK 15KB 7ms OK 9KB 112ms MATCH
mime-types OK 204KB 4ms OK 235KB 14ms OK 198KB 118ms MATCH
ajv OK 208KB 35ms OK 244KB 20ms OK 208KB 139ms MATCH
cac OK 17KB 3ms OK 20KB 7ms OK 19KB 111ms MATCH
defu OK 2KB 2ms OK 2KB 6ms OK 2KB 115ms MATCH
pathe OK 14KB 3ms OK 3KB 7ms OK 3KB 116ms MATCH
destr OK 2KB 2ms OK 2KB 6ms OK 2KB 106ms MATCH
hookable OK 6KB 2ms OK 6KB 6ms OK 5KB 114ms MATCH
minimatch OK 46KB 8ms OK 57KB 12ms OK 47KB 122ms MATCH
cheerio OK 1721KB 173ms OK 2187KB 82ms OK 1748KB 258ms MATCH
is-glob OK 4KB 2ms OK 6KB 6ms OK 5KB 118ms MATCH
glob-parent OK 6KB 3ms OK 8KB 6ms OK 6KB 110ms MATCH
escape-string-regexp OK 0KB 1ms OK 0KB 6ms OK 0KB 116ms MATCH
fast-deep-equal OK 2KB 2ms OK 3KB 6ms OK 2KB 109ms MATCH
deepmerge OK 4KB 2ms OK 6KB 7ms OK 5KB 108ms MATCH
color-convert OK 26KB 5ms OK 27KB 8ms OK 27KB 116ms MATCH
picomatch OK 48KB 6ms OK 59KB 10ms OK 55KB 113ms MATCH
type-is OK 212KB 5ms OK 245KB 15ms OK 210KB 122ms MATCH
object-assign OK 3KB 2ms OK 4KB 6ms OK 3KB 111ms MATCH
has-flag OK 0KB 1ms OK 0KB 6ms OK 2KB 111ms MATCH
p-limit OK 3KB 2ms OK 4KB 6ms OK 3KB 113ms MATCH
strip-ansi OK 1KB 2ms OK 1KB 6ms OK 1KB 112ms MATCH
ansi-regex OK 0KB 1ms OK 1KB 6ms OK 0KB 108ms MATCH
wrap-ansi OK 26KB 6ms OK 27KB 9ms OK 27KB 109ms MATCH
supports-color OK 4KB 2ms OK 4KB 6ms OK 5KB 107ms MATCH
cross-spawn OK 14KB 5ms OK 18KB 8ms OK 15KB 115ms MATCH
lru-cache OK 21KB 4ms OK 23KB 8ms OK 22KB 118ms MATCH
signal-exit OK 5KB 2ms OK 7KB 7ms OK 7KB 121ms MATCH
which OK 7KB 3ms OK 10KB 7ms OK 8KB 110ms MATCH
string-width OK 10KB 4ms OK 10KB 7ms OK 11KB 110ms MATCH
safe-buffer OK 2KB 2ms OK 4KB 6ms OK 2KB 109ms MATCH
bytes OK 3KB 2ms OK 4KB 6ms OK 4KB 114ms MATCH
depd OK 9KB 2ms OK 12KB 7ms OK 11KB 120ms MATCH
merge-descriptors OK 1KB 1ms OK 2KB 7ms OK 2KB 115ms MATCH
content-type OK 4KB 2ms OK 5KB 6ms OK 4KB 113ms MATCH
cookie FAIL 8KB 2ms FAIL 10KB 6ms FAIL 11KB 108ms -
on-finished OK 5KB 2ms OK 7KB 6ms OK 7KB 107ms MATCH
statuses OK 4KB 2ms OK 6KB 6ms OK 5KB 113ms MATCH
etag OK 2KB 2ms OK 4KB 6ms OK 3KB 109ms MATCH
vary OK 3KB 2ms OK 4KB 6ms OK 4KB 116ms MATCH
flat OK 1KB 2ms OK 1KB 6ms OK 1KB 110ms MATCH
retry OK 7KB 2ms OK 9KB 7ms OK 7KB 111ms MATCH
camelcase OK 5KB 2ms OK 5KB 6ms OK 6KB 114ms MATCH
decamelize OK 1KB 2ms OK 1KB 6ms OK 1KB 108ms MATCH
memoize-one OK 1KB 2ms OK 3KB 6ms OK 2KB 109ms MATCH
rfdc OK 6KB 2ms OK 8KB 6ms OK 6KB 114ms MATCH
ohash OK 4KB 2ms OK 4KB 7ms OK 4KB 117ms MATCH
nanoevents OK 0KB 2ms OK 1KB 6ms OK 1KB 118ms MATCH
typebox OK 101KB 50ms OK 115KB 27ms OK 122KB 164ms MATCH
ts-pattern OK 10KB 3ms OK 12KB 7ms OK 11KB 114ms MATCH
valibot OK 12KB 11ms OK 7KB 16ms OK 8KB 124ms MATCH
ts-results-es OK 20KB 4ms OK 23KB 8ms OK 30KB 119ms MATCH
remeda OK 2KB 26ms OK 2KB 17ms OK 2KB 120ms MATCH
nanostores OK 5KB 4ms OK 6KB 7ms OK 6KB 114ms MATCH
ky OK 26KB 6ms OK 30KB 9ms OK 30KB 119ms MATCH
typedi OK 13KB 4ms OK 27KB 8ms OK 28KB 118ms MATCH
io-ts OK 30KB 10ms OK 104KB 15ms OK 118KB 123ms MATCH
type-fest OK 0KB 1ms OK 0KB 6ms OK 0KB 107ms MATCH
arktype OK 261KB 65ms OK 297KB 29ms OK 273KB 151ms MATCH
kysely OK 245KB 87ms OK 414KB 41ms OK 396KB 148ms MATCH
lodash-es@es5 OK 14KB 69ms OK 19KB 53ms OK 28KB 145ms MATCH
clsx@es5 OK 1KB 2ms OK 1KB 6ms OK 1KB 105ms MATCH
ms@es5 OK 4KB 2ms OK 4KB 6ms OK 4KB 107ms MATCH
deepmerge@es5 OK 5KB 2ms OK 6KB 6ms OK 5KB 107ms MATCH
fast-deep-equal@es5 OK 2KB 2ms OK 3KB 6ms OK 2KB 113ms MATCH
semver@es5 OK 58KB 12ms OK 67KB 11ms OK 52KB 117ms MATCH
lodash-es@es2015 OK 14KB 71ms OK 19KB 55ms OK 28KB 146ms MATCH
superjson@es2015 OK 23KB 11ms OK 26KB 10ms OK 24KB 115ms MATCH
flat@es2017 OK 1KB 2ms OK 1KB 6ms OK 1KB 104ms MATCH
defu@es2017 OK 2KB 2ms OK 2KB 6ms OK 2KB 110ms MATCH
picomatch@es2018 OK 48KB 6ms OK 59KB 9ms OK 55KB 124ms MATCH
semver@es2019 OK 55KB 13ms OK 67KB 11ms OK 52KB 119ms MATCH
clsx@es2019 OK 1KB 2ms OK 1KB 6ms OK 1KB 108ms MATCH
nanoid@es2019 OK 1KB 2ms OK 1KB 6ms OK 1KB 114ms MATCH
dayjs@es2020 OK 11KB 3ms OK 14KB 7ms OK 11KB 111ms MATCH
ohash@es2020 OK 4KB 2ms OK 4KB 7ms OK 4KB 112ms MATCH
lru-cache@es2021 OK 21KB 4ms OK 23KB 9ms OK 22KB 120ms MATCH
nanostores@es2021 OK 2KB 4ms OK 2KB 7ms OK 2KB 116ms MATCH

Size Comparison (ZTS vs esbuild)

Project ZTS esbuild Ratio Status
svelte 94KB 5KB 19.90x
pathe 14KB 3KB 4.05x
three 799KB 414KB 1.93x
valibot 12KB 7KB 1.73x
d3 148KB 99KB 1.49x ⚠️
clsx@es5 1KB 1KB 1.48x ⚠️
solid-js 3KB 2KB 1.17x ⚠️
effect 558KB 477KB 1.17x ⚠️
uuid 2KB 2KB 1.13x ⚠️
hookable 6KB 6KB 1.04x
string-width 10KB 10KB 1.01x
color-convert 26KB 27KB 0.95x
wrap-ansi 26KB 27KB 0.94x
camelcase 5KB 5KB 0.94x
change-case 3KB 3KB 0.93x
supports-color 4KB 4KB 0.93x
remeda 2KB 2KB 0.93x
destr 2KB 2KB 0.92x
lru-cache 21KB 23KB 0.92x
jotai 21KB 23KB 0.92x
superjson@es2015 23KB 26KB 0.92x
lru-cache@es2021 21KB 23KB 0.92x
valtio 7KB 8KB 0.91x
flat 1KB 1KB 0.90x
bcryptjs 28KB 31KB 0.90x
superjson 23KB 26KB 0.89x
flat@es2017 1KB 1KB 0.89x
decamelize 1KB 1KB 0.89x
ky 26KB 30KB 0.88x
rxjs 325KB 369KB 0.88x
arktype 261KB 297KB 0.88x
immer 22KB 26KB 0.88x
ts-pattern 10KB 12KB 0.88x
chalk 13KB 15KB 0.88x
defu 2KB 2KB 0.87x
typebox 101KB 115KB 0.87x
zlib 97KB 112KB 0.87x
preact 13KB 15KB 0.87x
defu@es2017 2KB 2KB 0.87x
ohash 4KB 4KB 0.87x
mime-types 204KB 235KB 0.87x
deepmerge@es5 5KB 6KB 0.87x
type-is 212KB 245KB 0.87x
clsx 1KB 1KB 0.87x
ts-results-es 20KB 23KB 0.86x
zod 438KB 507KB 0.86x
cac 17KB 20KB 0.86x
ohash@es2020 4KB 4KB 0.86x
semver@es5 58KB 67KB 0.86x
p-limit 3KB 4KB 0.86x
ajv 208KB 244KB 0.85x
nanostores 5KB 6KB 0.85x
clsx@es2019 1KB 1KB 0.84x
tanstack-query 48KB 57KB 0.84x
jsonwebtoken 115KB 139KB 0.83x
semver 55KB 67KB 0.83x
qs 78KB 95KB 0.82x
fast-glob 164KB 200KB 0.82x
react 52KB 64KB 0.82x
dotenv 13KB 16KB 0.82x
strip-ansi 1KB 1KB 0.82x
picomatch 48KB 59KB 0.82x
semver@es2019 55KB 67KB 0.82x
picomatch@es2018 48KB 59KB 0.82x
has-flag 0KB 0KB 0.81x
ansi-regex 0KB 1KB 0.81x
micromatch 81KB 100KB 0.81x
path-to-regexp 12KB 15KB 0.81x
ms@es5 4KB 4KB 0.81x
minimatch 46KB 57KB 0.81x
vue 1624KB 2008KB 0.81x
date-fns 38KB 47KB 0.81x
fast-deep-equal@es5 2KB 3KB 0.80x
react-dom 530KB 664KB 0.80x
yaml 209KB 262KB 0.80x
lodash-es 51KB 65KB 0.79x
deepmerge 4KB 6KB 0.79x
eventemitter3 6KB 8KB 0.79x
nanostores@es2021 2KB 2KB 0.79x
cheerio 1721KB 2187KB 0.79x
tiny-invariant 0KB 1KB 0.78x
rfdc 6KB 8KB 0.78x
depd 9KB 12KB 0.78x
retry 7KB 9KB 0.78x
lodash-es@es5 14KB 19KB 0.77x
lodash-es@es2015 14KB 19KB 0.77x
which 7KB 10KB 0.76x
nanoevents 0KB 1KB 0.76x
signal-exit 5KB 7KB 0.76x
dayjs 11KB 14KB 0.76x
hono 45KB 59KB 0.76x
dayjs@es2020 11KB 14KB 0.76x
cross-spawn 14KB 18KB 0.76x
nanoid 1KB 1KB 0.75x
debug 15KB 20KB 0.75x
content-type 4KB 5KB 0.74x
nanoid@es2019 1KB 1KB 0.73x
statuses 4KB 6KB 0.73x
drizzle-orm 22KB 31KB 0.72x
ms 3KB 4KB 0.71x
bytes 3KB 4KB 0.71x
express 787KB 1129KB 0.70x
is-glob 4KB 6KB 0.69x
vary 3KB 4KB 0.69x
on-finished 5KB 7KB 0.68x
glob-parent 6KB 8KB 0.68x
object-assign 3KB 4KB 0.68x
escape-string-regexp 0KB 0KB 0.68x
fast-deep-equal 2KB 3KB 0.66x
toolkit 78KB 118KB 0.66x
etag 2KB 4KB 0.63x
neverthrow 11KB 18KB 0.62x
merge-descriptors 1KB 2KB 0.62x
type-fest 0KB 0KB 0.62x
safe-buffer 2KB 4KB 0.60x
kysely 245KB 414KB 0.59x
commander 70KB 124KB 0.56x
iconv-lite 298KB 546KB 0.55x
mobx 143KB 271KB 0.53x
typedi 13KB 27KB 0.49x
supabase 334KB 758KB 0.44x
memoize-one 1KB 3KB 0.38x
io-ts 30KB 104KB 0.29x
fp-ts 18KB 71KB 0.26x
graphql 61KB 605KB 0.10x

Average ratio: 1.00x | Smaller: 114 | Similar(±10%): 2 | Larger: 9

Auto-generated by CI on 2026-03-27 06:25 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant