<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq" -->

---
title: Web-Perf Wednesday 015 – Failed Modulepreloads Need to...
description: Safari Technology Preview 255 fixes a bug where a failed modulepreload could block a later import() from retrying. WebKit previously marked the resource as...
canonical: https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Web-Perf Wednesday 015 – Failed Modulepreloads Need to Recover | daily.dev
og:description: Safari Technology Preview 255 fixes a bug where a failed modulepreload could block a later import() from retrying. WebKit previously marked the resource as...
og:url: https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq
og:image: https://api.daily.dev/og/posts/xQ47mCndq.png
og:image:alt: Web-Perf Wednesday 015 – Failed Modulepreloads Need to Recover
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Web-Perf Wednesday 015 – Failed Modulepreloads Need to Recover

**[CSS Wizardry](https://daily.dev/sources/csswizardry)** · [@csswizardry](https://daily.dev/csswizardry) · 5 min read · 0 upvotes · 0 comments

## Summary

Safari Technology Preview 255 fixes a bug where a failed modulepreload could block a later import() from retrying. WebKit previously marked the resource as preloaded in its memory cache even after the request failed, so a later import reused the failed entry instead of making a new network request. The fix moves the error check ahead of the cache shortcut, letting a failed resource be reloaded. The same release also corrects Web Inspector's Network tab, which was reporting throttled response timings as faster than the selected throttling conditions. Separately, Firefox 159 fixes a WebDriver polling memory leak tied to timed-out commands, and Mozilla says its built-in PDF viewer now starts up to 45% faster on desktop.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://csswizardry.com/2026/10/web-perf-wednesday-015-failed-modulepreloads-need-to-recover>

## Questions this post answers

### Why does import() keep rejecting after a modulepreload request fails once, even after the resource becomes available again?

WebKit had a bug where a failed modulepreload left the resource marked as preloaded in its memory cache. A later import() of the same URL reused that failed cache entry and rejected immediately instead of making a new network request. Safari Technology Preview 255 fixes this by checking for the earlier error before taking the preload cache shortcut, so a failed resource gets reloaded and the next import can succeed.

_Teams shipping route-chunk preloads can track browser fixes like this one on daily.dev before trusting recovery code._

### Has Apple fixed the Safari modulepreload bug that blocks import() retries in stable Safari yet?

The fix has only shipped in Safari Technology Preview 255. The release notes for that preview do not state whether the change has reached stable Safari, so it should be treated as something to verify rather than a guarantee that existing recovery code can be removed.

_Developers tracking Safari release status for performance fixes can follow updates like this on daily.dev._

### How much faster does Firefox's built-in PDF viewer start up after the latest update?

Mozilla says Firefox's built-in PDF viewer now starts up to 45% faster on desktop. The announcement does not publish the test conditions behind that figure, so it should not be treated as a general browser or page-load performance improvement beyond PDF viewing specifically.

_Anyone benchmarking document-heavy user journeys can keep tabs on browser performance changes via daily.dev._

## Similar posts on daily.dev

- [Web-Perf Wednesday 007 – Chrome Makes Busy Workers Measurable – CSS Wizardry](https://daily.dev/posts/web-perf-wednesday-007-chrome-makes-busy-workers-measurable-css-wizardry-xxsb0p0sw) · CSS Wizardry · 5 upvotes · 0 comments
- [Release Notes for Safari Technology Preview 238](https://daily.dev/posts/release-notes-for-safari-technology-preview-238-nui8ncsfj) · WebKit · 0 upvotes · 0 comments
- [New to the web platform in November](https://daily.dev/posts/new-to-the-web-platform-in-november-hl3ileus2) · web.dev · 2 upvotes · 0 comments
- [Fixing Top-Level Await in Safari](https://daily.dev/posts/fixing-top-level-await-in-safari-kcsplb3aq) · WebKit · 14 upvotes · 2 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#firefox](https://daily.dev/tags/firefox), [#safari](https://daily.dev/tags/safari)

[View this post on daily.dev](https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Web-Perf Wednesday 015 – Failed Modulepreloads Need to Recover","url":"https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq"},"datePublished":"2026-10-28T09:07:26.984Z","dateModified":"2026-10-29T06:00:15.052Z","description":"Safari Technology Preview 255 fixes a bug where a failed modulepreload could block a later import() from retrying. WebKit previously marked the resource as...","image":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","thumbnailUrl":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","isAccessibleForFree":true,"articleSection":"CSS Wizardry","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Person","name":"Harry Roberts","url":"https://daily.dev/csswizardry","image":"https://media.daily.dev/image/upload/s--6zcMNpvC--/f_auto/v1755686282/avatars/avatar_Lw7jrTalrSeSbSjzuBQBH?_a=BAMClqZW0","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":230}},"commentCount":0,"discussionUrl":"https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,firefox,safari","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"CSS Wizardry","item":"https://daily.dev/sources/csswizardry"},{"@type":"ListItem","position":3,"name":"Web-Perf Wednesday 015 – Failed Modulepreloads Need to Recover"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/web-perf-wednesday-015-failed-modulepreloads-need-to-recover-xq47mcndq#faq","mainEntity":[{"@type":"Question","name":"Why does import() keep rejecting after a modulepreload request fails once, even after the resource becomes available again?","acceptedAnswer":{"@type":"Answer","text":"WebKit had a bug where a failed modulepreload left the resource marked as preloaded in its memory cache. A later import() of the same URL reused that failed cache entry and rejected immediately instead of making a new network request. Safari Technology Preview 255 fixes this by checking for the earlier error before taking the preload cache shortcut, so a failed resource gets reloaded and the next import can succeed. Teams shipping route-chunk preloads can track browser fixes like this one on daily.dev before trusting recovery code."}},{"@type":"Question","name":"Has Apple fixed the Safari modulepreload bug that blocks import() retries in stable Safari yet?","acceptedAnswer":{"@type":"Answer","text":"The fix has only shipped in Safari Technology Preview 255. The release notes for that preview do not state whether the change has reached stable Safari, so it should be treated as something to verify rather than a guarantee that existing recovery code can be removed. Developers tracking Safari release status for performance fixes can follow updates like this on daily.dev."}},{"@type":"Question","name":"How much faster does Firefox's built-in PDF viewer start up after the latest update?","acceptedAnswer":{"@type":"Answer","text":"Mozilla says Firefox's built-in PDF viewer now starts up to 45% faster on desktop. The announcement does not publish the test conditions behind that figure, so it should not be treated as a general browser or page-load performance improvement beyond PDF viewing specifically. Anyone benchmarking document-heavy user journeys can keep tabs on browser performance changes via daily.dev."}}]}
```

