PackageTrack
Sign in Get early access

js_widget_runtime

Run JavaScript widgets as Flutter widgets using QuickJS (VM) or Web Workers (web).

0.4.79 3.6K downloads/mo #4328 most downloaded on pub.dev IstiN/flutter_js_widget_runtime

What this package is like to depend on

Last release 4 days ago

19 Aug 2026

Ships fairly regularly

a new release about every 8 days

Nearly every release is documented

notes for 78 of 81 stable releases

Nothing withdrawn

no release was ever pulled

1 months old

81 releases · first in 2026

81 releases in the last 12 months

see the full history below

Release timeline

81 releases · Jul 2026 to Aug 2026
Release Pre-release

Releases

latest 60 of 81
  1. 0.4.79 19 Aug 2026
    Release notes

    The 0.4.75 iid tagging made the bootstrap's __tag helper reference __IID
    unconditionally, but the web worker script never declared it — every
    widget message threw 'ReferenceError: __IID is not defined' and JS
    widgets on the web client hung on the loading spinner (engine loaded,
    renderer built, first render never arrived).

    Fix: inject at the top of the
    generated worker script (before sendMessage definition and the shared
    bootstrap). Contract test asserts the declaration order and the __tag
    reference.

    Open source →
    Release notes
    • fix(web): declare __IID before the shared bootstrap in the web worker script — the 0.4.75 iid tagging made __tag reference __IID unconditionally, but the web worker never declared it, so every widget message threw ReferenceError: __IID is not defined and JS widgets on the web client hung on the loading spinner (engine loaded, renderer built, first render never arrived).
    Open source →
  2. 0.4.78 19 Aug 2026
    Release notes

    chore: bump version to 0.4.78 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  3. 0.4.77 19 Aug 2026
    Release notes

    chore: bump version to 0.4.77 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  4. 0.4.76 19 Aug 2026
    Release notes

    chore: bump version to 0.4.76 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  5. 0.4.75 19 Aug 2026
    Release notes

    The default JsWidgetEngine backend (flutter_js) is JavaScriptCore on
    macOS but a QuickJS plugin .so on Linux, which CI does not build — the
    repro failed there at engine startup. These tests also need live network
    (wttr.in), so they stay a local-macOS diagnostic.

    Open source →
    Release notes
    • fix(engine): cross-engine message routing on macOS JSC — flutter_js registers the native sendMessage callback as a STATIC, so every new runtime overwrites it and ALL live JS contexts dispatch through the LAST runtime's channel map. With several engines alive (a board with multiple widgets), one widget's fetch/render messages were delivered to a neighbour widget — e.g. the weather widget stayed on its loading spinner forever while its data rendered inside another widget (deterministic two-engine repro test included). The bootstrap now tags every message payload with the engine iid; a Dart-side router (installed into every live channel map) delivers each message to its owning engine and strips the tag before handlers run. QuickJS backend (per-engine native routing) only unwraps raw-id channels.
    Open source →
  6. 0.4.74 19 Aug 2026
    Release notes

    chore: bump version to 0.4.74 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  7. 0.4.73 18 Aug 2026
    Release notes

    chore: bump version to 0.4.73 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  8. 0.4.72 18 Aug 2026
    Release notes

    chore: bump version to 0.4.72 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  9. 0.4.71 18 Aug 2026
    Release notes

    chore: bump version to 0.4.71 [pub bump]

    Open source →
    Release notes
    • Automated patch bump.
    Open source →
  10. 0.4.70 18 Aug 2026
    Release notes

    chore: bump version to 0.4.70 [pub bump]

    Open source →
    Release notes
    • fix(engine): SIGSEGV on widget dispose — native runtime release moved from scheduleMicrotask (same event-loop turn) to Future.delayed(Duration.zero) (next turn), with a final executePendingJob() drain before the release. flutter_js resolves promise bridges via microtasks (future.thenevaluate), so a microtask-scheduled release could free the JSContextGroup while a sibling microtask was still about to evaluate into it, crashing in JSValueToStringCopy with a dead JSC::VM. Applies to both dispose() and the old-runtime release path in run().
    Open source →
  11. 0.4.69 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  12. 0.4.68 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  13. 0.4.67 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  14. 0.4.66 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  15. 0.4.65 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  16. 0.4.64 18 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  17. 0.4.63 17 Aug 2026

    Nothing published for this version

  18. 0.4.62 17 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  19. 0.4.61 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  20. 0.4.60 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  21. 0.4.58 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  22. 0.4.57 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  23. 0.4.56 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  24. 0.4.55 15 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  25. 0.4.54 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  26. 0.4.53 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  27. 0.4.52 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  28. 0.4.50 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  29. 0.4.49 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  30. 0.4.48 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  31. 0.4.47 14 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  32. 0.4.45 14 Aug 2026
    Release notes
    • Perf: micro-optimizations in JS bootstrap:
      • Monotonic counter for IDs instead of Math.random()+Date.now()
      • Reusable argument joiner for console.log (avoids Array.slice alloc)
      • setTimeout uses one-shot Timer instead of periodic
      • Manual JSON string building for timer/RAF messages (avoids JSON.stringify)
    Open source →
  33. 0.4.44 12 Aug 2026
    Release notes
    • Fix JS widget cross-engine leaks on macOS/JSC:
      • callEvent is now synchronous (skips __jsr_event_done round-trip)
      • Render trees tagged with __iid, routed to correct panel
      • requestAnimationFrame tagged with __iid for game loop routing
      • _isLive guard + try/catch on callEvent to prevent SIGSEGV on disposed runtime
    Open source →
  34. 0.4.43 12 Aug 2026

    Nothing published for this version

  35. 0.4.42 12 Aug 2026
    Release notes
    • Fix callEvent deadlock: _handleEventDone was nulling _eventCompleter before _runEvent could complete it. On macOS (merged thread), JSC bridge callback fires DURING rt.evaluate() inside send(). Nulling the completer meant _runEvent's await never completed.
    Open source →
  36. 0.4.41 12 Aug 2026

    Nothing published for this version

  37. 0.4.40 12 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  38. 0.4.39 12 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  39. 0.4.38 12 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  40. 0.4.37 12 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  41. 0.4.36 12 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  42. 0.4.35 12 Aug 2026
    Release notes
    • Fix SIGSEGV: defer old runtime release until AFTER new runtime init completes (was releasing during init via scheduleMicrotask, which ran between evaluate() calls and freed the old JSContextGroup out from under in-flight native callbacks).
    • Reduce callEvent timeout from 30s to 5s — a single stuck event was blocking ALL widget interactions for 30 seconds.
    Open source →
  43. 0.4.34 12 Aug 2026
    Release notes
    • Fix dispose: use scheduleMicrotask instead of Future.delayed(Duration.zero) to avoid event-loop ordering issues that caused widgets to get stuck in loading state.
    Open source →
  44. 0.4.33 12 Aug 2026
    Release notes
    • Fix SIGSEGV: defer native JSContextGroup release to the next event-loop turn. During run() → dispose() → evaluate(), the current stack may still be inside executePendingJob() which holds native JSC callbacks. Releasing the context synchronously freed the JSContextGroup out from under those in-flight callbacks → crash in JSValueToStringCopy.
    Open source →
  45. 0.4.32 11 Aug 2026
    Release notes
    • Fix 3D host-flip: remember per-sceneId host selection so controllers recreated after a callEvent timeout route to the same host (Flame3dHost stays Flame3dHost) even when the renderer-side config lacks engine/src.
    Open source →
  46. 0.4.31 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  47. 0.4.30 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  48. 0.4.29 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  49. 0.4.28 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  50. 0.4.27 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  51. 0.4.26 02 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  52. 0.4.25 01 Aug 2026
    Release notes
    • Automated patch bump.
    Open source →
  53. 0.4.24 29 Jul 2026
    Release notes
    • feat(3d): unlit: true on declarative scene3d model entries — swaps the loaded GLB's SpatialMaterial for an UnlitMaterial with the same albedo, so flat brand marks (logos, UI panels) render at their exact colors instead of being dimmed by the scene light rig.
    Open source →
  54. 0.4.21 27 Jul 2026
    Release notes
    • fix(3d): the 3D host dispatcher reference-counts shared controllers — when a scene3d node unmounts and remounts within the same frame (per-frame scene rebuilds in video pipelines), the new State's initState runs before the old State's dispose; previously the late dispose killed the controller the new State had just acquired, leaving the scene permanently empty for the rest of the export.
    Open source →
  55. 0.4.20 26 Jul 2026
    Release notes
    • fix(3d): headless capture mounts the game tree manually and renders the world's children directly — an unmounted FlameGame renders and updates nothing (frozen skeletal animations, unregistered lights, invisible scenes), and a vanilla world renderTree never reached Object3D children in offscreen capture (empty GPU pass).
    • fix(3d): teardown races — disposed-controller guards and a MediaQuery-free World3D (pixel ratio explicit) so final-frame capture can't crash.
    • feat(3d): headless GLB rendering for the flame_3d host — offscreen capture path renders the scene into a GPU render target and composites it into any canvas (video export / board snapshots), replacing the old headless placeholder. Requires Impeller + Flutter GPU enabled by the embedder.
    • feat(3d): declarative scene3d configs — models: [{modelId, src, position, rotation, scale, animation}] + camera + time applied idempotently on every rebuild (diff-only), so video pipelines that re-render the node tree per frame can drive GLB scenes frame-accurately.
    • feat(3d): Js3dCaptureSync pending-work tracker lets headless renderers wait for GPU init / model loads before capturing a frame.
    • fix(3d): transparent scene background (Flame's opaque black default no longer covers layers composited behind the 3D scene).
    • fix(3d): no more build→apply→notify→rebuild loop when declarative configs are applied on every widget rebuild; disposed-controller release guard; idempotent controller dispose (unmount/remount + final tree teardown).
    Open source →
  56. 0.4.19 26 Jul 2026
    Release notes
    • Automated patch bump.
    Open source →
  57. 0.4.18 26 Jul 2026
    Release notes
    • Automated patch bump.
    Open source →
  58. 0.4.17 26 Jul 2026
    Release notes
    • Automated patch bump.
    Open source →
  59. 0.4.16 26 Jul 2026
    Release notes
    • Automated patch bump.
    Open source →
  60. 0.4.15 26 Jul 2026
    Release notes
    • Automated patch bump.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive