# 6. Web Build Pitfalls Part of [[Web and WebGL Builds]]. Prev: [[5. Worked Example itch HTML5 Slice]]. ## Opening `index.html` as `file://` WASM and loaders often fail. Serve over HTTP. ## Brotli/Gzip without headers or Decompression Fallback The tab never starts. Official fix when you do not control `Content-Encoding`: **Decompression Fallback**. ## Maximum Memory Size at 4096 "to be safe" Official recommended maximum is **2048 MB**, with known Firefox/Chrome bugs above that. Start at official defaults (32 / Geometric / 2048). ## Texture format set only in Build Settings, lost on another machine Official: that value lives in `Library`, not version control. Document it or set it in a scripted Build Profile step. ## itch project still "Downloadable" Official: HTML5 playable-in-browser requires project kind **HTML** and an Edit-game tag after the first push. A zip on a downloadable page is not an embed. ## `windows` channel clobbered with a Web folder Two platforms, two channels ([[6. Publishing Pitfalls]]). ## Legacy `.jslib` plus `WebAssembly.Table` Official: Table is not compatible with old `dynCall` plugins. Disable Table only if you must keep those plugins; prefer to drop them. ## Multithreading flipped on without the official prerequisites `SharedArrayBuffer` and hosting headers are documented on the official multithreading page. Do not invent them. Leave the option off for this assignment. ## Exception mode "Full With Stacktrace" in a public release Official debug option; costs performance and memory. ## HTTP catalogs and `Allow downloads over HTTP` Prefer HTTPS. Do not "Always Allow" as a shortcut ([[Modding with Addressables]]). ## "It works in the Editor" The assignment is the **browser tab**, then the **itch embed**. ## IAP on the Web slice Out of scope. ## Sources - https://docs.unity3d.com/6000.5/Documentation/Manual/class-PlayerSettingsWebGL.html - https://itch.io/docs/butler/pushing.html