demo · v133
Incremental loading timeline
The chromestatus rationale: import maps used to block the entire app on a single, ever-growing JSON. Multiple maps let you ship a tiny boot-time map, then patch it as routes load. Walk the timeline below and compare with the legacy “one map, must come first” world.
Multiple import maps require Chrome 133+. Single-map fallback is still supported.
0 ms
page idle
no module resolved yet
// step 1 — boot map (tiny)
<script type="importmap">
{ "imports": { "core/": "/lib/core/" } }
</script>
// step 2 — later, route map (added when checkout loads)
<script type="importmap">
{ "imports": { "checkout/": "/teams/checkout/v3/" } }
</script>
what changed
Pre-133, the second <script type="importmap"> threw on parse. Any module load before the (single) map either blocked or failed. Now subsequent maps merge into the resolver state — with the caveat that maps cannot redefine specifiers an earlier map already loaded. This matches HTTP/2 push and code-split bundlers' incremental delivery model.