Safari Technology Preview 241: Key Updates and Bug Fixes Explained

Welcome to a fresh look at the latest Safari Technology Preview, release 241. This update is available for download on macOS Tahoe and macOS Sequoia, and existing users can upgrade via System Settings under General → Software Update. Packed with significant WebKit improvements from build 309287 to 310186, this version focuses on fixing critical bugs in accessibility, animations, and CSS, while also introducing new capabilities like the stretch keyword for box sizing and stable support for CSS scroll anchoring. Below, we answer the most pressing questions developers and users have about this release.

What New CSS Features Does Safari Technology Preview 241 Introduce?

This release adds two major CSS capabilities. First, support for the stretch keyword in box-sizing properties (e.g., box-sizing: stretch;) is now included, aligning Safari with modern CSS specifications. Second, CSS scroll anchoring has been stabilized, meaning that when content above the viewport changes, the browser automatically adjusts the scroll position to keep the user’s focus area steady—a huge usability improvement for long documents or dynamic content. These features were both added with specific WebKit patches (309405 and 310113). Developers can now safely use these in their projects, knowing Safari handles them correctly.

Safari Technology Preview 241: Key Updates and Bug Fixes Explained
Source: webkit.org

What Accessibility Issues Were Fixed in This Release?

Four key accessibility bugs were resolved. Speech synthesis now works correctly: calling speechSynthesis.cancel() no longer clears utterances added by later speechSynthesis.speak() calls (see below). MathML table rows and cells now compute bounding boxes accurately, improving screen reader navigation. Combobox focus forwarding was fixed—assistive technologies can now interact with list items via aria-activedescendant. Additionally, aria-owns is now respected when the accessible name is derived from element content, ensuring proper labeling in complex widget structures.

How Did This Release Improve Animation Behavior?

A single but impactful animation bug was squashed: animation-fill-mode previously failed to apply viewport-based units (like vw or vh) correctly after the viewport was resized. For example, an element with animation-fill-mode: forwards and a width: 50vw at the end of the animation would not update its width after a window resize. Now, the fill mode properly recalculates those units, making responsive animations reliable.

What Major CSS Rendering Bugs Were Resolved?

Several frustrating rendering issues are now fixed. Line separator (U+2028) is rendered as a forced line break per the CSS spec. Outline offset inflation for outline: auto on macOS was corrected. Font-family serialization preserves quotes around family names that match CSS-wide keywords or generic families. A font is no longer downloaded if no character in the document falls within its unicode-range. Flexbox saw a fix for percentage-height images not shrinking correctly inside flex items. View Transition snapshots incorrectly used sRGB; they now respect the correct color space, preventing color shifts when non‑sRGB colors are present. And color: initial in dark mode now resolves to the proper default color instead of an incorrect value.

How Does This Update Affect Popovers and Anchor Positioning?

Two important fixes target popovers and anchor scoping. Previously, nested children of a popover element using position: absolute failed to render; that is now resolved. Also, an element with display: contents no longer prevents anchor-scope from establishing an anchor scope, so CSS anchor positioning works correctly even when the anchor is inside a contents-displayed container. These changes make popover and tooltip patterns much more robust in Safari.

What Performance and Reliability Improvements Were Made?

Performance received a boost with a fix for contain: layout. When all siblings created their own formatting context, forced layouts became significantly slower; this regression is now eliminated. Additionally, a long‑standing issue was fixed where changing color-scheme did not repaint the background of composited iframes. Media queries also see improved reliability—a regression that could cause them to fail to resolve correctly has been addressed. Finally, underlines splitting when a ruby base expanded due to long ruby text is no longer a problem, improving text rendering in East Asian typography.

How Was the Speech Synthesis Cancellation Bug Fixed?

In earlier versions, calling speechSynthesis.cancel() would not only stop the current utterance but also remove any utterances that had been queued by subsequent speechSynthesis.speak() calls. This made it impossible to implement proper speech queue management—pausing and later resuming speech would drop later items. The fix ensures that cancel() only affects utterances already spoken or currently speaking, leaving newly queued items intact. This change is crucial for accessibility tools and web‑based screen readers that rely on a predictable speech queue.

Recommended

Discover More

Securing Browser-Based Workflows: A Step-by-Step Guide to Closing Data Leakage GapsHow to Nominate a Fedora Mentor or Contributor for the 2026 Recognition ProgramHow a 1973 Book of BASIC Games Launched the Personal Computer Revolution – And Why It Still MattersMastering WhatsApp's Liquid Glass In-Chat Interface: A Step-by-Step GuideFedora Workstation 44 Launches with GNOME 50 and Enhanced Parental Controls