From 856d22353551cab9a8eeac7a5dde9cbc3470a88b Mon Sep 17 00:00:00 2001 From: Hariom Balhara Date: Tue, 10 Jun 2025 20:30:57 +0530 Subject: [PATCH] fix: Use setTimeout instead of requestAnimationFrame which is more reliable and support calOrigin in prerender #21205 (#21730) --- packages/embeds/embed-core/src/embed-iframe.ts | 9 +++------ packages/embeds/embed-core/src/embed.ts | 7 ++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/embeds/embed-core/src/embed-iframe.ts b/packages/embeds/embed-core/src/embed-iframe.ts index d489860fa7..58f8bf6603 100644 --- a/packages/embeds/embed-core/src/embed-iframe.ts +++ b/packages/embeds/embed-core/src/embed-iframe.ts @@ -102,7 +102,7 @@ export const embedStore = { // Avoid unnecessary history push window.history.replaceState({}, "", currentUrl.toString()); } - requestAnimationFrame(updateIfNeeded); + runAsap(updateIfNeeded); return { hasChanged, }; @@ -167,11 +167,8 @@ if (isBrowser) { } function runAsap(fn: (...arg: unknown[]) => void) { - if (isSafariBrowser) { - // https://adpiler.com/blog/the-full-solution-why-do-animations-run-slower-in-safari/ - return setTimeout(fn, 50); - } - return requestAnimationFrame(fn); + // We don't use rAF because it runs slower in Safari plus doesn't run if the iframe is hidden sometimes + return setTimeout(fn, 50); } function log(...args: unknown[]) { diff --git a/packages/embeds/embed-core/src/embed.ts b/packages/embeds/embed-core/src/embed.ts index 1bee01ffac..56c386483d 100644 --- a/packages/embeds/embed-core/src/embed.ts +++ b/packages/embeds/embed-core/src/embed.ts @@ -1159,6 +1159,7 @@ class CalApi { type, options = {}, pageType, + calOrigin, }: { calLink: string; type?: "modal" | "floatingButton"; @@ -1166,6 +1167,7 @@ class CalApi { prerenderIframe?: boolean; }; pageType?: EmbedPageType; + calOrigin?: string; }) { // eslint-disable-next-line prefer-rest-params validate(arguments[0], { @@ -1210,7 +1212,7 @@ class CalApi { this.cal.isPrerendering = true; this.modal({ calLink, - calOrigin: config.calOrigin, + calOrigin: calOrigin || config.calOrigin, __prerender: true, ...(pageType ? { config: { "cal.embed.pageType": pageType } } : {}), }); @@ -1227,15 +1229,18 @@ class CalApi { calLink, type, pageType, + calOrigin, }: { calLink: string; type: "modal" | "floatingButton"; pageType?: EmbedPageType; + calOrigin?: string; }) { this.preload({ calLink, type, pageType, + calOrigin, }); }