Load a minimal boot bundle first (menu, first-level assets), then fetch remaining scenes, textures and audio in the background using dynamic imports and an asset manifest. Split code by scene/route, defer non-critical JS, and preload the next level while the player is on the current one.
At a glance
| Fact | Value | Source |
|---|---|---|
| Split code by scene or route | dynamic import() | |
| Godot exports HTML5 for web publishing | Godot HTML5 export | docs.godotengine.org |
| Unity WebGL calls JS via plugin | .jslib file | docs.unity3d.com |
Ship a small boot bundle – engine runtime, main menu, and only the assets the first scene needs – then load everything else on demand. In plain JS/Phaser projects, split code with dynamic import() per scene and load textures/audio through the loader’s async queue keyed off a manifest, so a level’s assets fetch only when the player is about to enter it. Preload the next level’s assets in the background while the current one is playing, using idle time or a loading screen.
Engine specifics: Godot’s HTML5 export packages the whole game by default, so split large content into separate PackedScene resources loaded with ResourceLoader.load_threaded_request instead of baking everything into one export. Unity WebGL builds are a single wasm/data bundle unless you use Addressables to pull bundles at runtime, and any browser-side signal (progress, memory pressure) needs a .jslib plugin to call JavaScript from C#, as described in Unity’s browser scripting docs. For cross-platform builds that also need to talk to the hosting platform (save state, ads, purchases), the Playgama Bridge SDK documents the calls used across engines.
What about ads during a loading screen?
If you show ads between levels while assets stream in, request the ad only at that natural pause and keep loading in parallel; if no ad is returned the game should continue immediately rather than blocking on the ad call.
Test lazy loading on a throttled connection and confirm the game stays playable if an asset request stalls rather than crashing the scene.
Sources
- Godot docs: exporting for the Web
- Unity manual: interacting with browser scripting
- MDN: WebGL API
- Playgama Bridge SDK docs
- Playgama Ad
Related questions
Should audio be lazy-loaded too?
Yes – large music and voice files should stream per level like textures; only short, frequently reused SFX belong in the initial boot bundle.
How do I test lazy loading properly?
Throttle the network in browser devtools, watch for stalls when entering a new scene, and confirm the game stays playable instead of freezing.
Last updated: 24 September 2026