Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1225 commits
Select commit Hold shift + click to select a range
5b301e7
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
5297933
docs(state): refresh post PR #349 merge — OSS-529/530/534 Done (#350)
scottweaver Jul 15, 2026
43ce599
fix(OSS-531): strip TS annotations from sync$ serialized string (#351)
scottweaver Jul 15, 2026
52cb49a
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
70c0f71
fix(OSS-535): key _jsxDEV elements by tag kind and direct-child posit…
scottweaver Jul 15, 2026
39489ba
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 15, 2026
8ccf72f
docs(state): refresh post PRs #351/#352 merge — OSS-531/535 Done, OSS…
scottweaver Jul 15, 2026
7b0328e
docs(state): record final QDS compatibility pass — OSS-536 filed, sel…
scottweaver Jul 15, 2026
c4091ea
fix(OSS-536): inject _useHmr into inline/hoist component bodies (hmr …
scottweaver Jul 16, 2026
2bdf578
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 16, 2026
5b60d1a
docs(state): refresh post PR #355 merge — OSS-536 Done (#356)
scottweaver Jul 16, 2026
bbe01f9
refactor(OSS-538): optimizer code-hygiene — dead code, shared primiti…
scottweaver Jul 16, 2026
8ec36f6
test: remove no-op/duplicate tests, strengthen weak ones (#358)
scottweaver Jul 16, 2026
36417d2
refactor(OSS-540): behavior-normalizing consolidations (#359)
scottweaver Jul 16, 2026
25dc5e5
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 16, 2026
3fec5ce
docs(state): refresh post PRs #357/#358/#359 — OSS-537 hygiene sweep …
scottweaver Jul 16, 2026
d30c4ab
refactor: de-any test AST-parse helpers + extract shared module (#361)
scottweaver Jul 16, 2026
9d58da3
docs(state): refresh post PR #361 merge — OSS-541 de-any umbrella fil…
scottweaver Jul 16, 2026
0e56468
refactor(OSS-542): de-any the tests/optimizer specs (#363)
scottweaver Jul 17, 2026
8138ccc
docs(state): refresh post PR #363 merge — OSS-541 de-any both subs la…
scottweaver Jul 17, 2026
b7fa34c
refactor(OSS-543): de-any the ast-compare differential oracle (#364)
scottweaver Jul 20, 2026
541c411
docs(state): refresh post PR #364 merge — OSS-541 de-any umbrella clo…
scottweaver Jul 20, 2026
02b2610
fix(OSS-471): MOVE single-consumer server$ binding into its segment (…
scottweaver Jul 20, 2026
be0806d
chore(ci): update test baseline [skip ci]
github-actions[bot] Jul 20, 2026
87be034
docs(state): refresh post PR #367 merge — OSS-471 server$ MOVE landed…
scottweaver Jul 20, 2026
f7a3ca8
chore(comments): aggressive comment sweep + SWC-reference scrub (pre-…
scottweaver Jul 22, 2026
fef10a2
Merge remote-tracking branch 'ts-opt-graft/main' into feat/ts-optimiz…
scottweaver Jul 22, 2026
3e71ff9
chore(ts-optimizer): prune standalone-repo infra after monorepo graft
scottweaver Jul 22, 2026
a543f27
chore(ts-optimizer): wire package into the monorepo workspace
scottweaver Jul 22, 2026
39297d4
chore(ts-optimizer): rename to @qwik.dev/ts-optimizer, packages/ts-op…
scottweaver Jul 23, 2026
a0218a2
test(ts-optimizer): validate against live Rust snapshots, drop vendor…
wmertens Aug 11, 2026
cffa36c
Merge remote-tracking branch 'origin/main' into ts-optimizer-package
wmertens Aug 11, 2026
55d8415
feat(ts-optimizer): emit .m() marker for handlers with lifted captures
wmertens Aug 11, 2026
637bd80
test(ts-optimizer): add transform options for new Rust snapshots
wmertens Aug 11, 2026
5a1c03c
fix(ts-optimizer): stop AST comparator from masking semantic differences
wmertens Aug 11, 2026
40357ff
feat(ts-optimizer): drop module decls left unreferenced after extraction
wmertens Aug 11, 2026
5eb8063
feat(ts-optimizer): drop decls consumed only by stripped segments
wmertens Aug 11, 2026
9a47390
fix(ts-optimizer): track lifted captures via movedCaptures flag
wmertens Aug 11, 2026
55ddca8
feat(ts-optimizer): emit _qrlWithChunk for module-level worker$ QRLs
wmertens Aug 11, 2026
0c6c217
fix(ts-optimizer): comment-aware brace matching in dead-code folds
wmertens Aug 11, 2026
29363ce
feat(ts-optimizer): close vite-plugin parity gaps exposed by real builds
wmertens Aug 11, 2026
e5d6ecc
feat(qwik-vite): add tsOptimizer flag selecting the TS optimizer, def…
wmertens Aug 11, 2026
ea17da9
fix(ts-optimizer): correctness fixes surfaced by running real core bu…
wmertens Aug 11, 2026
f49adc8
docs(ts-optimizer): document live convergence status and known gaps
wmertens Aug 11, 2026
1b42739
chore: nix flake update
wmertens Jul 19, 2026
6e08f0d
feat(ts-optimizer): statement-level DCE for segment bodies
wmertens Aug 11, 2026
02f6bc3
feat(ts-optimizer): inline const inits for whole-body identifier segm…
wmertens Aug 11, 2026
8a3458b
feat(ts-optimizer): synthesize the worker$ direct-event wrapper segment
wmertens Aug 11, 2026
e1905c4
fix(ts-optimizer): parent-level handlers keep .w() captures without t…
wmertens Aug 11, 2026
0a8a524
feat(ts-optimizer): normalize inline arrow components to _rawProps
wmertens Aug 11, 2026
58cdd7d
feat(ts-optimizer): rename unextracted event attrs in raw-JSX parents
wmertens Aug 11, 2026
8af82a1
feat(ts-optimizer): collapse store destructure/alias chains in compon…
wmertens Aug 11, 2026
6653eb0
feat(ts-optimizer): hygiene renames and module-order JSX keys for fun…
wmertens Aug 11, 2026
1ad17dc
feat(ts-optimizer): q:ps delivery for handlers inside bare-$ segments
wmertens Aug 11, 2026
bc83042
feat(ts-optimizer): derive inlinedQrl ctxName from enclosing declarat…
wmertens Aug 11, 2026
29eba0f
fix(ts-optimizer): resolve bare-identifier bodies for inlinedQrl segm…
wmertens Aug 11, 2026
d9a7c4a
fix(ts-optimizer): let moved decls own inlinedQrl segment registrations
wmertens Aug 11, 2026
2fa3d8a
fix(ts-optimizer): scope-aware unused-import removal and re-export hy…
wmertens Aug 11, 2026
31f1b0b
test(ts-optimizer): reconcile unit tests with Rust-verified parity be…
wmertens Aug 11, 2026
22c997e
fix(ts-optimizer): full import-backed qrl naming parity
wmertens Aug 11, 2026
ddce50b
fix(ts-optimizer): report dynamic imports removed with stripped segments
wmertens Aug 11, 2026
280339f
fix(ts-optimizer): keep explicit inlinedQrl capture arrays verbatim
wmertens Aug 11, 2026
63be8dc
test(ts-optimizer): port test.rs programmatic assertions
wmertens Aug 11, 2026
12fa3d7
chore: rename packages/optimizer to packages/rust-optimizer, drop Rus…
wmertens Aug 11, 2026
fd59b59
feat: bundle the TS optimizer into @qwik.dev/core/optimizer
wmertens Aug 11, 2026
6464c7c
fix(ts-optimizer): share _fnSignal hoist numbering across parent and …
wmertens Aug 11, 2026
3b74020
fix(ts-optimizer): don't mangle dead braceless if guarding a nested i…
wmertens Aug 11, 2026
04fabe2
fix(ts-optimizer): never rewrite identifiers inside TS type annotations
wmertens Aug 11, 2026
0658d4d
feat(ts-optimizer): run in browsers without the native oxc fast path
wmertens Aug 11, 2026
441d35a
fix(ts-optimizer): real-app dev fixes surfaced by running the e2e apps
wmertens Aug 12, 2026
e2c3c7e
fix(ts-optimizer): event-capture delivery parity fixes from e2e suites
wmertens Aug 12, 2026
b1b7f4c
feat(ts-optimizer): run transforms in a worker-thread pool
wmertens Aug 12, 2026
5c6ad93
fix(ts-optimizer): keep shared-hoister _hf numbering aligned across b…
wmertens Aug 12, 2026
9786577
fix(ts-optimizer): strip TypeScript syntax from serialized fnSignal s…
wmertens Aug 12, 2026
3a56931
fix(ts-optimizer): preserve arguments after the extracted $ closure
wmertens Aug 12, 2026
2714a6e
fix(ts-optimizer): keep lexical captures on stripped loop handlers
wmertens Aug 12, 2026
32254ce
fix(ts-optimizer): don't drop module decls in files without extractions
wmertens Aug 12, 2026
d67c933
feat(docs): run the REPL on the TS optimizer with browser oxc
wmertens Aug 12, 2026
36aa99a
fix(ts-optimizer): align JSX key numbering between hoist and segment …
wmertens Aug 12, 2026
37ae6ff
Revert "chore: rename packages/optimizer to packages/rust-optimizer, …
wmertens Aug 12, 2026
8966a3d
fix(ts-optimizer): don't fnSignal-hoist ref props; keep same-line int…
wmertens Aug 12, 2026
1be61e9
fix(ts-optimizer): expand shorthand properties when folding build con…
wmertens Aug 12, 2026
db3299b
fix(ts-optimizer): align SSR q:ps order with client handler slots
wmertens Aug 12, 2026
00f58cb
fix(ts-optimizer): keep passive event scopes in the hoist rewrite
wmertens Aug 12, 2026
8719e7b
fix(ts-optimizer): use code-unit sort for q:ps group ordering
wmertens Aug 12, 2026
7288b1c
fix(ts-optimizer): capture capitalized JSX tags as closure free ident…
wmertens Aug 12, 2026
1001564
fix(ts-optimizer): keep source order between named props and spreads
wmertens Aug 12, 2026
42323eb
fix(ts-optimizer): put loop-handler .w() bindings in component scope
wmertens Aug 12, 2026
ae083c2
fix(ts-optimizer): keep original attr name when the kebab-cased event…
wmertens Aug 12, 2026
596fca1
fix(ts-optimizer): bracket-access string-keyed rawProps fields; skip …
wmertens Aug 12, 2026
35a2d93
fix(ts-optimizer): consolidate hook context destructures in the hoist…
wmertens Aug 12, 2026
50ff284
fix(qwik-vite): stop worker qrl placeholder match at escaped quotes
wmertens Aug 12, 2026
b5a4689
fix(ts-optimizer): match rust for JSX nested in attribute values
wmertens Aug 12, 2026
278306e
fix(ts-optimizer): let local declarations shadow same-named imports i…
wmertens Aug 12, 2026
fc447cc
fix(ts-optimizer): classify wrapProp props by root binding stability
wmertens Aug 12, 2026
edbdc20
fix(ts-optimizer): deliver enclosing-segment captures to nested handl…
wmertens Aug 12, 2026
698a67d
fix(ts-optimizer): track function params as their own binding kind
wmertens Aug 12, 2026
2d2416f
fix(ts-optimizer): inlinedQrl event values classify var, full-key ent…
wmertens Aug 12, 2026
52f280f
fix(ts-optimizer): three prop-classification parity gaps with rust
wmertens Aug 12, 2026
1e881ba
fix(ts-optimizer): keep single-use member-read consts on their side o…
wmertens Aug 12, 2026
80d3906
fix(ts-optimizer): sync$ serialization minifier parity with rust
wmertens Aug 13, 2026
6f45926
fix(ts-optimizer): consolidate promoted handler params under every st…
wmertens Aug 13, 2026
e6161d3
fix(qwik-router): drop side-effect import of the config virtual modul…
wmertens Aug 13, 2026
603bdba
fix(ts-optimizer): unpack captures in regCtx (server$) inline bodies
wmertens Aug 13, 2026
524f39a
Revert "fix(qwik-router): drop side-effect import of the config virtu…
wmertens Aug 13, 2026
5f36cd1
chore: drop changeset for reverted router treeshake change
wmertens Aug 13, 2026
02caca8
fix(qwik-router): make route-loader factories TDZ-safe in the config …
wmertens Aug 13, 2026
b8f1a01
fix(ts-optimizer): parse lib-mode collapse input as .ts first
wmertens Aug 13, 2026
597ae4f
feat(qwik-router): load server$ modules via importEagerModules() befo…
wmertens Aug 14, 2026
dda1682
fix(qwik-router): decouple the runtime from static @qwik-router-confi…
wmertens Aug 14, 2026
403de4f
chore(e2e): split the SSR dev build and keep the env-gated rust A/B s…
wmertens Aug 14, 2026
b14e9e0
fix(ts-optimizer): auto-export un-exported routeLoader$/routeAction$ …
wmertens Aug 14, 2026
974261a
fix(ts-optimizer): fnSignal hoisting parity with rust in four gaps
wmertens Aug 14, 2026
0340e3d
fix(ts-optimizer): handle else-if arms when folding constant conditions
wmertens Aug 14, 2026
e0dafcf
fix(ts-optimizer): never fold isServer/isBrowser/isDev in lib mode
wmertens Aug 14, 2026
395fe30
fix(qwik-router): run importEagerModules in the dev getConfig branch
wmertens Aug 14, 2026
9ed1e75
test(router): update ssg snapshot for the ts-optimizer output shape
wmertens Aug 14, 2026
85ee0fc
chore(e2e): drop the generated rust playwright config, keep the A/B s…
wmertens Aug 14, 2026
05510e1
chore(ts-optimizer): delete dead exports and duplicate paren scanners
wmertens Aug 14, 2026
d98497e
chore(ts-optimizer): reuse canonical binding walker, harden return scan
wmertens Aug 14, 2026
ec20f35
refactor(ts-optimizer): one import-statement formatter for all four r…
wmertens Aug 14, 2026
2639e74
refactor(ts-optimizer): one scope-aware owner for env-const folding
wmertens Aug 14, 2026
8b1ec04
refactor(ts-optimizer): one DCE pipeline for segments, parents, and p…
wmertens Aug 14, 2026
fc65b6d
refactor(ts-optimizer): share the string-literal skipper across paren…
wmertens Aug 14, 2026
f19bf8e
docs(ts-optimizer): record 2026-08-15 benchmark point - both CI caps …
wmertens Aug 15, 2026
9e69664
refactor(ts-optimizer): fold constant branches on the AST, not with r…
wmertens Aug 15, 2026
01258c8
fix(ts-optimizer): count references module-wide in side-effect simpli…
wmertens Aug 15, 2026
8cc45d3
refactor(ts-optimizer): one AST owner for unused-import pruning and e…
wmertens Aug 15, 2026
b9854f7
chore(ts-optimizer): drop the lib-mode reserved-imports re-prepend
wmertens Aug 15, 2026
122ce4e
fix(ts-optimizer): $-aware identifier boundaries in code-matching reg…
wmertens Aug 15, 2026
6fd82be
fix(ts-optimizer): stop collapsing blank lines inside template literals
wmertens Aug 15, 2026
67f8ba2
fix(ts-optimizer): string-aware sync$ serialization minifier
wmertens Aug 15, 2026
318514e
fix(ts-optimizer): enum inlining respects member paths, strings, comm…
wmertens Aug 15, 2026
2a7179a
fix(ts-optimizer): classify nested JSX children structurally, not by …
wmertens Aug 15, 2026
b2328e8
fix(ts-optimizer): keep string contents intact in the _fnSignal trail…
wmertens Aug 15, 2026
85369ca
fix(ts-optimizer): make capture-hoist scanners string- and comment-blind
wmertens Aug 15, 2026
dd3ca80
fix(ts-optimizer): scrub passive/preventdefault directives without to…
wmertens Aug 15, 2026
689693e
fix(ts-optimizer): collect removed import sources without matching st…
wmertens Aug 15, 2026
7e71387
fix(ts-optimizer): detect router-marker initializers structurally for…
wmertens Aug 15, 2026
65255bf
fix(ts-optimizer): harden sync$ call scan and _hf renumbering against…
wmertens Aug 15, 2026
cb17600
fix(ts-optimizer): close the remaining text-probe blind spots
wmertens Aug 15, 2026
f2af5be
fix(ts-optimizer): treat template interpolation contents as code, not…
wmertens Aug 15, 2026
4329eca
Merge remote-tracking branch 'origin/main' into ts-optimizer-package
wmertens Aug 15, 2026
8045a7a
fix(ts-optimizer): resolve the package from source so the type pass n…
wmertens Aug 15, 2026
bdba46c
chore: pnpm lint.fix
wmertens Aug 15, 2026
e3a7740
fix(ts-optimizer): clear lint errors and the oxc wasm-binding peer wa…
wmertens Aug 15, 2026
a8019c2
chore: upgrade oxc to 0.144.0 and clear the peer and dedupe CI failures
wmertens Aug 16, 2026
394b285
chore(scripts): print the api report diff when api-extractor fails
wmertens Aug 16, 2026
2e46867
fix(router): export Editable so the api report stops embedding a loca…
wmertens Aug 16, 2026
7ff2d85
fix(ts-optimizer): handle CRLF sources and third-party $ marker packages
wmertens Aug 16, 2026
425b989
fix(ci): invalidate the qwik dist cache on ts-optimizer changes
wmertens Aug 16, 2026
457fdf6
fix(ts-optimizer): leave env constants alone in prebuilt library output
wmertens Aug 16, 2026
4432af9
Revert "fix(ts-optimizer): leave env constants alone in prebuilt libr…
wmertens Aug 16, 2026
aa450bb
fix(ts-optimizer): eliminate what a folded env branch makes unreachable
wmertens Aug 16, 2026
c91e22f
fix(ts-optimizer): detect a JSDoc @jsxImportSource and degrade raw tr…
wmertens Aug 16, 2026
71056a2
fix(ts-optimizer): stop gating real passes behind regex shape lists
wmertens Aug 16, 2026
3cd8b63
perf(ts-optimizer): reuse parses and stop blanking code character by …
wmertens Aug 16, 2026
93f1b2a
Merge remote-tracking branch 'origin/main' into ts-optimizer-package
wmertens Aug 19, 2026
8816987
fix(qwik): stop publishing a dependency on the private ts-optimizer
wmertens Aug 19, 2026
b293470
feat(qwik): make the Rust optimizer an optional peer dependency
wmertens Aug 19, 2026
8ccb405
fix(qwik): keep the Rust optimizer installed locally so pnpm pack can…
wmertens Aug 19, 2026
a6b4d6b
fix(optimizer): correct TS stripping
wmertens Aug 23, 2026
0f67113
feat(ts-optimizer): add support for QRL context inheritance, update H…
wmertens Aug 23, 2026
45b3ee6
Merge main (vite 8 / rolldown) into ts-optimizer-package
wmertens Aug 23, 2026
f428c1b
fix(ts-optimizer): keep router loader decls under their _auto_ export
wmertens Aug 23, 2026
75a8bda
perf(docs): drop 4.5MB of duplicate oxc wasm from the REPL worker
wmertens Aug 23, 2026
3e3c6ec
docs(ruler): record the two e2e traps that fake a pass or a failure
wmertens Aug 23, 2026
a147c1a
fix(docs): import rolldown's oxc from a browser-reachable subpath
wmertens Aug 23, 2026
7ff2962
chore: satisfy the dedupe and prettier gates
wmertens Aug 23, 2026
a466419
fix(ts-optimizer): handle embedded JSX entities
wmertens Aug 24, 2026
c76badc
refactor(ts-optimizer): use native regex and equality helpers
wmertens Aug 24, 2026
19ad499
refactor(ts-optimizer): reuse the shared AST walker
wmertens Aug 24, 2026
cb01361
refactor(ts-optimizer): accept plain source inputs
wmertens Aug 24, 2026
222b152
fix(ts-optimizer): reject unparseable source without repair
wmertens Aug 24, 2026
f9a6419
perf(ts-optimizer): share preparation edits before reparsing
wmertens Aug 24, 2026
7607e7e
test(ts-optimizer): compare parity without semantic normalization
wmertens Aug 24, 2026
d46c402
test(optimizer): repair malformed parity fixtures
wmertens Aug 24, 2026
45bde26
test(ts-optimizer): normalize cosmetic import layout
wmertens Aug 24, 2026
66f315d
test(ts-optimizer): check complete optimizer parity
wmertens Aug 24, 2026
0812248
fix(ts-optimizer): emit transformed parent extensions
wmertens Aug 24, 2026
0d064e9
fix(ts-optimizer): preserve untranspiled JSX extensions
wmertens Aug 24, 2026
1c3527f
fix(ts-optimizer): match Rust entry strategy metadata
wmertens Aug 24, 2026
2d929c0
fix(ts-optimizer): prune unused Qwik imports
wmertens Aug 24, 2026
3f65ae6
fix(ts-optimizer): order generated segment imports
wmertens Aug 24, 2026
9dc192e
test(ts-optimizer): ignore cosmetic property shorthand
wmertens Aug 24, 2026
dbc53b7
fix(ts-optimizer): report emitted parameter patterns
wmertens Aug 24, 2026
0518956
test(ts-optimizer): ignore redundant statement blocks
wmertens Aug 24, 2026
cf20495
test(ts-optimizer): ignore unused import specifiers
wmertens Aug 24, 2026
217d06f
test(ts-optimizer): mirror Rust transpile options
wmertens Aug 24, 2026
ae7b659
test(ts-optimizer): ignore static key quoting
wmertens Aug 24, 2026
e161dad
fix(ts-optimizer): match Rust diagnostic messages
wmertens Aug 24, 2026
cd4df76
fix(ts-optimizer): highlight passive event conflicts
wmertens Aug 24, 2026
8a259e4
test(ts-optimizer): ignore derived diagnostic positions
wmertens Aug 24, 2026
0de8eea
fix(ts-optimizer): type passive conflict parents
wmertens Aug 24, 2026
ff7c018
fix(ts-optimizer): preserve original segment locations
wmertens Aug 24, 2026
fceca18
fix(ts-optimizer): migrate whole-body initializers
wmertens Aug 24, 2026
6d1d1bd
fix(ts-optimizer): report non-function captures
wmertens Aug 24, 2026
092b4e0
fix(ts-optimizer): keep inline registrations direct
wmertens Aug 24, 2026
5ed0c5f
test(ts-optimizer): mirror Rust entry strategies
wmertens Aug 24, 2026
819ba35
fix(ts-optimizer): preserve unused initializer effects
wmertens Aug 24, 2026
c7765c5
fix(ts-optimizer): align Rust source coordinates
wmertens Aug 24, 2026
271bb70
fix(ts-optimizer): preserve dotted output paths
wmertens Aug 24, 2026
7bb8945
fix(ts-optimizer): retain top-level effect bindings
wmertens Aug 24, 2026
4f57a8b
fix(ts-optimizer): emit exported enums as var
wmertens Aug 24, 2026
6e03a12
fix(ts-optimizer): simplify unused binary initializers
wmertens Aug 24, 2026
0f93712
fix(ts-optimizer): preserve bind spread order
wmertens Aug 24, 2026
0544249
fix(ts-optimizer): retain classes with instance fields
wmertens Aug 24, 2026
0824c81
fix(ts-optimizer): remove redundant labeled blocks
wmertens Aug 24, 2026
9945bd0
fix(ts-optimizer): order generated marker imports
wmertens Aug 24, 2026
81ee049
fix(ts-optimizer): preserve side-effect import order
wmertens Aug 24, 2026
21abd30
fix(ts-optimizer): align stripped qrl numbering
wmertens Aug 24, 2026
3d3ded9
fix(ts-optimizer): order nested stripped qrls
wmertens Aug 24, 2026
b0d4185
fix(ts-optimizer): prioritize capture imports
wmertens Aug 24, 2026
7767082
fix(ts-optimizer): byte-sort nested qrl declarations
wmertens Aug 24, 2026
6afb583
fix(ts-optimizer): suppress registered context segments
wmertens Aug 24, 2026
47d893f
fix(ts-optimizer): count registered qrl hygiene steps
wmertens Aug 24, 2026
b633c94
fix(ts-optimizer): hoist lib qrl dependencies
wmertens Aug 24, 2026
fb54f34
fix(ts-optimizer): group inline bodies by component
wmertens Aug 24, 2026
5eae729
fix(ts-optimizer): append auto exports after bodies
wmertens Aug 24, 2026
25a4d31
fix(ts-optimizer): hoist unused qrl registrations
wmertens Aug 24, 2026
7f167fd
fix(ts-optimizer): register removed duplicate qrls
wmertens Aug 24, 2026
335a892
fix(ts-optimizer): order final segment imports
wmertens Aug 24, 2026
4094cbb
fix(ts-optimizer): preserve minified void expressions
wmertens Aug 24, 2026
603b5cf
fix(ts-optimizer): discard unused side-effect bindings
wmertens Aug 24, 2026
3edba95
fix(ts-optimizer): ignore cosmetic nested control blocks
wmertens Aug 24, 2026
c267e58
fix(ts-optimizer): auto export inlined module references
wmertens Aug 24, 2026
3f79cc3
fix(ts-optimizer): sort private module exports
wmertens Aug 24, 2026
891df45
fix(ts-optimizer): order component capture bindings
wmertens Aug 24, 2026
f1b9ced
fix(ts-optimizer): place component capture bindings
wmertens Aug 24, 2026
cc5091a
fix(ts-optimizer): order segment support dependencies
wmertens Aug 24, 2026
f15bba2
fix(ts-optimizer): sort existing capture imports
wmertens Aug 24, 2026
0c15fd1
test(ts-optimizer): ignore cosmetic loop blocks
wmertens Aug 24, 2026
a147e10
fix(ts-optimizer): preserve owner stylesheet imports
wmertens Aug 24, 2026
ed70cd9
fix(ts-optimizer): sort moved capture qrls
wmertens Aug 24, 2026
139eec6
fix(ts-optimizer): alias generated wrapper imports
wmertens Aug 24, 2026
95c57d5
fix(ts-optimizer): preserve inlined qrl locations
wmertens Aug 24, 2026
777a0fd
fix(ts-optimizer): preserve jsx dev locations
wmertens Aug 24, 2026
8579653
fix(optimizer): merge repeated event handlers
wmertens Aug 24, 2026
a8a1f57
fix(ts-optimizer): preserve module extensions
wmertens Aug 24, 2026
d1794a9
fix(ts-optimizer): match rust jsx keys
wmertens Aug 24, 2026
3c865ac
fix(ts-optimizer): retain inlined event metadata
wmertens Aug 24, 2026
0fb2c6a
test(ts-optimizer): require full rust parity
wmertens Aug 24, 2026
9648826
fix(ts-optimizer): drop unused literal containers
wmertens Aug 24, 2026
c39095c
test(ts-optimizer): refresh rust-compatible assertions
wmertens Aug 24, 2026
c3659a5
test(ts-optimizer): remove stale parity reports
wmertens Aug 24, 2026
2985a78
fix: preserve nested captures and moved synchronous handlers during b…
Varixo Aug 24, 2026
68b4849
fix: preserve event parameters for handlers rendered in loops
Varixo Aug 24, 2026
fbd0884
fix: preserve loop keys in hoisted reactive expressions
Varixo Aug 24, 2026
da990b1
fix: align generated capture delivery with rust optimizer output
Varixo Aug 24, 2026
4a9cf8b
fix: preserve captured qrl declaration order
Varixo Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/calm-menus-resume.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: preserve captured qrl declaration order
5 changes: 5 additions & 0 deletions .changeset/const-fold-shorthand.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: build constants in shorthand object properties fold to `key: value` instead of corrupting the key
5 changes: 5 additions & 0 deletions .changeset/dangling-auto-export.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: un-exported route loaders and actions no longer break the build
5 changes: 5 additions & 0 deletions .changeset/dev-eager-server-fns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/router': patch
---

fix: server$ functions are registered at startup in development builds too
5 changes: 5 additions & 0 deletions .changeset/great-moons-invent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: honour a JSDoc-style `@jsxImportSource` pragma, and survive a failed raw-transfer allocation
5 changes: 5 additions & 0 deletions .changeset/hoist-numbering-align.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: hoisted signal functions could reference the wrong body in multi-component files
5 changes: 5 additions & 0 deletions .changeset/jsx-tag-captures.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: components referenced as JSX tags inside function scopes are captured like any other binding
5 changes: 5 additions & 0 deletions .changeset/keep-decls-no-extractions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: files without any $ extraction no longer lose module-level declarations
5 changes: 5 additions & 0 deletions .changeset/keep-qrl-trailing-args.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: arguments after a $ closure (e.g. task options) are no longer dropped
5 changes: 5 additions & 0 deletions .changeset/key-numbering-parity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: SSR and client builds now assign identical JSX keys, preventing full subtree recreation on first rerender
5 changes: 5 additions & 0 deletions .changeset/lazy-cars-repeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: stop letting regex pre-checks decide whether the TS strip and constant folding run
5 changes: 5 additions & 0 deletions .changeset/light-workers-lift.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': minor
---

feat: the optimizer runs transforms in worker threads, isolating memory and parallelizing builds
5 changes: 5 additions & 0 deletions .changeset/loud-labels-vanish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: statement labels no longer pull same-named module variables into segments
5 changes: 5 additions & 0 deletions .changeset/olive-lions-yawn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': minor
---

feat: the Rust optimizer is now an optional peer dependency, installed only if you set `tsOptimizer: false`
5 changes: 5 additions & 0 deletions .changeset/olive-pugs-repeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: drop code a folded isServer/isBrowser branch made unreachable, so server-only imports leave the client bundle
5 changes: 5 additions & 0 deletions .changeset/passive-scope-hoist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: passive event scopes survive the server build's handler rewrite
5 changes: 5 additions & 0 deletions .changeset/qps-slot-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: serialized q:ps capture arrays follow the client's handler slot order on multi-handler elements
5 changes: 5 additions & 0 deletions .changeset/ref-and-space-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: ref props are no longer hoisted into read-only signals, and same-line spaces between sibling elements are preserved
5 changes: 5 additions & 0 deletions .changeset/repl-rolldown-oxc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'qwik-docs': patch
---

chore: reuse rolldown's bundled oxc in the REPL instead of a second wasm copy
5 changes: 5 additions & 0 deletions .changeset/repl-ts-optimizer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'qwik-docs': patch
---

fix: the docs REPL bundles with the TypeScript optimizer and browser oxc, no Rust wasm needed for current versions
5 changes: 5 additions & 0 deletions .changeset/rotten-hoops-melt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

perf: cut optimizer wall time ~18% by reusing parses and rewriting the code/comment blanking pass
5 changes: 5 additions & 0 deletions .changeset/router-config-decoupling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/router': patch
---

fix: the router config no longer evaluates app route and server$ modules during the runtime's own import phase, eliminating module-order TDZ errors in bundled SSR output and making the middleware importable outside an app build
5 changes: 5 additions & 0 deletions .changeset/router-loader-tdz.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/router': patch
---

fix: route loader factories no longer throw a TDZ error in bundled SSR builds
5 changes: 5 additions & 0 deletions .changeset/spread-override-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: props spread after a named prop now overrides it, including with multiple spreads
5 changes: 5 additions & 0 deletions .changeset/strip-fnsignal-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: serialized reactive expressions no longer leak typescript casts into browser scripts
5 changes: 5 additions & 0 deletions .changeset/stripped-loop-captures.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: stripped loop event handlers no longer lose their lexical captures
5 changes: 5 additions & 0 deletions .changeset/tidy-onions-brake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: keep CRLF sources and third-party `$` marker packages correct in segments
5 changes: 5 additions & 0 deletions .changeset/tricky-jars-repeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: don't declare the private ts-optimizer as a dependency, it is bundled into core/optimizer
5 changes: 5 additions & 0 deletions .changeset/ts-optimizer-vite-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': minor
---

feat: add `tsOptimizer` flag to qwikVite, selecting the TypeScript optimizer by default
5 changes: 5 additions & 0 deletions .changeset/unit-transform-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: string-keyed prop destructures, multi-capital event names, and manual qrl captures no longer break the transform
5 changes: 5 additions & 0 deletions .changeset/wild-donkeys-repeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/router': patch
---

fix: export the Editable type that routeActionQrl's return type already exposed
5 changes: 5 additions & 0 deletions .changeset/worker-qrl-escaped-quote.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@qwik.dev/core': patch
---

fix: worker qrl chunk rewrite no longer breaks on escaped quotes
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,9 @@ jobs:
path: packages/qwik/dist
# Note that this includes the package.json of qwik
# qwik-vite source is bundled into packages/qwik/dist/optimizer.mjs by scripts/submodule-optimizer.ts, so its sources must invalidate this cache.
# ts-optimizer is bundled into packages/qwik/dist/ts-optimizer.mjs by the same script, so it must too — otherwise every job that consumes this dist builds against a stale optimizer.
# CI-only helpers should not invalidate compiled package output caches.
key: ${{ hashfiles('pnpm-lock.yaml', 'scripts.json', 'scripts/**/*', '!scripts/ci-restore-artifacts.ts', 'packages/qwik/**/*', 'packages/qwik-vite/**/*', 'starters/features/**/*', 'starters/adapters/**/*', 'starters/templates/**/*', '!**/*.unit.*', '!**/*.rs', '!e2e/qwik-e2e/apps/e2e') }}
key: ${{ hashfiles('pnpm-lock.yaml', 'scripts.json', 'scripts/**/*', '!scripts/ci-restore-artifacts.ts', 'packages/qwik/**/*', 'packages/qwik-vite/**/*', 'packages/ts-optimizer/**/*', 'starters/features/**/*', 'starters/adapters/**/*', 'starters/templates/**/*', '!**/*.unit.*', '!**/*.rs', '!e2e/qwik-e2e/apps/e2e') }}
- run: 'echo ${{ steps.cache-qwik.outputs.cache-primary-key }} > qwik-key.txt'
- name: 'check cache: rust'
id: cache-rust
Expand Down
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@ packages/browser-extension/public/devtools-hook.js
# ruler-check CI). Edit .ruler/ and regenerate instead of letting Prettier reformat these.
/AGENTS.md
/CLAUDE.md

# Playwright artifacts (gitignored, but prettier still walks them)
playwright-report/
test-results/
3 changes: 2 additions & 1 deletion .ruler/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ the cursor system, and the Rust optimizer.
| `@qwik.dev/utils` | `packages/qwik-utils` | Less-common helpers (`usePoll`, `zod$`), may use qwik internals |
| `@qwik.dev/dom` | `packages/qwik-dom` | Server-side DOM implementation |
| `@qwik.dev/qwik-vite` | `packages/qwik-vite` | `vite-plugin-qwik`, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings |
| `@qwik.dev/ts-optimizer` | `packages/ts-optimizer` | TypeScript optimizer, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings; kept for parity comparison |
| `eslint-plugin-qwik` | `packages/eslint-plugin-qwik` | ESLint rules |
| `create-qwik` | `packages/create-qwik` | Project scaffolding CLI |
| `qwik-docs` | `packages/docs` | Docs site, private package |
Expand Down
8 changes: 8 additions & 0 deletions .ruler/skills/qwik-e2e-verification/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ pnpm playwright test e2e/qwik-e2e/tests/events.e2e.ts --browser=chromium --confi
pnpm playwright test e2e/qwik-e2e/tests/qwikrouter/nav.e2e.ts --browser=chromium --config e2e/qwik-e2e/playwright.config.ts
```

The brotli budget tests in `ssg-snapshot.e2e.ts` measure the built core chunk, so they need a
production `pnpm build.core` — `build.core.dev` leaves core unminified and blows the budget by ~4%.
Before believing a budget failure, rebuild with `build.core` and re-run `pnpm test.e2e.router.ssg`.

Playwright's `reuseExistingServer: !CI` means a dev server left over from an earlier run serves
stale bundles, so a local pass can hide a build break that CI catches. Kill port 3301 before
trusting a green local sweep after optimizer or bundler changes.

Other suites may use named Playwright projects. Check their config before choosing flags:

```bash
Expand Down
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ the cursor system, and the Rust optimizer.
| `@qwik.dev/utils` | `packages/qwik-utils` | Less-common helpers (`usePoll`, `zod$`), may use qwik internals |
| `@qwik.dev/dom` | `packages/qwik-dom` | Server-side DOM implementation |
| `@qwik.dev/qwik-vite` | `packages/qwik-vite` | `vite-plugin-qwik`, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings |
| `@qwik.dev/ts-optimizer` | `packages/ts-optimizer` | TypeScript optimizer, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings; kept for parity comparison |
| `eslint-plugin-qwik` | `packages/eslint-plugin-qwik` | ESLint rules |
| `create-qwik` | `packages/create-qwik` | Project scaffolding CLI |
| `qwik-docs` | `packages/docs` | Docs site, private package |
Expand Down
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ the cursor system, and the Rust optimizer.
| `@qwik.dev/utils` | `packages/qwik-utils` | Less-common helpers (`usePoll`, `zod$`), may use qwik internals |
| `@qwik.dev/dom` | `packages/qwik-dom` | Server-side DOM implementation |
| `@qwik.dev/qwik-vite` | `packages/qwik-vite` | `vite-plugin-qwik`, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings |
| `@qwik.dev/ts-optimizer` | `packages/ts-optimizer` | TypeScript optimizer, private, bundled into `@qwik.dev/core/optimizer` |
| `@qwik.dev/optimizer` | `packages/optimizer` | Rust optimizer, WASM, NAPI bindings; kept for parity comparison |
| `eslint-plugin-qwik` | `packages/eslint-plugin-qwik` | ESLint rules |
| `create-qwik` | `packages/create-qwik` | Project scaffolding CLI |
| `qwik-docs` | `packages/docs` | Docs site, private package |
Expand Down
4 changes: 2 additions & 2 deletions e2e/docs-e2e/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"description": "",
"author": "",
"devDependencies": {
"@playwright/test": "1.61.0",
"@types/node": "24.10.0"
"@playwright/test": "1.61.1",
"@types/node": "25.6.0"
},
"keywords": [],
"license": "ISC",
Expand Down
4 changes: 2 additions & 2 deletions e2e/qwik-e2e/apps/qwikrouter-ssg-snapshot/expected.ssg.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<!DOCTYPE html><html lang="en" q:render="static-ssr" q:route="/" q:container="paused" q:runtime="2" q:base="/build/" q:locale="" q:manifest-hash="MANIFEST_HASH" q:instance="[instance]" :><head :><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><script async type="module" src="/build/q-xxxxxxxx.js"></script><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><link rel="preload" href="/assets/xxxxxxxx-bundle-graph.json" as="fetch" crossorigin="anonymous" :><script type="module" async crossorigin="anonymous">let b=fetch("/assets/xxxxxxxx-bundle-graph.json");import("/build/q-xxxxxxxx.js").then(({l})=>l("/build/",b));</script><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><meta : charset="utf-8"><meta : name="viewport" content="width=device-width, initial-scale=1.0"><link : rel="canonical" href="https://snapshot.qwik.dev/"><title :="r5_0">Qwik Router SSG Snapshot</title><meta name="description" content="Deterministic SSG snapshot fixture" :="r5_1"></head><body :><main :="q1_2"><h1 :>SSG Snapshot Fixture</h1><p : id="tags">routeLoader$ | useResource$ | useSignal</p><section : id="loader-json">{&quot;heading&quot;:&quot;SSG Snapshot Fixture&quot;,&quot;stats&quot;:[2,3,5,8],&quot;tags&quot;:[&quot;routeLoader$&quot;,&quot;useResource$&quot;,&quot;useSignal&quot;],&quot;profile&quot;:{&quot;name&quot;:&quot;router-state&quot;,&quot;status&quot;:&quot;stable&quot;}}</section><section : id="summary-json">{&quot;total&quot;:18,&quot;selectedCount&quot;:2,&quot;clicks&quot;:2}</section><section :="q1_0" id="resource-json">{&quot;headline&quot;:&quot;router-state:stable&quot;,&quot;selected&quot;:[&quot;alpha&quot;,&quot;beta&quot;],&quot;weighted&quot;:[2,6,15,32],&quot;summary&quot;:{&quot;total&quot;:18,&quot;selectedCount&quot;:2,&quot;clicks&quot;:2}}</section></main><script q-d:qinit="#0" q-d:qrouterpopstate="q-xxxxxxxx.js#_run#1" q:p="2" :="Fn_1" q-d:qcinit="q-xxxxxxxx.js#s_igI1pUsax0E|q-xxxxxxxx.js#s_hoZr9O26Irg"></script>[state omitted]
<!DOCTYPE html><html lang="en" q:render="static-ssr" q:route="/" q:container="paused" q:runtime="2" q:base="/build/" q:locale="" q:manifest-hash="MANIFEST_HASH" q:instance="[instance]" :><head :><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><script async type="module" src="/build/q-xxxxxxxx.js"></script><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><link rel="preload" href="/assets/xxxxxxxx-bundle-graph.json" as="fetch" crossorigin="anonymous" :><script type="module" async crossorigin="anonymous">let b=fetch("/assets/xxxxxxxx-bundle-graph.json");import("/build/q-xxxxxxxx.js").then(({l})=>l("/build/",b));</script><link rel="modulepreload" href="/build/q-xxxxxxxx.js" :><meta : charset="utf-8"><meta : name="viewport" content="width=device-width, initial-scale=1.0"><link : rel="canonical" href="https://snapshot.qwik.dev/"><title :="eL_0">Qwik Router SSG Snapshot</title><meta name="description" content="Deterministic SSG snapshot fixture" :="eL_1"></head><body :><main :="q1_2"><h1 :>SSG Snapshot Fixture</h1><p : id="tags">routeLoader$ | useResource$ | useSignal</p><section : id="loader-json">{&quot;heading&quot;:&quot;SSG Snapshot Fixture&quot;,&quot;stats&quot;:[2,3,5,8],&quot;tags&quot;:[&quot;routeLoader$&quot;,&quot;useResource$&quot;,&quot;useSignal&quot;],&quot;profile&quot;:{&quot;name&quot;:&quot;router-state&quot;,&quot;status&quot;:&quot;stable&quot;}}</section><section : id="summary-json">{&quot;total&quot;:18,&quot;selectedCount&quot;:2,&quot;clicks&quot;:2}</section><section :="q1_0" id="resource-json">{&quot;headline&quot;:&quot;router-state:stable&quot;,&quot;selected&quot;:[&quot;alpha&quot;,&quot;beta&quot;],&quot;weighted&quot;:[2,6,15,32],&quot;summary&quot;:{&quot;total&quot;:18,&quot;selectedCount&quot;:2,&quot;clicks&quot;:2}}</section></main><script q-d:qcinit="q-xxxxxxxx.js#s_igI1pUsax0E|q-xxxxxxxx.js#s_hoZr9O26Irg" q-d:qinit="#0" :="yd_0" q-d:qrouterpopstate="q-xxxxxxxx.js#_run#1"></script>[state omitted]
[vnode map omitted]
<script type="module" async="true" q:type="preload">["q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js"].map((l,e)=>{e=document.createElement('link');e.rel='modulepreload';e.href="/build/"+l;document.head.appendChild(e)});window.addEventListener('load',f=>{f=_=>import("/build/q-xxxxxxxx.js").then(({p})=>p(["q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js"]));try{requestIdleCallback(f,{timeout:2000})}catch(e){setTimeout(f,200)}})</script><script q:func="qwik/json">document["qFuncs_xxxxxx"]=[()=>{((w,h)=>{if(!w._qcs){w._qcs=!0;const s=h.state?._qRouterScroll;if(s){h.scrollRestoration="manual";w.scrollTo(s.x,s.y);}document.dispatchEvent(new Event("qcinit"));}})(window,history);},(p0)=>p0.value.heading,(p0)=>p0.url.href]</script><script>(window._qwikEv||(window._qwikEv=[])).push("d:qinit","d:qrouterpopstate","d:qcinit",0,"[instance]")</script></body></html>
<script type="module" async="true" q:type="preload">["q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js"].map((l,e)=>{e=document.createElement('link');e.rel='modulepreload';e.href="/build/"+l;document.head.appendChild(e)});window.addEventListener('load',f=>{f=_=>import("/build/q-xxxxxxxx.js").then(({p})=>p(["q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js","q-xxxxxxxx.js"]));try{requestIdleCallback(f,{timeout:2000})}catch(e){setTimeout(f,200)}})</script><script q:func="qwik/json">document["qFuncs_xxxxxx"]=[()=>{((w,h)=>{if(!w._qcs){w._qcs=!0;const s=h.state?._qRouterScroll;if(s){h.scrollRestoration="manual";w.scrollTo(s.x,s.y);}document.dispatchEvent(new Event("qcinit"));}})(window,history);},(p0)=>p0.url.href,(p0)=>p0.value.heading]</script><script>(window._qwikEv||(window._qwikEv=[])).push("d:qcinit","d:qinit","d:qrouterpopstate",0,"[instance]")</script></body></html>
Loading