From e4d88bbfd6cf5b0c8a7f499920af911bd8b8f7ad Mon Sep 17 00:00:00 2001 From: Manuel Schiller Date: Mon, 16 Feb 2026 18:56:16 +0100 Subject: [PATCH 1/2] fix: script hydration --- .../basic/public/async-user-script.js | 2 + .../public/before-scripts-async-script.js | 2 + .../basic/public/before-scripts-script.js | 2 + .../basic/public/head-async-script.js | 2 + e2e/react-start/basic/public/head-script.js | 2 + e2e/react-start/basic/public/user-script.js | 2 + e2e/react-start/basic/src/routes/__root.tsx | 6 ++ .../basic/tests/root-scripts.spec.ts | 61 ++++++++++++++++++ .../basic/tests/script-duplication.spec.ts | 58 ++++++++--------- packages/react-router/src/Asset.tsx | 62 ++++++++++++++----- packages/react-router/tests/Scripts.test.tsx | 53 ++++++++-------- 11 files changed, 181 insertions(+), 71 deletions(-) create mode 100644 e2e/react-start/basic/public/async-user-script.js create mode 100644 e2e/react-start/basic/public/before-scripts-async-script.js create mode 100644 e2e/react-start/basic/public/before-scripts-script.js create mode 100644 e2e/react-start/basic/public/head-async-script.js create mode 100644 e2e/react-start/basic/public/head-script.js create mode 100644 e2e/react-start/basic/public/user-script.js create mode 100644 e2e/react-start/basic/tests/root-scripts.spec.ts diff --git a/e2e/react-start/basic/public/async-user-script.js b/e2e/react-start/basic/public/async-user-script.js new file mode 100644 index 00000000000..34f4c034c00 --- /dev/null +++ b/e2e/react-start/basic/public/async-user-script.js @@ -0,0 +1,2 @@ +console.log('ASYNC_USER_SCRIPT loaded') +window.ASYNC_USER_SCRIPT = true diff --git a/e2e/react-start/basic/public/before-scripts-async-script.js b/e2e/react-start/basic/public/before-scripts-async-script.js new file mode 100644 index 00000000000..7d082fea1c2 --- /dev/null +++ b/e2e/react-start/basic/public/before-scripts-async-script.js @@ -0,0 +1,2 @@ +console.log('BEFORE_SCRIPTS_ASYNC_SCRIPT loaded') +window.BEFORE_SCRIPTS_ASYNC_SCRIPT = true diff --git a/e2e/react-start/basic/public/before-scripts-script.js b/e2e/react-start/basic/public/before-scripts-script.js new file mode 100644 index 00000000000..7150d19d40d --- /dev/null +++ b/e2e/react-start/basic/public/before-scripts-script.js @@ -0,0 +1,2 @@ +console.log('BEFORE_SCRIPTS_SCRIPT loaded') +window.BEFORE_SCRIPTS_SCRIPT = true diff --git a/e2e/react-start/basic/public/head-async-script.js b/e2e/react-start/basic/public/head-async-script.js new file mode 100644 index 00000000000..3da8a928cde --- /dev/null +++ b/e2e/react-start/basic/public/head-async-script.js @@ -0,0 +1,2 @@ +console.log('HEAD_ASYNC_SCRIPT loaded') +window.HEAD_ASYNC_SCRIPT = true diff --git a/e2e/react-start/basic/public/head-script.js b/e2e/react-start/basic/public/head-script.js new file mode 100644 index 00000000000..3a64b23438b --- /dev/null +++ b/e2e/react-start/basic/public/head-script.js @@ -0,0 +1,2 @@ +console.log('HEAD_SCRIPT loaded') +window.HEAD_SCRIPT = true diff --git a/e2e/react-start/basic/public/user-script.js b/e2e/react-start/basic/public/user-script.js new file mode 100644 index 00000000000..8d06a610c02 --- /dev/null +++ b/e2e/react-start/basic/public/user-script.js @@ -0,0 +1,2 @@ +console.log('USER_SCRIPT loaded') +window.USER_SCRIPT = true diff --git a/e2e/react-start/basic/src/routes/__root.tsx b/e2e/react-start/basic/src/routes/__root.tsx index 581510f616a..3aa315c67e8 100644 --- a/e2e/react-start/basic/src/routes/__root.tsx +++ b/e2e/react-start/basic/src/routes/__root.tsx @@ -97,6 +97,8 @@ function RootDocument({ children }: { children: React.ReactNode }) { + - ) + return null } - if (attrs?.src && typeof attrs.src === 'string') { - return