Skip to content

Fix crashes from the October 9 error reports - #134

Merged
Mistium merged 1 commit into
developfrom
oct10-error-fixes
Oct 9, 2026
Merged

Mistium merged 1 commit into
developfrom
oct10-error-fixes

Conversation

@Mistium

@Mistium Mistium commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Fixes from the October 9 error report export (60 open reports). Every report came from a build that already included #129, so these are new problems rather than repeats.

What changed

  • Safari chunk failures (5 reports, iPad). Safari reports a blocked dynamic import as "Cross-origin script load denied by Cross-Origin Resource Sharing policy." That message was not recognised as a chunk load error, so community pages crashed without a retry. All five reports came from iPads within 13 minutes, which looks like a school network filter. These failures now retry, then reload once. A page that still fails shows a "could not load" screen. Its Try again now really starts a new import (before, React.lazy cached the failure), and the failure is not reported as a crash.
  • Edge removeChild crashes (8 reports, all Edge 154). index.ejs and embed.ejs had <meta name="google" value="notranslate">, which browsers ignore. It now uses content=, and the <html> element has translate="no", so the editor and embed are no longer machine-translated under React. The community site, which has a separate template, can still be translated.
  • DOMElementRenderer only removes the stage canvas if it still contains it (2 of those 8 reports).
  • Sprite list: SortableHOC no longer crashes with "Cannot destructure property 'top' of 'this.containerBox'" when it mounts in the middle of a drag.
  • No WebGL: restore points now save with a blank thumbnail instead of failing every time, so the leftover timer no longer throws reading 'draw'. The gamepad addon also stops early instead of throwing reading 'canvas'.
  • Missing extensions (4 reports, embed): a project that needs an extension MistWarp does not have, such as p7videosharing from another Scratch mod, now gets a load error that names the extension instead of the crash screen. Embeds no longer offer "Start a new project", which would open the editor inside the project page. The load error screen now also fills the embed.

Engine fixes from the same export are in MistWarp/scratch-blocks and MistWarp/scratch-paint PRs on the oct10-error-fixes branch.

Treated as noise, not changed: third-party extension errors (Shaders.js, roturVoice Advanced.js, Canvas.js, data: URL extensions, the Lily ClonesPlus.js load, and lab/text.js reading the null that makeClone returns at the clone limit, which TurboWarp does too), maze recursion, appVersion: dev, and the stale chunk on the ux-bug-pass-oct preview.

Screenshots

Editor opening a project that needs a missing extension:
Missing extension in the editor

The same screen in the dark theme:
Missing extension in the editor, dark theme

The same project in an embed, with no "Start a new project" link:
Missing extension in an embed

A community page whose code chunk was blocked:
Community page could not load

Testing

  • New unit tests for the sortable mount, DOMElementRenderer unmount, the missing-extension screen, the embed screen and the Safari message. The sortable test fails without the fix with the reported error.
  • Full CI steps run locally: lint, both i18n checks, check:community-css, deps:check, test:unit:ci (2453 passed), build:deploy and validate-deploy.

Preview: https://oct10-error-fixes.scratch-gui.pages.dev/editor (for the missing-extension screen, open the editor with ?project_url= pointing at a project.json whose extensions lists an unknown ID).

- Treat Safari's "Cross-origin script load denied" as a chunk load failure,
  so page imports blocked by a network filter retry and reload. Community
  pages that still fail show a "could not load" screen with a working Try
  again, and are not reported as crashes.
- Ask browsers not to machine-translate the editor and embed. The old
  meta tag used value= instead of content=, and Edge's translator kept
  crashing React with removeChild errors.
- DOMElementRenderer only removes its element if it still contains it.
- The sprite list no longer crashes when it mounts in the middle of a drag.
- Restore points save with a blank thumbnail when there is no renderer
  (no WebGL), instead of failing and throwing from a leftover timer.
- The gamepad addon stops early when there is no renderer.
- A project that needs an extension MistWarp does not have shows a clear
  load error naming the extension, instead of the crash screen. Embeds
  no longer offer "Start a new project" inside the project page.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying scratch-gui with  Cloudflare Pages  Cloudflare Pages

Latest commit: 8033094
Status: ✅  Deploy successful!
Preview URL: https://f7a4e570.scratch-gui.pages.dev
Branch Preview URL: https://oct10-error-fixes.scratch-gui.pages.dev

View logs

@Mistium
Mistium merged commit fed151e into develop Oct 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant