Skip to content

Conversation

@gonfunko
Copy link
Contributor

@gonfunko gonfunko commented Jan 9, 2026

The basics

The details

Resolves

Proposed Changes

This PR modernizes Blockly's audio playback to remove decade-old hacks:

  • Preloading has been improved by fetching the audio file when it is loaded and storing its bytes, rather than creating HTMLAudioElement instances and playing them on page load to try to trick the browser into fetching and caching them. Because we're no longer relying on playing HTMLAudioElements, various hacks to do this in response to user interaction in order to prevent the browser suppressing it are also unnecessary. This incidentally fixes several situations whereby the preloading/playback could be heard on pageload, because we no longer play sounds until we actually intend to play them.

  • The OGG and WAV files have been removed; MP3 is supported by all modern browsers, so these fallbacks were just wasting bandwidth.

  • Rather than creating and cloning audio tags based on useragent, we now just use the WebAudio API to play sounds.

Testing

I manually verified that block connection, disconnection and delete sounds play properly on Safari, Mobile Safari (in the simulator), Chrome and Firefox. I also verified that bulk deletion after e.g. "Scatter" in the playground plays lots of delete sounds in quick succession properly.

@gonfunko gonfunko requested a review from a team as a code owner January 9, 2026 19:34
@gonfunko gonfunko requested a review from BenHenning January 9, 2026 19:34
@github-actions github-actions bot added the PR: fix Fixes a bug label Jan 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: fix Fixes a bug

Projects

None yet

3 participants