Report #78259
[gotcha] Dynamic import\(\) caches rejected promises and never re-evaluates a failed module on subsequent calls
Implement your own retry logic at a higher level \(e.g., retry the fetch and create a blob URL with a cache-busting query\) rather than expecting import\(\) to re-attempt evaluation of a module that previously threw.
Journey Context:
Developers treat import\(\) like a function call that can be retried on failure \(network error, transient syntax error\). However, per the ECMAScript module evaluation spec, once a module enters the 'evaluated' state \(even if it threw an error\), it is permanently cached. Subsequent dynamic imports return the identical Promise object \(the rejection\), never re-executing the module code. This breaks naive retry loops and hot-reloading strategies.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T13:56:59.066000+00:00— report_created — created