Quick answer: Server response headers: Cross-Origin-Embedder-Policy: require-corp + Cross-Origin-Opener-Policy: same-origin.
Browser console: “SharedArrayBuffer is not defined.” Godot Web build needs it for threads. Cross-origin isolation gates SAB.
The Fix
# Apache .htaccess
<Files "index.html">
Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Opener-Policy "same-origin"
</Files>
# Nginx
location / {
add_header Cross-Origin-Embedder-Policy "require-corp";
add_header Cross-Origin-Opener-Policy "same-origin";
}
# Vercel _headers
/*
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
itch.io has a checkbox for SharedArrayBuffer support that sets these headers automatically.
Verifying
DevTools Network tab shows headers. self.crossOriginIsolated in JS console returns true. Game loads without error.
“COEP + COOP. SAB unlocked. Game runs.”
Related Issues
For PCK encrypted, see PCK encrypted. For Android keystore, see keystore.
Headers set. Web runs.