From 84c1259075b60b32b8b7faef4d3002581219354c Mon Sep 17 00:00:00 2001 From: Andrew Borisenko Date: Tue, 6 Oct 2026 08:01:02 +0200 Subject: [PATCH] Fix repeated callback renders Keep the initialized Hole in the render cache after updating it. Previously, the second callback render cached a fresh, uninitialized Hole, so the third render could throw and leave the DOM stale. Add a browser regression for repeated text and list updates, including DOM node reuse. Verify it against both development and production bundles. --- src/dom/index.js | 5 +++- test/render.html | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 test/render.html diff --git a/src/dom/index.js b/src/dom/index.js index 99cdfab..ae53d60 100644 --- a/src/dom/index.js +++ b/src/dom/index.js @@ -104,7 +104,10 @@ export const render = (where, what) => { const d = hole.valueOf(false); where.replaceChildren(d); } - else known[1].update(hole); + else { + known[1].update(hole); + hole = known[1]; + } rendered.set(where, [scope, hole]); } else { diff --git a/test/render.html b/test/render.html new file mode 100644 index 0000000..3218ec9 --- /dev/null +++ b/test/render.html @@ -0,0 +1,60 @@ + + + + + Repeated callback render regression + + +
Running...
+ + +