Safari Technology Preview 238 Delivers Performance Boosts and Web Standard Compliance
The latest iteration of Apple's developer-focused browser, Safari Technology Preview 238, is now available for macOS Tahoe and macOS Sequoia. Existing users can update via System Settings > General > Software Update. This release incorporates WebKit changes from revision 306596@main to 307618@main, bringing a host of new features, performance enhancements, and fixes that align Safari more closely with modern web standards.
Animations: Off-Main-Thread Acceleration
Threaded Time-Based Animation Resolution
A major highlight is the enabling of threaded time-based animation resolution. This allows accelerated time-based animations to run off the main thread, improving performance and synchronizing them with scroll-driven animations. Additionally, CSS Motion Path animations can now be accelerated, enabling smoother, more complex motion effects without burdening the main thread. (307252@main)

CSS Enhancements and Bug Fixes
New :open Pseudo-Class
Web developers gain a new tool with support for the :open pseudo-class, which matches form elements and other elements currently in an open state. This simplifies styling of dropdowns, dialogs, and similar UI components. (307295@main)
Scrollable Overflow Computation Fix
An issue where scrollable overflow for block containers did not account for padding-inline-end has been resolved. This fix aligns Safari with the CSS Overflow specification, ensuring consistent behavior across browsers. (307212@main)
Linear Gradients with Uniform Color Stops
Rendering of linear gradients that have all color stops at the same position has been fixed. Previously, such gradients could render incorrectly; now they display as expected. (306823@main)
Editing: Chinese Character Conversion
The Transformations submenu now includes menu items to convert editable text between Simplified and Traditional Chinese characters. This is a welcome addition for users and developers working with multilingual content. (306761@main)
Forms: Customizable <select> Element
Safari now enables the customizable <select> element. By using appearance: base-select, developers can apply custom styling and content to dropdown options, offering more design flexibility while maintaining native behavior. (307548@main)
Networking Security and Encoding Fixes
IDN Homograph Attack Mitigation
A critical security fix addresses a phishing vulnerability: the address bar could display an internationalized domain name (IDN) homograph as a visually identical legitimate Latin domain. This issue has been resolved to prevent potential spoofing attacks. (307005@main)
URL Percent-Encoding for Non-UTF-8 Character Sets
An issue where URL query percent-encoding was incorrect when using non-UTF-8 character encodings (such as iso-8859-2, windows-1250, and gbk) has been fixed. This ensures proper handling of international URLs. (306768@main)
Rendering: Table Performance Improvement
A performance issue causing a hang when rendering tables with a large number of rowspan="0" cells has been resolved. This fix enhances responsiveness in complex data tables. (306891@main)
SVG Specification Alignment
RadialGradient Default Values
Default values for the fx and fy attributes on SVGRadialGradientElement have been updated to 50% to align with the SVG2 specification. (306811@main)
Invalid viewBox Values Ignored
SVGAnimatedRect.baseVal now ignores invalid values set on the viewBox attribute (e.g., negative width or height), matching behavior in Firefox and Chrome. (307463@main)
Length Attribute Reset on Removal
SVG length attributes now reset to their default values when removed, rather than retaining previously set values. This fixes inconsistencies in dynamic attribute handling. (307585@main)
Scrolling: Scroll Anchoring Enabled
Scroll anchoring has been enabled, preventing visible jumps in scroll position when content is inserted or removed above the viewport. This results in a smoother user experience, especially on content-heavy pages. (307475@main)
Web API Additions
ReadableStream.from()
Support for ReadableStream.from() has been added, allowing creation of a ReadableStream from an async iterable or iterable. This streamlines working with streaming data in JavaScript. (306786@main)
ReadableStream Transfer via postMessage()
Developers can now transfer ReadableStream objects using postMessage(), enabling efficient sharing of stream data between windows or workers. (307068@main)
For the complete list of changes, refer to the official WebKit Blog or the Safari Technology Preview page.