summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Emanuele Stoppa <my.burning@gmail.com> 2024-11-20 15:08:26 +0000
committerGravatar GitHub <noreply@github.com> 2024-11-20 15:08:26 +0000
commit28dd3ce5222a667fe113238254edf59318b3fa14 (patch)
treed9e86a52aa9d67474a024a61feac7e7578ba10b1
parentab0580bc94334d7924b5bb0ac808669d9d8930c3 (diff)
downloadastro-28dd3ce5222a667fe113238254edf59318b3fa14.tar.gz
astro-28dd3ce5222a667fe113238254edf59318b3fa14.tar.zst
astro-28dd3ce5222a667fe113238254edf59318b3fa14.zip
fix: server island hydration (#12444)
-rw-r--r--.changeset/olive-garlics-marry.md5
-rw-r--r--packages/astro/src/runtime/server/render/server-islands.ts5
2 files changed, 8 insertions, 2 deletions
diff --git a/.changeset/olive-garlics-marry.md b/.changeset/olive-garlics-marry.md
new file mode 100644
index 000000000..342db3a6f
--- /dev/null
+++ b/.changeset/olive-garlics-marry.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes an issue where a server island hydration script might fail case the island ID misses from the DOM.
diff --git a/packages/astro/src/runtime/server/render/server-islands.ts b/packages/astro/src/runtime/server/render/server-islands.ts
index 6dd06b8d7..b8ac34024 100644
--- a/packages/astro/src/runtime/server/render/server-islands.ts
+++ b/packages/astro/src/runtime/server/render/server-islands.ts
@@ -81,8 +81,8 @@ let response = await fetch('${serverIslandUrl}', {
method: 'POST',
body: JSON.stringify(data),
});
-
-if(response.status === 200 && response.headers.get('content-type') === 'text/html') {
+if (script) {
+ if(response.status === 200 && response.headers.get('content-type') === 'text/html') {
let html = await response.text();
// Swap!
@@ -97,6 +97,7 @@ if(response.status === 200 && response.headers.get('content-type') === 'text/htm
script.before(frag);
}
script.remove();
+}
</script>`);
},
};