Skip to content

v0.12.2

Choose a tag to compare

@PatrickJS PatrickJS released this 24 Jun 00:59
· 70 commits to main since this release

Release notes from CHANGELOG.md for @async/framework@0.12.2 (2026-06-24).

  • Added createRouter({ mode: "signals" }) for route-only shells that update
    router.* state and history without rendering partials or swapping
    boundaries.
  • Added loader.swap(boundary, html, { scan }) with auto, full, and none
    scan modes for cheaper boundary replacement when inserted content is inert or
    manually scanned later.
  • Added loader.swap(boundary, html, { strategy: "morph" }) as an opt-in
    stable-shell update path that preserves matching nodes, avoids full subtree
    replacement, and still cleans removed or replaced scoped resources.
  • Treat partial envelopes with html: undefined as no route replacement and
    warn instead of clearing the active route boundary; html: "" remains an
    explicit clear.
  • Scoped lifecycle fallback hooks for components rendered through
    this.render(...) so this.onMount(...), this.onVisible(...), and
    this.on("intersect", ...) target the child component's rendered root
    instead of the ancestor mount root.
  • Preserved direct loader.mount(target, Component) fallback behavior, where
    rootless and multi-root top-level components still receive the mount target.
  • Updated the bundled Flow bridge to @async/flow@0.5.0, using async signal
    detection while preserving existing async signal metadata and refresh paths.
  • Migration note: code that intentionally used nested fallback hooks to mutate
    the ancestor mount root should move that behavior to the ancestor component or
    bind a specific element with on:attach.
  • Added this.onAttach(fn) as the canonical component attach lifecycle helper,
    with this.onMount(fn), this.on("mount", ...), and on:mount retained as
    compatibility aliases that warn about the rename.
  • Bundle size from bundled TypeScript source: browser.ts raw 338,346 B (338.3 KB / 0.338 MB), gzip 63,620 B (63.6 KB / 0.064 MB), br 51,844 B (51.8 KB / 0.052 MB) -> browser.min.js raw 142,172 B (142.2 KB / 0.142 MB), gzip 41,549 B (41.5 KB / 0.042 MB), br 36,106 B (36.1 KB / 0.036 MB); delta raw -196,174 B (-196.2 KB / -0.196 MB), gzip -22,071 B (-22.1 KB / -0.022 MB), br -15,738 B (-15.7 KB / -0.016 MB).

Release evidence

  • Release type: stable
  • Package profile: framework-browser
  • npm pack files: 40
File Raw Gzip Brotli
browser.d.ts 36.4 KB 6.8 KB 6.0 KB
browser.js 330.3 KB 62.5 KB 50.6 KB
browser.min.js 138.8 KB 40.6 KB 35.3 KB
browser.ts 330.4 KB 62.5 KB 50.6 KB
browser.umd.js 350.8 KB 64.0 KB 51.3 KB
browser.umd.min.js 141.0 KB 40.8 KB 35.4 KB
framework.d.ts 36.8 KB 6.9 KB 6.1 KB
framework.ts 335.5 KB 63.5 KB 51.2 KB
server.js 335.5 KB 63.5 KB 51.2 KB

Diff links:


Source: CHANGELOG.md in tag v0.12.2.