From cc80fe9b64d6e42ff07218b9ec6f1c094fb2662d Mon Sep 17 00:00:00 2001 From: Artin Boghosian Date: Mon, 24 Feb 2025 13:50:18 -0800 Subject: [PATCH] Respect StreamElement.render async function The StreamElement.render property is set to an async function in Turbo (see https://github.com/hotwired/turbo/blob/main/src/elements/stream_element.js#L29). As a result we should respect the async nature of the function and only dispatch the after render event once we know rendering has completed, by awaiting render to finish. --- src/index.turbo.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.turbo.ts b/src/index.turbo.ts index 25d316515..430d9cf42 100644 --- a/src/index.turbo.ts +++ b/src/index.turbo.ts @@ -22,8 +22,8 @@ const afterRenderEvent = new Event('turbo:after-stream-render'); addEventListener('turbo:before-stream-render', (event: CustomEvent) => { const originalRender = event.detail.render; - event.detail.render = function (streamElement: Element) { - originalRender(streamElement); + event.detail.render = async function (streamElement: Element) { + await originalRender(streamElement); window.dispatchEvent(afterRenderEvent); }; });