<!--
{
  "documentType" : "article",
  "framework" : "Safari Technology Preview Release Notes",
  "identifier" : "/documentation/Safari-Technology-Preview-Release-Notes/stp-release-49",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Safari Technology Preview 49 Release Notes"
}
-->

# Safari Technology Preview 49 Release Notes

Preview the latest web technology updates including: Service Workers, Fetch, Intelligent Tracking Prevention, CSS, Rendering, SVG, JavaScript, Web Inspector, Media, Storage, Security, Accessibility, and bug fixes.

## Overview

[Safari Technology Preview](https://webkit.org/blog/6017/introducing-safari-technology-preview/) Release 49 is now [available for download](https://webkit.org/downloads/) for macOS Sierra and macOS High Sierra. If you already have Safari Technology Preview installed, you can update from the Mac App Store’s Updates tab. This release covers WebKit revisions [227071-227873](https://trac.webkit.org/log?stop_rev=227071&rev=227873&limit=999).

### Service Workers

- Changed Service Workers restored from persistent storage to have “activated” state ([r227153](https://trac.webkit.org/changeset/227153/webkit/))
- Changed to terminate Service Workers that are unresponsive ([r227174](https://trac.webkit.org/changeset/227174/webkit/))
- Prevented Service Worker registrations restored from disk from being reused when the JavaScript calls `register()` again ([r227220](https://trac.webkit.org/changeset/227220/webkit/))

### Fetch

- Added support for ConsumeData callback when chunk data is received for Fetch response ([r227870](https://trac.webkit.org/changeset/227870/webkit/))
- Changed opaque being-loaded responses to clone their body ([r227581](https://trac.webkit.org/changeset/227581/webkit/))
- Filtered out Fetch headers from an opaque response ([r227339](https://trac.webkit.org/changeset/227339/webkit/))
- Fixed Fetch redirect to be compatible with “no-cors” mode ([r227270](https://trac.webkit.org/changeset/227270/webkit/))
- Fixed Fetch response to copy its URL from the request if it is null ([r227531](https://trac.webkit.org/changeset/227531/webkit/))
- Set integrity Fetch options for loading scripts and CSS ([r227612](https://trac.webkit.org/changeset/227612/webkit/))

### Intelligent Tracking Prevention

- Blocked cookies for prevalent resources without user interaction ([r227103](https://trac.webkit.org/changeset/227103/webkit/))
- Ensured ServiceWorker loading and requests are correctly cleared by Intelligent Tracking Prevention ([r227358](https://trac.webkit.org/changeset/227358/webkit/))
- Introduced debug mode as experimental feature ([r227762](https://trac.webkit.org/changeset/227762/webkit/))

### CSS

- Added support for percentages in `column-gap` ([r227676](https://trac.webkit.org/changeset/227676/webkit/))
- Added support for parsing `calc()` in CSS media queries ([r227295](https://trac.webkit.org/changeset/227295/webkit/))
- Adopted CSS WG recommended syntax changes to remove `"left"` and `"right"`  in block/cross-axis alignment properties ([r227432](https://trac.webkit.org/changeset/227432/webkit/))
- Adopted CSS WG recommended syntax changes requiring `overflow-position` to precede
  `self-position` or `content-position` in the `css-align` property ([r227297](https://trac.webkit.org/changeset/227297/webkit/))
- Adopted support for a recent specification change removing `"baseline"` as a valid value for the ‘justify-content’ property ([r227786](https://trac.webkit.org/changeset/227786/webkit/))
- Fixed computing the scroll position of `position:fixed` elements when the scale is greater than 1 ([r227430](https://trac.webkit.org/changeset/227430/webkit/))
- Preserved original image and picture element colors when invert colors is on ([r227219](https://trac.webkit.org/changeset/227219/webkit/))

### Rendering

- Fixed the overflow of formulas for display mathematics ([r227722](https://trac.webkit.org/changeset/227722/webkit/))
- Optimized building the non-fast scrollable region with multiple iframes ([r227396](https://trac.webkit.org/changeset/227396/webkit/))

### SVG

- Fixed the `feMorphology` SVG filter to allow the radius on one axis to be 0 and still apply the effect ([r227440](https://trac.webkit.org/changeset/227440/webkit/))

### JavaScript

- Implemented `trimStart` and `trimEnd` ([r227779](https://trac.webkit.org/changeset/227779/webkit/))
- Relaxed line terminators in String to make JSON subset of JavaScript ([r227775](https://trac.webkit.org/changeset/227775/webkit/))

### Web Inspector

- Changed clicking on a path component that has no siblings to now select it ([r227108](https://trac.webkit.org/changeset/227108/webkit/))
- Changed the Layers tab to use a statically positioned layer details panel instead of a moving popover ([r227244](https://trac.webkit.org/changeset/227244/webkit/))
- Changed the Styles sidebar to always display CSS rules left-to-right, even when Web Inspector uses RTL layout ([r227228](https://trac.webkit.org/changeset/227228/webkit/))
- Fixed an issue that caused the Canvas Tab to display multiple “waiting for frames” messages ([r227243](https://trac.webkit.org/changeset/227243/webkit/))
- Fixed an issue that cause the record button on a Canvas Tab canvas to sometimes not appear on hover ([r227155](https://trac.webkit.org/changeset/227155/webkit/))
- Fixed a bug that caused the Network Tab sort indicator to hide when a sorted column is hidden and re-shown ([r227667](https://trac.webkit.org/changeset/227667/webkit/))
- Fixed the Network Tab’s table columns to no longer shake when scrolling at non-default zoom levels ([r227463](https://trac.webkit.org/changeset/227463/webkit/))
- Fixed a data corruption issue triggered by updating values in the Styles Sidebar quickly ([r227370](https://trac.webkit.org/changeset/227370/webkit/))
- Fixed the Styles sidebar to stop throwing exceptions when tabbing past commented out properties ([r227232](https://trac.webkit.org/changeset/227232/webkit/))
- Fixed the Resource Tab detail sidebar to wrap super long URLs better ([r227072](https://trac.webkit.org/changeset/227072/webkit/))
- Fixed Window resizing when the Web Inspector is detached from the browser ([r227429](https://trac.webkit.org/changeset/227429/webkit/))
- Prevented showing “Displayed Columns” when right-clicking in a table header if all columns are required ([r227652](https://trac.webkit.org/changeset/227652/webkit/))
- Improved the behavior of the Cookies table in the Network Tab at narrow widths ([r227666](https://trac.webkit.org/changeset/227666/webkit/))
- Improved Navigation Bar layout at narrow heights ([r227707](https://trac.webkit.org/changeset/227707/webkit/))

### Media

- Added support of multi keys from different sessions in CDMinstanceClearKey ([r227409](https://trac.webkit.org/changeset/227409/webkit/))
- Changed to resign the NowPlaying status when no media element is eligible ([r227373](https://trac.webkit.org/changeset/227373/webkit/), [r227457](https://trac.webkit.org/changeset/227457/webkit/))
- Changed to use existing RGB colorspace instead of creating a new one ([r227094](https://trac.webkit.org/changeset/227094/webkit/))
- Fixed cues for WebVTT served via HLS ([r227121](https://trac.webkit.org/changeset/227121/webkit/))

### Storage

- Added a deprecation warning to the Console when AppCache is used ([r227225](https://trac.webkit.org/changeset/227225/webkit/))
- Added console messages for cache storage errors like Quota ([r227245](https://trac.webkit.org/changeset/227245/webkit/))
- Changed to not use the storage process when loading a main resource if there is no Service Worker registered ([r227161](https://trac.webkit.org/changeset/227161/webkit/))
- Changed to not use the storage process when registering a Service Worker client if there is no Service Worker registered ([r227242](https://trac.webkit.org/changeset/227242/webkit/))
- Ensured Cache API will resolve caches.open promises in the same order as called ([r227768](https://trac.webkit.org/changeset/227768/webkit/))
- Fixed DOMCache data not getting properly removed when clearing data for a given origin ([r227269](https://trac.webkit.org/changeset/227269/webkit/))
- Increased default cache storage quota to 50MB ([r227298](https://trac.webkit.org/changeset/227298/webkit/))

### Security

- Added a policy check for targeted windows when navigating to a JavaScript URL ([r227567](https://trac.webkit.org/changeset/227567/webkit/))
- Added CSP post checks for Service Worker responses ([r227680](https://trac.webkit.org/changeset/227680/webkit/))
- Disabled access to Service Workers and the Cache API in sandboxed frames without the `allow-same-origin` flag ([r227639](https://trac.webkit.org/changeset/227639/webkit/))
- Updated `frame-ancestor` directive to match Content Security Policy Level 3 ([r227238](https://trac.webkit.org/changeset/227238/webkit/))

### Accessibility

- Added support for ARIA active-descendant ([r227144](https://trac.webkit.org/changeset/227144/webkit/))
- Added a way for VoiceOver to uniquely identify a web session ([r227526](https://trac.webkit.org/changeset/227526/webkit/))
- Implemented support for Graphics ARIA roles: graphics-document, graphics-object,
  and graphics-symbol ([r227344](https://trac.webkit.org/changeset/227344/webkit/))
- Prevented SVG AAM mapping from overriding ARIA role attribute in the case of SVG root ([r227536](https://trac.webkit.org/changeset/227536/webkit/))

### Bug Fixes

- Fixed the GitHub login at [forums.swift.org](http://forums.swift.org/) by ensuring redirections for subresource loads can change Service Worker controllers ([r227348](https://trac.webkit.org/changeset/227348/webkit/))
- Fixed blob conversion and sanitization for Microsoft Word for Mac 2011 ([r227351](https://trac.webkit.org/changeset/227351/webkit/))
- Prevented a disallowed user-installed font from being used if its PostScript name is specified ([r227776](https://trac.webkit.org/changeset/227776/webkit/))

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)