Skip to content

Releases: RaspberryPiFoundation/blockly

blockly-v13.0.0

15 Jun 17:13

Choose a tag to compare

Hello Block Builders! We have a very exciting release for you with v13.0.0! Highlights:

  • Blockly is now both keyboard-navigable and screenreader-accessible by default! You can read more about our approach here. If you have custom blocks and/or fields, you'll want to update the aria roles and labels for those as described here. See below for more resources.
  • If you were using the @blockly/keyboard-navigation plugin, you should uninstall it at the same time that you update to v13! Keyboard navigation is enabled by default.
  • As usual, each of the breaking changes PRs linked below contains instructions for how to know if a change affects you and what to do if it does. Many of these breaking changes are quite niche so for many of you it should not be a huge lift to update. A big category of these is the addition of new keyboard navigation shortcuts. If these conflict with your existing shortcuts, you'll need to update one or the other. We recommend you keep our default keyboard navigation shortcuts if at all possible, to maintain parity with other block-based applications. Get in touch on the forum if you have questions!
  • We updated the default renderer to thrasos. If you explicitly specify your renderer (as you probably should) then this does not affect you, but if not you may notice your blocks look very slightly different. Thrasos is more performant than geras so we recommend you keep using it if possible.
  • We've added a new sound for when a block is dropped on the workspace. Our user testing validated that the new sound helped users understand when a new block is placed, in addition to the existing sound effect for when blocks are connected or disconnected. We know new sounds can be jarring but give it a chance :)
  • We also updated the default location of sounds to blockly.com/media. Best practice is to host the sounds yourself, so if you're doing that be sure to also host the new sound. Or you can replace it with your own file if you prefer.
  • The oldest browser we now support is Safari 15.4. This version is already no longer receiving security updates from Apple so we believe most applications should already have a minimum supported version newer than this. If this is an issue for you, you can polyfill the css :has selector and continue supporting older versions.
  • Plugins are coming soon - we'll send another email when they're released. New this cycle is that all plugins will receive the v13.0.0 version number so it will be easy to tell how to update your plugins when required.

More accessibility resources:

  • Be on the lookout for our Blockly Summit 2026 talks on YouTube which had tons of relevant talks! We'll post an update on the forum when these are live.
  • Best practices for creating accessible applications
  • How to audit your block-based app for conformance with accessibility requirements

What's Changed

Breaking changes 🛠

  • fix!: Make ISelectable.workspace an instance of WorkspaceSvg by @gonfunko in #9534
  • fix!: Remove event dependencies on XML by @gonfunko in #9536
  • feat!: Use box-sizing: border-box by default by @gonfunko in #9556
  • fix!: Use SVG icon assets by @gonfunko in #9569
  • refactor!: Deprecate Block.getVars() by @gonfunko in #9574
  • fix!: Normalize Zelos connection indicators by @gonfunko in #9565
  • feat!: Allow moving blocks, comments and bubbles using the keyboard by @gonfunko in #9593
  • refactor!: Move responsibility for block creation out of flyouts by @gonfunko in #9610
  • feat!: Allow using Blockly in web components/shadow DOM by @gonfunko in #9611
  • feat!: Add support for keyboard navigation by @gonfunko in #9634
  • fix!: Fix types on BlockSvg connections by @gonfunko in #9669
  • feat!: announce toasts via shared ARIA live region by @mikeharv in #9672
  • fix!: Improve keyboard navigation of icons and bubbles by @gonfunko in #9737
  • feat: Add a sound effect when dropping top-level items on the workspace by @gonfunko in #9784
  • feat!: Added additional keyboard shortcuts for context menu by @lizschwab in #9845
  • fix!: set full block field status explicitly by @maribethb in #9840
  • fix!: Flyout follows toolbox in DOM by @mikeharv in #9849
  • feat!: Improve context announcement keyboard shortcuts by @gonfunko in #9863
  • fix!: update default media location by @maribethb in #9870
  • feat!: Add keyboard shortcut to toggle screenreader mode by @gonfunko in #9869
  • feat!: add shortcuts to navigate between headings in the flyout by @maribethb in #9874
  • fix!: remove deprecated APIs by @maribethb in #9938
  • feat!: update the default renderer to thrasos by @maribethb in #9976

New features ✨

  • feat: Add a method to play beep tones by @gonfunko in #9612
  • feat: Add keyboard shortcut to focus the workspace by @gonfunko in #9615
  • feat: Move mode for stacks of blocks by @mikeharv in #9630
  • feat: Beep when attempting constrained move on top-level block by @gonfunko in #9635
  • feat: Add keyboard shortcut for disconnecting the selected block by @gonfunko in #9650
  • feat: Stop on workspace during constrained move by @mikeharv in #9649
  • feat: aria live region for announcements by @mikeharv in #9653
  • feat: Update CSS for keyboard navigation by @gonfunko in #9674
  • feat: Add a JSON Block definition interface by @heliacer in #9613
  • feat: Add keyboard shortcuts to navigate between stacks by @gonfunko in #9678
  • feat: i shortcut on workspace gives overview by @mikeharv in #9677
  • feat: Add aria APIs to Field base class by @mikeharv in #9683
  • feat: aria utility additions / improvements by @mikeharv in #9690
  • feat: Add keyboard shortcut to perform an action on the currently focused element by @gonfunko in #9673
  • feat: Add keyboard shortcut to clean up the workspace by @gonfunko in #9728
  • feat: Add keyboard shortcut for duplicating blocks and workspace comments by @gonfunko in #9727
  • feat: Add basic support for generating ARIA labels and roles for blocks by @gonfunko in #9696
  • feat: Screenreader announcements for move mode by @mikeharv in #9731
  • feat: Update zelos path object to allowlist attributes by @lizschwab in #9742
  • feat: add display text to shortcuts by @maribethb in #9743
  • feat: FieldInput ARIA by @mikeharv in #9744
  • feat: Added keyboard shortcut for displaying tooltip by @lizschwab in #9755
  • feat: FieldDropdown ARIA by @mikeharv in #9766
  • feat: ARIA for other field classes by @mikeharv in #9772
  • feat: make flyouts and workspace labels properly accessible by @maribethb in #9774
  • feat: Play delete sound when workspace comments are deleted by @gonfunko in #9776
  • feat: allow setting custom role description for blocks by @maribethb in #9777
  • feat: Bubble ARIA methods by @mikeharv in #9783
  • feat: Added support for custom input ARIA labels by @lizschwab in #9789
  • feat: ...
Read more

blockly-v13.0.0-beta.9

10 Jun 20:48

Choose a tag to compare

Pre-release

What's Changed

New features ✨

  • feat: add docs as conventional commit option by @zspriggs in #9970
  • feat: Reduce build size by enabling assume_function_wrapper build flag by @gonfunko in #9921
  • feat: add block role description to verbose block labels by @mikeharv in #9960

Bug fixes 🐛

Full Changelog: blockly-v13.0.0-beta.8...blockly-v13.0.0-beta.9

blockly-v13.0.0-beta.8

29 May 20:17

Choose a tag to compare

Pre-release

What's Changed

Bug fixes 🐛

Full Changelog: blockly-v13.0.0-beta.7...blockly-v13.0.0-beta.8

blockly-v13.0.0-beta.7

26 May 23:03

Choose a tag to compare

Pre-release

What's Changed

Breaking changes 🛠

New features ✨

Bug fixes 🐛

  • fix: Improve narration of modifier keys by @gonfunko in #9926
  • fix: Fix bug that caused an incorrect count of inputs on blocks when generating ARIA labels by @gonfunko in #9927
  • fix: Do not use custom input labels for connection positions and move start by @mikeharv in #9932
  • fix: Avoid issue with toolbox search plugin by @gonfunko in #9934
  • fix: typo in unregisterWorkspace by @maribethb in #9936
  • fix: dont show workspace count on apple devices by @maribethb in #9939
  • fix: dont show input number in connection labels by @maribethb in #9940

Full Changelog: blockly-v13.0.0-beta.6...blockly-v13.0.0-beta.7

blockly-v13.0.0-beta.6

21 May 21:24

Choose a tag to compare

Pre-release

What's Changed

New features ✨

  • feat: allow chaining with setAriaLabelProvider by @mikeharv in #9913
  • feat: Add custom input labels to built in blocks by @mikeharv in #9902
  • feat: Announce usage hints to screenreaders on initial workspace focus by @gonfunko in #9871

Bug fixes 🐛

  • fix(blocks): use static tooltip for controls_ifelse block by @sheitabrk in #9897
  • fix: Fix visual glitch when dragging blocks by @gonfunko in #9901
  • fix: Reinstate "moving on workspace" announcements by @microbit-robert in #9904
  • fix: CSS back to <style> for Safari/cascade reasons by @microbit-matt-hillsdon in #9908
  • fix: replace 'command' with 'statement' for block descriptions by @maribethb in #9912
  • fix: Don't prepend "begin stack" to blocks inserted from the flyout by @microbit-robert in #9911
  • fix: Block labels should not use custom input labels (nested inputs) by @microbit-robert in #9916
  • fix: Fix bug that caused blocks to skip valid destinations when moving with looping disabled by @gonfunko in #9894
  • fix: Fix resolution of parent toolbox category for block descriptions by @gonfunko in #9891
  • fix: Improve initial block placement by @gonfunko in #9903
  • fix: Correctly position blocks dragged by the mouse from the flyout by @gonfunko in #9919
  • fix: Fix unexpected toast when committing a move with Space by @gonfunko in #9920

New Contributors

Full Changelog: blockly-v13.0.0-beta.5...blockly-v13.0.0-beta.6

blockly-v13.0.0-beta.5

18 May 21:04

Choose a tag to compare

Pre-release

What's Changed

Breaking changes 🛠

  • feat!: add shortcuts to navigate between headings in the flyout by @maribethb in #9874

New features ✨

  • feat: Add custom ARIA labels to built-in block dropdown field options by @mikeharv in #9880
  • feat: Adjacent label fields are combined when composing ARIA labels by @lizschwab in #9873

Bug fixes 🐛

  • fix: Fix package-lock.json for CI by @gonfunko in #9875
  • fix: Block labels should not use custom input labels by @mikeharv in #9886
  • fix: Beep when attempting to move past a dead end by @gonfunko in #9890
  • fix: Fix undefined message references by @gonfunko in #9888
  • fix: Don't open the devtools in Firefox when toggling screenreader mode by @gonfunko in #9892

Other changes

Full Changelog: blockly-v13.0.0-beta.4...blockly-v13.0.0-beta.5

blockly-v13.0.0-beta.4

14 May 20:19

Choose a tag to compare

Pre-release

What's Changed

Breaking changes 🛠

New features ✨

Bug fixes 🐛

  • fix: Added comma between labels for fields when composing ARIA label strings by @lizschwab in #9812
  • fix: Avoid locking up the test suite by @gonfunko in #9821
  • fix: Adjust keyboard navigation of external inputs by @gonfunko in #9820
  • fix: Fix bug that could cause unintend block movements by @gonfunko in #9818
  • fix: Improve focus management on block deletion by @gonfunko in #9831
  • fix: Mark the WidgetDiv and DropDownDiv as owned by the workspace by @gonfunko in #9825
  • fix: Redo move templates by @mikeharv in #9822
  • fix: Improve ARIA fallback generation for HTML-based menu items by @gonfunko in #9827
  • fix: Update workspace ARIA label on focus by @gonfunko in #9841
  • fix: Improve display of move-related hints by @gonfunko in #9843
  • fix: Don't suppress passive focus on blocks by @gonfunko in #9839
  • fix: improve block labels and aria roles by @maribethb in #9834
  • fix: Improve display of workspace focus rings by @gonfunko in #9848
  • fix: Fix bug that prevented display of move indicators in mutator workspaces by @gonfunko in #9856
  • fix: Display appropriate help hint for navigating blocks in RTL by @gonfunko in #9857
  • fix: Fix positioning of keyboard-driven workspace context menu in RTL by @gonfunko in #9858
  • fix: Fix bug that could cause blocks to be inadvertently deleted by @gonfunko in #9859
  • fix: always store initial drag connections by @mikeharv in #9851
  • fix: skip empty label fields and dummy/end row inputs for move announcements by @mikeharv in #9847
  • fix: Improve display of focus rings on workspace controls by @gonfunko in #9860
  • fix: Block-level ARIA labels no longer include clickable image descri… by @lizschwab in #9844
  • fix: labels for multi-statement blocks by @mikeharv in #9868

Full Changelog: blockly-v13.0.0-beta.3...blockly-v13.0.0-beta.4

blockly-v13.0.0-beta.3

04 May 20:15

Choose a tag to compare

Pre-release

What's Changed

New features ✨

Full Changelog: blockly-v13.0.0-beta.2...blockly-v13.0.0-beta.3

blockly-v13.0.0-beta.2

30 Apr 22:08
b24f23f

Choose a tag to compare

Pre-release

What's Changed

New features ✨

Bug fixes 🐛

  • fix: Make the undo/redo API more ergonomic by @gonfunko in #9573
  • fix: Fix bug that could cause focus to be lost in Chrome when dismissing a dropdown by @gonfunko in #9763
  • fix: Don't focus newly created variable blocks when not using keyboard navigation by @gonfunko in #9764
  • fix: Disable some shortcuts in the flyout by @gonfunko in #9765
  • fix: Remove unneeded scrollbars on contextual menus by @gonfunko in #9771
  • fix: Fix bug that caused focus rings to be inverted in RTL Zelos by @gonfunko in #9767
  • fix: Fix Escape in toolboxes and flyouts by @gonfunko in #9770
  • fix: Prevent errors when mixing keyboard/mouse input in the toolbox/flyout by @gonfunko in #9773
  • fix: Make trashcan and zoom controls accessible by @gonfunko in #9768
  • fix: Make live region coalesce messages by @gonfunko in #9778
  • fix: Fix bug that could cause focus to be lost when deleting a block by @gonfunko in #9779

Other changes

Full Changelog: blockly-v13.0.0-beta.1...blockly-v13.0.0-beta.2

blockly-v13.0.0-beta.1

23 Apr 19:29

Choose a tag to compare

Pre-release

What's Changed (since v13.0.0-beta.0)

Breaking changes 🛠

  • fix!: Improve keyboard navigation of icons and bubbles by @gonfunko in #9737

New features ✨

  • feat: Add keyboard shortcut to clean up the workspace by @gonfunko in #9728
  • feat: Add keyboard shortcut for duplicating blocks and workspace comments by @gonfunko in #9727
  • feat: Add basic support for generating ARIA labels and roles for blocks by @gonfunko in #9696
  • feat: Screenreader announcements for move mode by @mikeharv in #9731
  • feat: Update zelos path object to allowlist attributes by @lizschwab in #9742
  • feat: add display text to shortcuts by @maribethb in #9743
  • feat: FieldInput ARIA by @mikeharv in #9744

Bug fixes 🐛

  • fix: Add default aria role to svg and group elements by @lizschwab in #9697
  • fix: Fix positioning of move marker on blocks by @gonfunko in #9722
  • fix: Improve accuracy of block navigability detection by @gonfunko in #9725
  • fix: Fix bug that caused blocks inserted via Enter to not attach by @gonfunko in #9699
  • fix: Inhibit keyboard navigation shortcuts when the dropdown or widget divs are open by @gonfunko in #9724
  • fix: Increase contrast of active tree focus ring color by @gonfunko in #9726
  • fix: Fix bug that caused blocks in flyout to disappear on click in Chrome by @gonfunko in #9729
  • fix: Field text hidden from ARIA by @lizschwab in #9734
  • fix: Improve navigation and movement looping behavior by @gonfunko in #9732
  • fix: Fix dropdowndiv animations by @gonfunko in #9733
  • fix: use correct key names for key codes by @maribethb in #9746
  • fix: Don't close the flyout when creating a variable using keyboard nav by @gonfunko in #9745
  • fix: set role application and fix block readouts by @maribethb in #9747
  • fix: dont activate base delete areas for keyboard moves by @maribethb in #9748
  • fix: Improve focus handling when clicking outside injection div by @gonfunko in #9749

Reverted changes ⎌

Full Changelog: blockly-v13.0.0-beta.0...blockly-v13.0.0-beta.1