10

Release Notes - Safari Technology Preview - Safari - Apple Developer

 2 years ago
source link: https://developer.apple.com/safari/technology-preview/release-notes/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Safari Technology Preview Release Notes

Release 135

Note: Tab Groups do not sync in this release.

Web Inspector and Web Driver

  • Fixed "testForLinkLabels" Accessibility audit to ignore anchors if aria-hidden (r284986)
  • Added support for the acceptInsecureCerts capability (r285164)
  • Media queries affect Cascade Layer order (r284859)
  • Enabled accent-color by default (r284634)
  • Added support for small svw/svh/svmin/svmax, large lvw/lvh/lvmin/lvmax, and dynamic dvw/dvh/dvmin/dvmax viewport units (r284628)
  • Added flex-basis: content support (r284440)
  • Added support for contain: style for counters (r284642, r284755)
  • Added support for ::before and ::after pseudo elements after ::slotted (r284973)
  • Added support for more CSS properties for ::marker (r284519)
  • Allowed :is and :where after all pseudo elements (r285054)
  • Made :-webkit-any() a synonym of :is() (r285032)
  • Fixed ::part(foo):hover (r284865)
  • Serialized :part() argument as identifier (r284863)
  • Fixed :host invalidation when combined with pseudo classes in descendant position (r285100)
  • Prevented clamping flex base size with min-height, max-height, min-width, and max-width (r284397)
  • Fixed sizing of orthogonal elements with percentage margins (r284773)
  • Fixed -webkit-background-clip: text to paint correctly for inline box spanning multiple lines (r284380)
  • Fixed box-shadow and text-shadow to yield float values while interpolating (r284437)
  • Fixed CSS serialization affecting grid-auto-flow (r284876)
  • Fixed percentages on orthogonal replaced children (r284548)
  • Fixed the border-radius value from .style to be readable when it includes a var() (r285015)
  • Fixed opacity to flatten when combined with transform-style: preserve-3d (r285021)

Web API

  • Enabled lazy image loading by default (r284995)
  • Added support for rel="noopener/noreferrer" on <form> elements (r284749)
  • Exposed MediaCapabilities to Workers (r284443)
  • Fixed anchor.relList.supports("opener") to return true (r284745)
  • Fixed changing the src attribute of the <img> element inside an ImageDocument to trigger a load (r284901)
  • Fixed document.open() and friends to use the correct document as a source for reset document's URL (r284758)
  • Fixed form navigations with target="_blank" to not have an opener (r284821)
  • Fixed form submission to be cancelled if the form gets detached from inside the formdata event handler (r284660)
  • Fixed JavaScript URL result to be treated as UTF-8 bytes (r284934)
  • Fixed Origin of opaque blob: URLs to be null instead of an empty string (r284478)
  • Fixed selection extend() with no ranges to trigger an exception (r285084)
  • Fixed the intrinsic size of a picture image inside a template (r284667)
  • Updated appearance of <datalist> indicator (r284626)

Scrolling

  • Fixed misplaced position: fixed content with async-scrollable iframes when switching tabs (r284738)

Rendering

  • Ensured CanvasRenderingContext2D.drawImage(video) uses the right color space (r284439)

WebAuthn

  • Changed to obtain consent to create a new credential when the platform authenticator is in excludedCredentials. This improves compliance with the WebAuthn spec (Step 3.1 of makeCredential). (r284413)

Media

  • Added support for requestVideoFrameCallback API for MediaStreamTrack-based backends (r284528)
  • Fixed video appearing blank with only audio playing if video element isn't appended to the DOM tree (r284741)
  • Updated WebM with invalid size to fail to load with error (r284434)

WebRTC

  • Decreased WebRTC latency by pulling data more often (r284860)
  • Changed to fallback to SW decoder in case of VP9-SVC (r284523)
  • Changed to always set the color space for incoming H.264/265 streams (r284433)
  • Ensured synchronized rendering of incoming audio tracks (r285027)
  • Fixed latent audio over peer connections when changing the output (r284674)

WebGL

  • Fixed an issue where high-performance WebGL wasn't getting the correct GPU (r284669)

App Extensions

  • Fixed an issue where App Extension toolbar items would not remember their position or stay removed from the toolbar

Web Extensions

  • Fixed an issue where browser.storage.sync entries were saved into the browser.storage.local storage area. If unable to locate sync storage entries, check in the local storage area and do a one-time migration to the sync storage area

Release 134

Note: Tab Groups do not sync in this release.

Web Inspector

  • Graphics Tab
    • Added showing color space for canvases in the Graphics tab on the overview cards (r283572)
  • Styles Tab
    • Changed to format style declarations after editing (r283723)
  • Other
    • Added context menu support for the tab content view (r283859, r283921)
  • Unprefixed -webkit-appearance and added support for the auto value (r283858, r284098)
  • Added support for the x resolution unit outside of image-set (r282396)
  • Added support for text-decoration-skip-ink (r282397)
  • Changed to consider overflow-wrap: anywhere when calculating min-content intrinsic sizes (r283493)
  • Fixed computed style for transform-origin on SVG boxes (r282379)
  • Fixed overflow to be computed with the actual logical bottom in CSS Grid (r282463)
  • Fixed RTL for an out of flow child in CSS Grid (r282340)
  • Fixed SVG linear gradients getting drawn incorrectly sometimes (r282443)
  • Fixed radial-gradient to accept calc() values that combine length and percent (r283561)
  • Implemented exp, and log functions in calc functions (r282795)
  • Implemented allowing NaN, infinity, and -infinity in calc (r283434)
  • Implemented atan, acos, asin, atan2 in calc functions (r283013)
  • Updated CSS Cascade Layers with recent spec change: unlayered styles are highest priority (r284182)
  • Updated transform-origin to not accept four lengths (r282359)

Fonts

  • Enabled font palette support:
    • Added parsing support for font-palette-values (r282806)
    • Added parsing support for font-palette (r282851)
    • Added pushing font-palette-values data into CSSFontSelector (r282838)
    • Added support for CSSFontPaletteValuesRule.name (r283140)
    • Added Web Inspector support for font-palette (r282987)
    • Allowed base-palette can accept "light" or "dark" (r283398)
    • Changed CSSFontPaletteValuesRule to not be map-like (r283219)
    • Changed to align with CSS Fonts specification changes (r283130)
    • Fixed shadowing of @font-palette-values rules (r283756)
    • Handle CSSOM style mutation of font-palette and font-palette-values (r283032, r283031)
    • Made negative integers in @font-palette-values invalid (r283197, r283540)
    • Made sure empty font families do the right thing for font palettes (r283075)
    • Prevented parsing unimplemented font palette features (r283752)
    • Removed the "none" value from font-palette (r283536)
    • Renamed override-color to override-colors (r283159)
    • Required font-families inside @font-palette-values to be case insensitive (r283794)
    • Required font palette names to start with two hyphens (r283221)
    • Stopped parsing context-sensitive colors in override-color (r283537)
  • Updated the implementation of the CSS Font Loading API to be closer to the spec and other browsers:
  • Fixed CSSFontFaceSrcValue.cssText to be quoted consistently with other browsers (r282442)

Scrolling

  • Enabled support for ScrollOptions' ScrollBehavior and CSS scroll-behavior properties (r284029)
  • Moved smooth scroll animations to run on the scrolling thread (r283871)
  • Fixed scrollIntoView to not take into account sticky positioning offsets (r283546)
  • Fixed properly redrawing a sticky element inside another sticky element on scroll (r284084)

Rendering

  • Enabled 2D canvas color space support on Apple platforms (r283541)
  • Updated converting an SVG image for canvas drawImage to choose an appropriate color space (r283531)

Dialog Element

  • The <dialog> element is now enabled by default (r284155), also including:
    • support for the CSS ::backdrop pseudo element
    • support for the top layer
    • <form method="dialog"> support
  • The inert attribute is available for testing behind an experimental flag with the same name

WebAssembly

  • Allowed WASM to use up to 4GB (r284330)
  • Implemented the WebAssembly exception handling proposal (r283852)

JavaScript

  • Enabled unlinked Baseline JIT for performance (r283139)
  • Fixed Intl.DateTimeFormat#resolvedOptions not to return detailed information of formatting if dateStyle or timeStyle is set (r283460)
  • Fixed Intl.supportedValuesOf to populate emoji and eor for collation (r282897)
  • Fixed syntactic production for #x in expr (r282968)
  • Optimized JSON.parse object creation (r282468)
  • Optimized put-by-val with for-in (r283098)
  • Optimized JSON.stringify property enumeration (r282707)
  • Refined RegExp#compile based on regexp-legacy-features proposal (r283874)

Web API

  • Enabled BroadcastChannel (r282426)
    • Implemented top-origin and frame-origin partitioning for BroadcastChannel (r282366)
  • Enabled Storage API by default (r284273)
  • Enabled FileSystemAccess and AccessHandle by default (r284131)
    • Implemented FileSystemSyncAccessHandle read() and write() (r284059)
  • Implemented the borderBoxSize and contentBoxSize parts of ResizeObserver (r282441)
  • Implemented CSP script-src-elem, style-src-elem, script-src-attr and style-src-attr directives (r284254)
  • Cached Web Audio PannerNode's azimuth, elevation, and coneGain for performance (r283740)
  • Changed <model> to be draggable, similar to <img> (r283563)
  • Updated the autofocus attribute behavior to match the latest specification (r283935)
  • Updated to preserve color space when creating ImageBuffers for ImageBitmaps (r282696)

WebGL

  • Fixed image-rendering: crisp-edges for WebGL canvases (r282335)

Media

  • Fixed the progress bar moving when playback stops (r282374)
  • Fixed createImageBitmap using a HLS video as source always returning a black image (r283585)

WebRTC

  • Added support for WebRTC media capabilities (r284085, r284236)
  • Changed MediaCapabilities to enqueue a task to resolve promises (r284236)

Accessibility

  • Exposed the URL attribute of <video> elements (r283799)
  • Made PDFs loaded via <embed> accessible (r282358)
  • Updated role="math" elements to no longer be considered to have presentational children (r284246)

Private Click Measurement

  • Allowed measurement of links in nested, cross-site iframes (r283593)

Web Extensions

  • Allowed more directives to be included in the content_security_policy of an extension’s manifest, such as the sandbox directive

Release 133

Note: Tab Groups do not sync in this release.

  • Added support for self-start, self-end, start, end, left, and right values in positional alignment (r282267, r282078, r281840)
  • Added support for percentages in the scale() transform functions, and the scale property (r282144)
  • Added support for sin(), cos(), tan(), e, and pi in calc() (r282162)
  • Fixed incorrect stacking order with an absolutely positioned and negative z-index <div> with a canvas child (r281913)
  • Fixed absolute positioning with orthogonal writing modes (r281995)
  • Fixed right-relative and bottom-relative values in background-position-x and background-position-y (r282234)
  • Fixed incorrect vertical position in table layout when the inline level box has 0px height (r282256)
  • Fixed changing the border size on rows with border-collapse not redrawing (r282266)
  • Fixed position: sticky used within table cells (r282201)
  • Fixed incorrectly calculated position: sticky constraints when the scrolling container has padding and borders (r282138)
  • Fixed an interoperability issue in margin collapsing with overflow: hidden elements (r282085)

CSS Cascade Layers

  • Added initial support for CSS Cascade Layers available in the Experimental Features menu
    • Added support for computing the order correctly for late added sublayers (r281798)
    • Supported layer argument in @import rules (r281928)

CSS Font Loading API

  • Updated the implementation of the CSS Font Loading API to be closer to the spec and other browsers:
    • Fixed CSSFontFaceSet.clear() to not clear CSS-connected members (r281842)
    • Updated FontFaceSet methods that need to react to style changes (r282016, r282015, r282015, r282261, r282204)
    • Updated FontFaceSet.add() to throw when called on a CSS-connected font (r281951)

Accessibility

  • Fixed blank braille display in contenteditable elements when the field is followed by another element (r281920)
  • Made PDFs loaded via <embed> accessible (r282358)

JavaScript

  • Enabled Object.hasOwn (r281835)
  • Implemented Temporal.PlainTime behind the flag --useTemporal=1 (r282125)
  • Implemented Temporal.TimeZone behind the flag --useTemporal=1 (r282018)
  • Implemented Temporal.Duration behind the flag --useTemporal=1 (r281838)
  • Implemented self.structuredClone() (r281808)
  • Implemented Object.hasOwn() (r281799)
  • Updated Intl.Locale weekendInfo to list all weekend days instead of range to follow to the latest spec change (r282257)

Web API

  • Added basic support for Storage API (r282130)
  • Added support for ServiceWorkerGlobalScope.serviceWorker (r281854)
  • Added handling for non-fully active documents in navigator.share() / navigator.canShare() (r282282)
  • Enabled Cross-Origin-Opener-Policy / Cross-Origin-EmbedderPolicy headers support (r282105, r282246)
  • Enabled SharedArrayBuffer support when COOP/COEP headers are used (r281832)
  • Fixed scrollbars on pointer-events: none element still intercepting events (r281991)
  • Implemented top-origin and frame-origin partitioning for BroadcastChannel (r282105)
  • Implemented navigation reporting for Cross-Origin-Opener-Policy (r282305)
  • Implemented getClientRects() for SVG elements (r282316)
  • Updated to always fetch the first manifest if provided (r282026)

WebRTC

  • Added support for RTCError and RTCErrorEvent (r282199)
  • Added support for RTCDataChannel closing event (r282198)
  • Added support for RTCSctpTransport (r282197)
  • Updated timing of RTCPeerConnection descriptions update to align with the WebRTC spec (r282217)
  • Updated signaling state check when applying a local or remote description to align with the WebRTC spec (r281985)
  • Updated getDisplayMedia to capture at the constrained size if possible (r281880)

Media

  • Fixed an incorrect number of frames returned if the decoding frame rate doesn't match the original in WebM (r282196)
  • Removed Web Audio canPlayType() workaround that made it reports false negatives (r282137)

Web and App Extensions

  • Added the extension’s icon to extension URL tabs for both app and web extensions
  • Added the extension name as the title of tabs when an app extension page and does not specify a title

Release 132

Note: Tab Groups do not sync in this release.

Web Inspector

  • Elements Tab
    • Fixed CSS Changes sidebar to update live (r281441)
    • Fixed showing style rules declared after a rule whose selector has over 8192 components (r281354)
    • Changed to not show contextual documentation popup in the Changes panel (r281139)
  • Miscellaneous
    • Adjusted tab bar style to be consistent between docked and undocked layouts (r281182)
  • Fixed CSS keyframe animations to respect edges in four-value background-position (r281683)
  • Fixed sticky position to not use transformed position to compute the offset (r281446)
  • Improved sticky positioning when applied to inline items(r281185)
  • Prevented snapping to offscreen snap areas in unidirectional scrolls (r281189)
  • Unprefixed -webkit-backface-visibility (r281009)

JavaScript

  • Added Intl Enumeration APIs (r281513)
  • Enabled Array#findLast method (r281369)
  • Enabled String#at and TypedArray#at (r281370)
  • Extended Intl TimeZoneName Option (r281371)
  • Fixed Intl.DateTimeFormat incorrectly parsing patterns with 'h' literal (r281688)
  • Implemented Temporal.Calendar behind the flag (--useTemporal) (r281788)
  • Implemented Intl Locale Info extension (r281374)
  • Implemented Intl.DisplayNames V2 (r281375)
  • Made polymorphic-keyed put-by-value faster (r281615)

Web API

  • Added Cross-Origin-Embedder-Policy support for Blob URLs (r281055)
  • Added onsecuritypolicyviolation on GlobalEventHandlers (r281569)
  • Enabled PerformanceNavigationTiming API by default (r281111)
  • Fixed including outer selector when matching ::slotted() (r281692)
  • Fixed document.hasFocus() returning true for unfocused pages (r281228)
  • Fixed Geolocation API to callback with an error if the document is not fully active (r281520)
  • Fixed setting window.location.href to an invalid URL to throw a TypeError (r281472)
  • Fixed SubmitEvent.submitter property to be set for <button type="submit"> (r281770)
  • Fixed Web Share CanShare() to be called after transient activation check (r281126)
  • Implemented Crypto.randomUUID() (r281206, r281284)
  • Implemented self.reportError() (r281756)

WebRTC

  • Added support for RTCDtlsTransport (r281225)
  • Added support for RTCPeerConnection.canTrickleIceCandidates (r281298)

Rendering

  • Fixed caret to respect text background color (r281685)
  • Fixed incorrect repaint when inline level box style change triggers line height change (r281136)
  • Changed synthetic bold additional advances to be applied after shaping (r281687)

Media

  • Fixed nexttrack and previoustrack MediaSession handlers (r281013)

Web Extensions

  • Added support for externally_connectable for sending messages to extensions from web pages
  • Added a drop shadow around color extension icons when the tab is using a theme color from the web page
  • Added an error message when declarative net request is used and the declarativeNetRequest permission is not specified in the extension manifest

Release 131

Note: Tab Groups do not sync in this release.

Web Inspector

  • Elements
    • Added CSS keyword completions for standard logical properties (r280588)
  • Console
    • Fixed missing execution context dropdown for contexts added after page load (r280989)
  • Network
    • Fixed sorting the Transfer Size column for failed requests changing the ordering of requests continually (r280566)
  • Changed to consider all snap areas at a given snap offset when snapping (r280527)
  • Fixed aspect ratio for replaced elements (r280471)
  • Implemented the clip value for overflow (r280509)

Web API

  • Added initial support for Cross-Origin-Embedder-Policy (COEP) (r280953)
  • Added initial support for Cross-Origin-Opener-Policy (COOP) (r280504, r280881, r280582)
  • Fixed Blob URLs changing after loading (r280824)
  • Fixed clicking an HTMLLinkElement to not trigger a navigation (r280479)
  • Fixed inaccurate Document.baseURI for iframe srcdoc documents (r280855)
  • Fixed the document's fallback base URL to be deduced from its creator when the URL is “about:blank” (r280491)
  • Fixed <a rel="opener noopener" target="_blank"> to create a window without opener (r280933)
  • Fixed meta HTTP refresh to not navigate if the document has sandboxed automatic features browsing context flag set (r280870)
  • HTMLElement.innerText setter should convert new lines to <br> (r280482, r280541)
  • HTMLMetaElement http-equiv should not be processed in shadow trees (r280913)
  • HTMLStyleElement should create its style sheet even if its media attribute is invalid (r280910)
  • Implemented support for <dialog> element cancel event (r280703)
  • Stopped changing invalid baseURLs from loadData or loadHTMLString to “about:blank” (r280562)
  • Stopped evaluating <script> elements moved between Documents during fetching (r280924)

JavaScript

  • Renamed Temporal.now to Temporal.Now (r280506)
  • Fixed super-Latin1 white space and line terminator after regular expression literal getting misinterpreted as flags (r280825)
  • Improved RegExp performance by introducing Boyer-Moore search (r280452)
  • Made legacy RegExp constructor properties (e.g. RegExp.$1) accessors (r280460)

Platform Features

  • Fixed the start drag on image when the first piece of text inside the image is selected with Live Text (r280872)
  • Fixed the translate popover becoming detached from webpage after scrolling (r280690)

Media

  • Fixed enter fullscreen animation interfering with auto-hiding menu bar (r280976)
  • Fixed media element to autoplay when going from background to foreground if it is initially not in viewport (r280920)

Web Audio

  • Added WebM container support for Vorbis and Opus (r280573, r280416)
  • Fixed audio buffer that may contain more frames than decoded (r280948)

WebRTC

  • Enabled WebRTC relay by default (r280908)
  • Enabled WebRTCPlatformUDPSocketsEnabled feature by default (r280545)
  • Introduced an experimental feature to toggle WebRTC socket proxying (r280523)

Payment Request

  • Fixed issue where additionalShippingMethods was not used when paymentMethodType was provided (r280459)

WebCrypto

  • Added console logging to encourage the use of authenticated encryption (r280790)

Accessibility

  • Added support for aria-selected value changes in table cells (r280633)

Rendering

  • Fixed dynamically changing HTMLStyleElement.type to change the rendering accordingly (r280909)

Release 130

Note: Tab Groups do not sync in this release. On macOS Big Sur, this release requires enabling GPU Process: Media option from Experimental Features under the Develop menu to address issues with streaming services.

Web Inspector

  • Elements
    • Fixed selecting a sibling node using navigation breadcrumbs (r280037)
  • Changed to use the correct block-size to resolve min-content (r280023)
  • Changed to pass the full target point when selecting a snap offset (r280171)
  • Changed images as grid items to use the overridingLogicalWidth when defined to compute the logical height (r280024, r280078)
  • Ignored the aspect-ratio of a replaced element if stretch alignments are applied to both axes (r280022)

JavaScript

  • Implemented Array.prototype.findLast and Array.prototype.findLastIndex behind a runtime flag (--useArrayFindLastMethod) (r279937)

Media

  • Added support for MediaError.message (r279978)
  • Added webm/opus container support for Web Audio (r280416)
  • Fixed hanging when entering PiP from element fullscreen (r280358)
  • Fixed SourceBuffer.abort() doesn't go back to state WAITING_FOR_SEGMENT properly (r279904)
  • Fixed video pausing after scrubbing with the Touch Bar (r280330)

Web API

  • Fixed document.referrer value missing a trailing slash (r280342)
  • Fixed FetchResponse.formData() to not reject the promise if the body is null and the MIME type is "application/x-www-form-urlencoded" (r280046, r279969)
  • Fixed getBoundingClientRect() to return the correct rectangle on elements inside a multi-column container (r280017)
  • Fixed HTMLImageElement.decoding to reflect the decoding content attribute, limited to only known values (r280047)
  • Fixed Sync XHR “load” event always having total/loaded=0 (r279967)
  • Implemented SubmitEvent interface (r279979)

IndexedDB

  • Fixed IDBFactory.databases to return correct results (r280410)
  • Implemented IDBTransaction.commit() (r280053)
  • Implemented IDBTransaction.durability (r280415)

Release 129

Note: On macOS Big Sur, this release requires enabling GPU Process: Media option from Experimental Features under the Develop menu to address issues with streaming services.

Web Inspector

  • Added contextual documentation for CSS properties (r279510)
  • Changed the sidebar panel and navigation bar to layout asynchronously during resize (r279790)
  • Elements Tab
    • Fixed Details sidebar navigation items wrapping to a second line (r279613)
    • Added support for function value completions in the Styles sidebar (r279422)
    • Autocomplete var() and attr() values in the Styles sidebar (r279502)
  • Sources Tab
    • Fixed the Scope Chain sidebar panel to not strip repeating whitespace from strings (r279294)
  • Changed to not clamp flex base size with min-height, max-height, min-width, and max-width (r279271)
  • Changed :link and :visited pseudo-class selectors to not match <link> elements (r279818)
  • Changed to match the CSS specification which prohibits numbers with a trailing decimal point (e.g. "1.px") (r279429)
  • Fixed the CSS parser "consume declaration" algorithm to handle whitespace correctly (r279358)
  • Fixed CSS style sheets loaded by HTMLLinkElement to fall back correctly when the charset is an invalid encoding name (r279383)
  • Improved computation of intrinsic sizes of flex items with aspect ratio (r279286)
  • Included container's writing mode to get grid item's margin (r279278)
  • Unprefixed :autofill pseudo-class (r279457)

Scrolling

  • Changed scroll-snap-align to use the box's writing-mode when the box is larger than the snap-port (r279714)
  • Fixed CSS scroll snap to allow scrolling to the middle of snap areas that overflow the snap-port (r279364)
  • Fixed layouts during scroll causing jittery scrolling when dragging the scrollbar (r279564)

Rendering

  • Added support for rendering <model> resources (r279451)
  • Fixed the scrollbar being hidden when the scroller has a negative z-index child (r279748)

WebAssembly

  • Added support for (ref null? $t) type constructor (r279265)

Web API

  • Fixed ReadableStream.getReader to throw a proper exception when the parameter is of the wrong type (r279472)
  • Fixed 'data:application/javascript' URLs for Worker (r279602)
  • Fixed WebGL toDataURL image being upside down if premultipliedAlpha=false (r279424)

Platform Features

  • Fixed extraneous spaces when copying or translating Chinese and Japanese in Live Text (r279609)
  • Fixed misaligned Live Text selection on some images (r279751)

IndexedDB

  • Fixed transaction to be inactive during structured clone (r279686)
  • Fixed IDBIndex.keyPath to keep returning the same object (r279669, r279683)

Media

  • Fixed WebM loads hanging if the server sends only small amount of data (r279375)
  • Fixed SourceBuffer.abort() to go back to state WAITING_FOR_SEGMENT properly (r279542)

WebGL

  • Fixed WebGL content to be able to use the discrete GPU (r279303)

WebCrypto

  • Added support for Elliptic Curve P-521 (r279688)
  • Fixed deriveBits() failing if the length is not a multiple of 8 for ECDH algorithm (r279723)
  • Fixed SubtleCrypto to only be exposed to secure contexts (r279642)

Release 128

Note: Tab Groups do not sync in this release.

Web Inspector

  • Elements Tab
    • Unused inherited CSS variables are now hidden by default in the Styles panel (r278607)
    • CSS variable names are no longer converted to all lowercase in the Computed panel (r278848)
  • Added support for 12 CSS list-style-type values along with other list style fixes (r279165)
  • Fixed CSSOM "set a CSS declaration" for logical properties (r279044)
  • Fixed new snap containers always snapping to the first scroll position (r278862)
  • Fixed Scroll snap offsets interpreted as scroll positions in a scrollable area (r278868)
  • Fixed flex items staying invisible after initial layout (r278659)
  • Fixed text-decoration: underline not applied to web component (r278602)
  • Stopped computing the min or max sizes of flex items twice (r278865)

JavaScript

  • Ignored Intl.NumberFormat feature options when linked-ICU is old (r278697)
  • Optimized JSON.parse with small data by changing Identifier pool mechanism (r278971)
  • Optimized valueOf call via ToPrimitive (r279053)
  • Fixed that Window should behave like a legacy platform object without indexed setter (r278585)

Live Text

  • Added a mechanism to regenerate text in an image element when it changes dimensions (r278747)
  • Changed mouse events to trigger text recognition only if the cursor is moving (r279059)
  • Text selection inside image elements should not be cleared upon resize (r278775)

Media

  • Reworked handling buffer full in SourceBuffer (r278603)

Performance API

  • Implemented performance.timeOrigin (r278665)

Web API

  • Adjusted fetch port blocking for ports 990, 989 (r279099)
  • Fixed Document’s execCommand() and queryCommand() to throw an exception on non-HTML or non-XHTML documents ** (r278974)
  • Fixed EventSource.constructor to not throw an exception when the URL parameter is an empty string (r278763)
  • Implemented width and height attributes on source elements of <picture> (r279108)
  • Improved specification compatibility for the outerHTML setter (r278821)

Release 127

Note: Tab Groups and Theme Colors are not available in this release on macOS Big Sur.

  • Added discrete animation support for grid-template-columns and grid-template-rows (r278173)
  • Added support for calc() on components inside relative color syntax colors (r278261, r278304)
  • Added support for "relative color syntax" for color() (r278364)
  • Added additional target luminance keywords for color-contrast() (r278262)
  • Fixed the height of an empty table inside an orthogonal flex parent (r277777)
  • Fixed will-change: position to only create a containing block for position: absolute elements (r277579)
  • Made will-change: transform-style create a containing block (r277566)
  • Fixed percent calculations for padding-top and padding-bottom when the parent has padding (r278194)

Scrolling

  • Fixed scroll snapping in non-horizontal writing modes (r278350)
  • Fixed layout issue handling changes to scroll-snap properties (r278193)
  • Improved scrolling performance when background-attachment: fixed is used inside a position: fixed layer (r278419)
  • Improved how the current document scroll position is maintained on full page zoom (r277775)

JavaScript

  • Added support for Ergonomic Brand Checks proposal (e.g. #x in object) behind the--usePrivateIn flag (r277926)
  • Fixed private static method in class-scope (r278510)
  • Optimized Function.prototype.toString (r278462)
  • Optimized in with non-identifier via non ad-hoc IC (r278445)

Media

  • Added MediaSession.callActionHandler (r278222)
  • Fixed MediaSession action handlers to be treated as having a user gesture (r277588)
  • Fixed macOS WebM Format Reader returning enabled for tracks that do not have samples (r278155)
  • Added support for H.264 profiles in MediaRecorder (r278158)

WebRTC

  • Changed to tighter bitrate allocation rules for WebRTC H.264 software encoder (r278272)

Web API

  • Added support for creating, accessing, and setting non-sRGB ImageData via canvas (r277569)
  • Added support for dispatching wheel events with ctrlKey on pinch gestures, which is commonly used for zooming embedded maps (r277772)
  • Fixed the value of a color input to update visually when using setAttribute (r277778)

Accessibility

  • Fixed increased contrast not detected in the browser until an additional setting is applied (r277971)
  • Fixed accessibility caption styles to always reflect the selection (r277874)

Rendering

  • Enabled <summary> to be a flex container (r278280)
  • Changed grid track size to reject a unit-less length (r277868)
  • Fixed incorrect selection when a tall float element is present (r278379)
  • Fixed incorrect text selection when crossing a flex item boundary (r278411)

Release 126

UPDATE: If you downloaded an earlier version of Safari Technology Preview 126, you may need to reboot.

Safari Technology Preview Release 126 is now available for download for macOS Big Sur and betas of macOS Monterey. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS.

Many of the new Safari 15 features are now available in Safari Technology Preview 126:

Streamlined tab bar. Use Tab Groups to save and organize your tabs. Experience the new design. Test your site. Experiment with theme-color.

Live Text. Select and interact with text in images on the web in macOS Monterey betas on M1 Macs.

Improved Safari Web Extensions. Try out the support for declarativeNetRequest, which expanded to 150K content blocking rules and non-persistent background pages for improved performance.

Quick Notes. Add links and Safari highlights to remember important information or ideas on the web in macOS Monterey betas.

WebGL 2. Try out the improved 3D graphics performance of WebGL running on top of Metal via ANGLE.

Web technologies. Experience and test the HTML, CSS, JavaScript, and other web technologies that are available in Safari 15 Beta and included in previous Safari Technology Preview releases.

If you see bugs or unexpected behavior with the interface of Safari Technology Preview, please file Feedback in Apple’s Feedback Assistant. If you come across an implementation bug in web technology, or have a request, please file a ticket at bugs.webkit.org.

Release 125

Web Inspector

  • Remote Inspection
    • Fixed an issue that prevented remotely inspecting iOS and iPadOS devices
  • Sources Tab
    • Added support for panning and zooming image resources (r277279)
  • Audit Tab
    • Fixed edits not saving if the text input was still focused when leaving Edit mode (r276616)
    • Fixed default and new test cases showing minified source (r276680, r277212)
  • Added parsing for @counter-style descriptors (r276488)
  • Added support for CSS display 2-value syntax (e.g. display: inline flex ) (r276293)
  • Added support for inline-{start/end} values to float & clear CSS properties (r276216)
  • Changed to not use margins when computing aspect ratio cross sizes (r277371)
  • Changed invalid media query keyword values to not be parsable (r277039)
  • Fixed treating border and padding correctly for box-sizing: border-box with aspect-ratio (r276745)
  • Fixed flex item construction to not affect sibling flex item height computation (r277222, r277435)
  • Fixed percent children to resolve against the flex basis on a fully inflexible item with fixed flex-basis (r276634)
  • Fixed table layout disregarding the overriding width in CSS Flexbox (r276572)
  • Fixed logical shorthands with var() (r276837)
  • Fixed using a modifier key on an element causing it stop matching :focus-visible (r276698)
  • Fixed CSS custom properties on pseudo-elements background gradients that caused infinite layout and high CPU load (r277112)
  • Fixed position for orthogonally positioned element with writing-mode: vertical-rl (r277391)
  • Improved parsing and computed style of the rotate CSS property (r276554)
  • Shared style resolvers between author shadow trees with identical style (r276882)

Web Animations

  • Added discrete animation support for border-image-repeat (r276465)
  • Fixed interpolation of stroke-dasharray in the discrete case (r276643)
  • Fixed interpolation of page-break- ** properties (r276638). Fixed animation of the visibility CSS property between hidden and collapse (r276639)
  • Fixed interpolation of the clip CSS property (r276552)
  • Fixed interpolation of the rotate CSS property (r276231)
  • Support interpolation of the background-repeat shorthand (r276553)

WebAssembly

  • Added call_ref instruction (r276896)

Storage

  • Improved local storage size estimation for quota limitation (r276689)

Web API

  • Fixed picture element to ignore any img descendant that is not a direct child (r276679)
  • Fixed blob contentType being ignored when it contained a charset (r276986)
  • Implemented <form>.requestSubmit() (r277257)
  • Implemented FontFace in Workers for OffscreenCanvas (r276450)
  • Implemented ShadowRoot.prototype.delegatesFocus attribute (r276585)
  • Avoided error for a fetch body stream when its request or response is stopped (r277028)
  • Changed to not compute image aspect ratios from width and height attributes for lazy loaded images (r276521)
  • Fixed Notification.requestPermission() to return a Promise (r277420)

Rendering

  • Fixed computed style for the translate CSS property to use px for the z value (r276551)
  • Fixed will-change CSS property to create a containing block when the one of the specified properties may create one (r276627)
  • Fixed sizing of CSS backgrounds affected by background-size and EXIF orientation (r276984)

WebRTC

  • Fixed color gamut in WebRTC when using VPx software decoder (r276478)
  • Set audio transceiver nMax to 1 (r276717)

Release 124

Web Inspector

  • Added autocomplete for experimental CSS Color values: hwb, lch, lab, color-mix, color-contrast (r275310)
  • Changed grid overlay track size labels to show implicit auto value and no computed size (r275559)
  • Fixed grid layout labels that were getting drawn outside the viewport (r275128)
  • Fixed CSS Grid overlay track sizes when inline styles are applied to the element (r275293)
  • Fixed a bug with more than two timeline recordings not showing a timescale (r275337)
  • Fixed grid overlay areas appearing offset from their actual areas when the grid container has a border set (r275529)
  • Fixed grid overlay to honor writing modes and RTL layout direction. (r275519)
  • Fixed grid overlay line numbers showing implicit tracks with negative line numbers (r275558)
  • Improved grid overlay label appearance (r275560)
  • Removed the duplicate Box Model section from Layout panel in Elements Tab (r275545)
  • Accounted for cover and contain when interpolating background-size (r275202)
  • Accounted for hanging and each-line when blending text-interpolation (r275224)
  • Added support for animating the vertical-align CSS property (r275160)
  • Animated pseudo element style resolved against wrong parent style (r275277)
  • Fixed interpolation of the caret-color CSS property (r275092)
  • Computed style for a border-radius corner should never be 0px when the provided width isn't 0px (r275273)
  • Enabled hanging and each-line keywords for the text-indent CSS property (r275199)
  • Fixed align-content issues in Flexbox (r275416)
  • Fixed max-height percentages getting wrongly resolved for replaced grid items in nested percentage flexboxes (r275758)
  • Fixed min and max widths of grid affected by ancestor (r275754)
  • Fixed initial horizontal scrollbar position when vertical scrollbar is on the left (r275811)
  • Fixed max-content on tables with percentage cell widths (r275462)
  • Improved interpolation of the shape-outside CSS property (r275015)
  • Prevented negative heights in CSS Grid (r274933)
  • Supported animation of the tab-size CSS property (r274939)
  • Updated CSS Color 5 color-mix() implementation to match the latest draft spec (r274947)

JavaScript

  • Fixed Intl.Locale to not assume is8Bit (r274784)
  • Fixed Object.freeze(this) at the global scope to not lose a reference to a WatchpointSet (r274882)
  • Fixed RegExp interpreter not to match against non-BMP characters with multiple dots (r274806, r274945)
  • Fixed incorrect Array toString() if join() is not callable (r275544)

Web API

  • Enabled the ability to prevent scrolling in Element.focus() (r274812)
  • Implemented AbortSignal.abort() (r274773)
  • Propagated user gestures through requestAnimationFrame just like setTimeout (r275187)
  • ServiceWorker should save module scripts (r275751)

Rendering

  • Fixed aspect-ratio to recompute on hover (r275377)
  • Implemented text rendering on OffscreenCanvas in a Worker (r275420)

Wheel Events

  • Allowed wheel events to trigger high frequency DisplayLinks (r275440)

Web Driver

  • Fixed SendKeys on <input type="file"> returning element not found in some cases (r275050)

WebGL

  • Enabled Metal ANGLE backend for WebGL (r274927)

WebRTC

  • Implemented RTCDataChannel transfer (r274758)

WebCrypto

  • Fixed WebCrypto to support AES-GCM 0 byte encryption (r275535)

Scrolling

  • Fixed scrolling momentum with scroll-snap-type: x mandatory when the scroller scrolls vertically (r274853)
  • Fixed scroll-snap-stop: always not respected during momentum scrolling (r274726)

Web Extensions

  • Allow wss:// URL in content_security_policy to allow extension pages to use WebSocket connections

Release 123

Web Inspector

  • Elements Tab
    • Enabled CSS grid badges by default (r274575)
    • Made the border color of the grid badge match to the corresponding outline (r273992)
    • Styles details sidebar panel
      • Fixed pseudo-class checkboxes appearing cramped after resizing window at narrow widths (r274465)
    • Layout details sidebar panel
      • Enabled by default (r274466)
      • Changed to persist user-defined CSS grid overlay colors (r273912)
      • Added button to jump to grid container element (r274157)
      • Added checkbox to toggle all grid overlays (r274268)
      • Improved grid overlay to adjust for element transforms (rotation, scale, etc.) (r274096)
      • Improved grid overlay to adjust for element inside iframes (r274464)
  • Sources Tab
    • Fixed syntax highlighting for JSX files that aren’t indicated as being JSX (r274230)
  • Timelines Tab
    • Fixed trackpad scrolling in timelines (r274091)
  • Storage Tab
    • Changed to use native datetime-local input for changing expires value in cookie popover (r274593)

CSS Aspect Ratio

  • Enabled support for the CSS aspect-ratio property by default (r274424)
  • Added support for aspect-ratio in intrinsic sizing calculations (r274068)
  • Implemented CSS aspect-ratio interpolation (r274415)
  • Treated flexbox min-intrinsic like *-content (r274419)
  • Changed to consider intrinsic sizes as automatic whenever the block axis of the flex item is the flexible box main size (r273955)
  • Fixed orthogonal items with percentage sizes in Flexbox (r273958)
  • Prevented radio buttons used as a flex item from shrinking below its size (r274411)
  • Fixed grid track sizing when using relative sized items in auto column tracks (r274596)
  • Fixed replaced element definiteness as a grid-item (r274099)
  • Fixed position: sticky behavior in a table with dir=RTL (r273982)
  • Fixed :focus-visible to not match the body element after a keyboard event (r274365)
  • Prevented word-wrap and overflow-wrap from overriding hyphens (r274008)

Web Animations

  • Changed border-width, column-width, outline-width, perspective, flex-grow, and flex-shrink to not allow negative values (r274142)
  • Corrected blending for column-width and column-count CSS properties (r274147)
  • Corrected blending of the flex-basis CSS property (r274198)
  • Corrected auto value handling when blending z-index (r274055)
  • Fixed setKeyframes() to preserve the animation's current offset (r274165)
  • Fixed interpolation of clip CSS property (r274391)
  • Fixed interpolation of orphans and widows CSS properties (r274383)
  • Improved background-size interpolation (r274234)
  • Improved blending of Length and other Length-related types (r274038)
  • Improved font-variation-settings interpolation (r274235)
  • Supported animation of perspective-origin property (r274355)

Web API

  • Removed the Origin header if the navigation request goes from POST to GET (r273905)
  • Fixed selecting text via mouse drag in image documents to not trigger click events (r274305)
  • Changed to cancel image loader events after first dispatch (r274357)
  • Prevented dynamic import in service worker (r274404)
  • Increased resource load priority of async scripts from low to medium (r274145)
  • Fixed IndexedDB transactions outdated immediately after it just created (r274269)
  • WebGL APIs are aware of AllowShared (r274438)

JavaScript

  • Implemented Error#cause (r274552)
  • Optimized Boolean constructor calls in DFG and FTL (r274037)
  • Fixed attribute-changing of global variables (r274308)

WebAssembly

  • Update wasm ref.func to prepare wasm-function-references proposal (r273962)

Scrolling

  • Added basic (non-momentum) wheel event handling for scroll snap (r274381)

Rendering

  • Fixed <img> to render RTL text correctly in alt text (r274532)

Accessibility

  • Updated PDF frame conversion (r274377)

Media

  • Fixed video controls staying on screen indefinitely after interacting with the time scrubber (r274293)
  • Fixed MediaRecorder.requestData() not returning all captured media after a pause (r274154)

Release 122

Web Inspector

Animations

  • Changed CSS properties that disallow negative values to not animate to negative values (r273001)
  • Changed blending of border-image-width to be discrete between auto values and other types (r273635)
  • Fixed border-image-outset to handle float values (r273478)
  • Fixed border-image-slice blending to account for the fill keyword (r273625)
  • Changed min-content and max-content keywords to behave as an initial value in block axis (r273206)
  • Changed CSS grid to not allow negative heights (r273470)
  • Fixed min- and max- widths of grid affected by ancestor (r273435)
  • Changed the initial value for border-image-outset to 0 (r273882)
  • Implemented :focus-visible (r273812, r272983)
  • Implemented the first case in Definite and Indefinite Sizes specifications in section 9.8 for flexbox (r273072)
  • Fixed runtime-disabled CSS features still appearing enabled via CSS.supports() (r273385)
  • Removed support in the CSS parser for -khtml- prefixed CSS values (r273637)
  • Removed support for pos and pixel prefixed CSS values (r273627)

CSS Color

  • Added experimental support for CSS Color 5 color-contrast() (r273683)
  • Added experimental support for CSS Color 5 color-mix() (r273244)
  • Added experimental support for CSS Color 5 Relative Color Syntax (r273127)
  • Changed color(lab ...) to serialize as color(lab ...) not lab() according to latest CSS Color 4 spec (r273211)
  • Fixed lab() and lch() colors to clamp out-of-bound values at parse time (r272909)
  • Fixed lch() colors to serialize as lch() (r273078)

CSS Aspect Ratio

  • Added support for aspect-ratio on flexbox items (r273193)
  • Changed an aspect-ratio that ends with forward slash to be treated as invalid (r273068)
  • Fixed aspect-ratio showing in computed styles when disabled (r273314)
  • Changed to take box-sizing into account in replaced element intrinsic sizing for aspect-ratio (r273753)

JavaScript

  • Enabled private methods (r273125)
  • Implemented private static methods (r273107)
  • Implemented top-level-await (r273225)
  • Implemented RegExp Match Indices (r273086)
  • Implemented GC verifier (r273138)
  • Added support for modules in Workers and Worklets (r273203)
  • Added support for modules in Service Workers (r273224)
  • Avoided performing toObject for options in new Intl constructors to align them to a new spec change (r273153)
  • Reduced promise reaction memory usage when there are multiple reactions (r273718)
  • Optimized object-reset expression (r273135)
  • Optimized Promise#then by avoiding function allocations in major case (r273605)
  • Micro-optimized for-in (r273766)
  • Threw TypeError when getFunctionRealm hits revoked Proxy (r273661)
  • Threw TypeError when TypedArray’s [[DefineOwnProperty]] failed (r273750)
  • Fixed delete with index for module namespace object when arbitrary module identifiers use index (r273816)

WebAssembly

  • Extended wasm type with type index (r273813)
  • Implemented non-trapping float to int conversion (r272933)

Web API

  • Enabled Paint Timing (r273221, r273220)
  • Changed window proxy of detached iframe doesn't respect updates to global values (r273901)

Media

  • Fixed media segment getting incorrectly dropped when using negative timestampOffset or when source buffer appendWindow is set in MSE (r273461)
  • Fixed audio that stops playing when backgrounding a page that is playing and capturing audio (r273069)

WebRTC

  • Added support for WebRTC priority (r273550)
  • Fixed MediaRecorder.stop() to work correctly when recording has been paused (r272911)
  • Added support for BigInt as media-stream encryption key (r273158)

Accessibility

  • Added the ability for an embedded accessibility image description in an image file to be reported if available (r273214)
  • Fixed VoiceOver announces grid as having "0 columns" causing VoiceOver to not enter the grid (r273715)
  • Fixed VoiceOver incorrectly announcing groups in ARIA tree instances as empty (r273328)

Scrolling

  • Fixed scroll snapping when dragging scrollbars (r273690)

Release 121

Web Inspector

  • Sources
    • Collapsed blackboxed call frames in the Call Stack section (r272371)
  • Added support for aspect-ratio on grid items (r272307)
  • Added support for logical variants of scroll-padding and scroll-margin (r272035)
  • Added support for color(a98-rgb ...), color(prophoto-rgb ...), color(rec2020 ...), color(xyz ...), hwb() as part of CSS Color 4 (r271992, r272125, r272123, r272311, r272344)
  • Added support for percentages when parsing color(srgb ...) and color(display-p3 ...) per-spec (r271866)
  • Changed sRGB to XYZ conversion matrix values to match values in the latest spec (r272498)
  • Fixed max-height percentages that are wrongly resolved for replaced grid items (r272309)
  • Fixed grid item to fill the grid area for stretch or normal self alignment (r272308)
  • Fixed animation of rotate or scale property to correctly account for static translate property (r272201)
  • Fixed font-stretch to apply to system-ui (r272073)
  • Fixed the nested grid container which has a replaced item with max-height incorrectly getting width(0px) (r272338, r272711)
  • Implemented scroll-snap-stop for scroll snapping (r272610)
  • Handled aspect-ratio: auto m/n for replaced elements (r272360)
  • Handled min-width: auto or min-height: auto for aspect-ratio (r272718)
  • Handled zero aspect-ratio width or height (r271948)
  • Made auto && <ratio> use content box-sizing (r272569)

GPU Process

  • Enabled audio capture in GPUProcess by default (r272735)
  • Enabled audio capture for speech recognition in GPUProcess (r272434)
  • Enabled GPU WebRTC codecs in GPUProcess by default on macOS (r272496)
  • Enabled video capture in GPUProcess by default on macOS (r272810)
  • Fixed <audio> not loading when the URL ends with .php causing some tests to time out (r272750)
  • Fixed implementation of WebGL power preference and discrete/internal GPU selection with ANGLE (r271880)

Media

  • Added intermediate volume icon states between "mute" and "max" (r272375)
  • Changed media controls to show the total duration, only switching to time remaining when clicked (r272373)
  • Changed MediaStream-backed video elements to not compute the mediaType based on track muted states (r272583)
  • Connected MediaSession with MediaRemote and NowPlaying (r272445, r272589)
  • Fixed sound on YouTube after switching back to foreground (r272829)
  • Fixed playback of WebM/Opus generated from Chrome MediaRecorder (r272822)
  • Fixed Picture-in-Picture video pauses when scrolling on Twitter (r271870)
  • Updated media controls time scrubber styles (r272352, r272438)
  • Updated media controls to use new SF Symbols (r272339)

Web API

  • Fixed the return key binding for date inputs conflicting with pressing return to submit a form (r272495
  • Fixed selecting a date on datetime-local inputs unexpectedly adding second and millisecond fields (r272368)
  • Fixed rendering a pattern with an SVG image (r272549)
  • Forbid "|" in URL hosts (r271899)
  • Reduced the overhead of HTMLDocumentParser in innerHTML setter (r272622)

JavaScript

  • Added @ in Error#stack even if function name does not exist (r272139)
  • Added Atomics support for BigInt64Array and BigUint64Array behind a runtime flag (JSC_useSharedArrayBuffer=1) (r272341)
  • Adjusted properties order of host JS functions (r272099)
  • Changed Object.assign to throw for property creation on non-extensible target (r272411)
  • Handled milliseconds in Date’s timezone without floating point rounding (r272127)
  • Implemented BigInt64Array and BigUint64Array (r272170, r272215)
  • Implemented private methods behind flag (JSC_usePrivateMethods=1)(r272580)
  • Made JSON.parse faster by using table for fast string parsing (r272570)

WebAssembly

  • Implemented WebAssembly.instantiateStreaming and WebAssembly.compileStreaming (r271993)
  • Implemented streaming compilation/instantiation for the Blob type (r272221)
  • Updated WebAssembly.Global to support Funcref and Externref (r272071, r272081, r272119)
  • Enabled Wasm bulk-memory and reference-types (r272074)

Accessibility

  • Exposed focusable elements even if the element or ancestor has aria-hidden=true (r272390)
  • Fixed long narrow tables to not be made into data tables unnecessarily (r272024)

Speech Recognition

  • Used the user media permission prompt for Speech Recognition (r272165)

Release 120

Web Inspector

  • Elements
    • RTL content inside elements is reversed and unreadable (r271458)
    • Font details sidebar panel
      • Improved line wrapping of table row titles (r271528)
      • Updated fractional variation axis ranges and default values to not be rounded (r271620)
      • Changed the “Historical Figures” section name to “Alternate Glyphs” (r271612)
  • Sources
    • Allowed breakpoint actions to be evaluated as a user gesture (r271373)
  • Console
    • Fixed bidi confusion when evaluation result has RTL text (r271726)

Scrolling

  • Changed slow-scrolling reasons to not propagate across frame boundaries (r271508)
  • Fixed scroll-chaining to trigger before the complete end of overscroll (r271730)
  • Fixed scroll-padding to affect paging operations (r271788)
  • Fixed scroll-snap points to be triggered during programmatic scroll (r271439)
  • Added relayout for grid items when definiteness changes (r271745)
  • Added support for lab(), lch(), and color(lab ...) colors (r271362)
  • Fixed incorrect scroll-snap-align parsing (r271480)
  • Handled shapeMargin becoming NaN (r271738)
  • Implemented logical border-radius (r271447)
  • Included aspect-ratio in percentage resolution (r271375)
  • Supported transferred min/max block size for aspect-ratio (r271554, r271648)
  • Optimized :hover and :active style invalidation for deep trees and descendant selectors (r271584)
  • Updated font when resolving letter-spacing: calc(...) values (r271688)
  • Reversed transform animation not applied alongside other transform animations (r271524)

JavaScript

  • Fixed super accesses on arrow functions defined as a class field (r271420)

Web API

  • Accelerated HTMLInputElement creation (r271672)
  • Changed to use the event loop to set the page title (r271514)
  • Changed a non-integer tabindex to match the element behavior as if the tabindex was omitted (r271523)
  • Disabled the context menu item and menu bar item to toggle automatic spelling correction where autocorrect="off" (r271459)
  • Fixed elements in a table getting incorrectly selected in JavaScript (r271635)
  • Included an origin identifier when writing promised image data to the drag pasteboard (r271685)

Media

  • A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed (r271377)
  • Allowed MediaStream and non MediaStream backed videos to play together (r271698)
  • Changed to prevent two pages in the same process to not play media stream backed video elements at the same time (r271670)
  • Fixed videos not playing on Facebook Stories (r271725)
  • Fixed picture-in-picture video subtitles that stop updating when Safari is backgrounded (r271737)
  • Fixed playback failure on marketwatch.com (r271531)
  • Fixed Netflix controls to correctly fade out after entering fullscreen (r271656)
  • Fixed Facebook pausing video in picture-in-picture during scroll (r271470)
  • Introduced a MediaSessionGroupIdentifier (r271643)
  • Updated buttons of the media permission prompt (r271485)

WebRTC

  • Enabled WebRTC VP9 profile 0 by default (r271641)
  • Disabled verification timer in case of capture suspension (r271749)
  • Changed to notify capture state immediately on page close (r271640)

Web Audio

  • Addressed WebRTC live Opus audio stream stutters (r271575)

Accessibility

  • Implemented aria-braillelabel and aria-brailleroledescription (r271416)
  • Fixed AT-synthesized key events for common user actions such as increment or decrement (r271760, r271536)

Payment Request

  • Changed to use the first item in shippingOptions even when it's not selected (r271735)
  • Fixed constructor to throw an error if the same payment method is provided more than once (r271734)
  • Fixed issue where the shippingOption of the PaymentResponse is null after updateWith (r271703)

Speech Recognition

  • Made SpeechRecognition permission error more informative (r271381)
  • Updated media state for active speech recognition as it uses audio capture (r271636)

Private Click Measurement

  • Enabled output logs by default, including to Web Inspector (r271473)

Bug fixes

  • Fixed "Blocked Plug-in" instead of showing a PDF (r271650)
  • Fixed combinations of nested perspective and transforms causing blurry layers on retina displays (r271388)
  • Fixed SVG reference filter chain with errors applying only some of the filters and producing incorrect output (r271785)
  • Removed explicit clamp to SRGB for Lab colors on CG platforms that support wide color (r271712)

Release 119

Web Inspector

  • Elements
    • Enabled independent Styles details sidebar panel in the Elements Tab by default (r271319)
    • Improved the visibility of values by de-emphasizing range information in the Font details sidebar panel (r271329)
  • Timelines
    • Added a banner to the JavaScript Allocation timeline when new heap snapshots are added that are immediately filtered (r271236)

Speech Recognition

  • Enabled SpeechRecognition by default (r270854)
  • Added webkit- prefix to SpeechRecognition (r270868)
  • Added availability check of speech recognition service before requesting permissions (r271031)
  • Changed to fail speech recognition when the page is muted for audio capture (r271154)
  • Implemented recognizer for SpeechRecognition (r270772)
  • Stopped speech recognition if page becomes invisible (r271169, r271205)
  • Added support for aspect-ratio on positioned elements (r271061)
  • Changed to take aspect-ratio into account for percentage resolution (r271293)
  • Fixed an issue where toggling pointer-events on <body> prevented child elements from scrolling (r270849)
  • Fixed CSS Scroll Snap when the user scrolls via the keyboard (r270838)
  • Fixed :focus to match inside the focus event (r271146)
  • Fixed the default namespace getting ignored inside non-type selectors for :is() and :not() (r270955)
  • Fixed width: max-content with box-sizing: border-box to leave space for padding (r271003)
  • Implemented ::file-selector-button pseudo-element (r270784)
  • Prevented layout overflow from being computed incorrectly inside Flexbox and breaking sticky positioning (r271053)

Scrolling

  • Fixed scrolling issues when scrolling on only one axis is enabled (r271090)
  • Sibling element wheel event regions can be wrong (r271054)

JavaScript

  • Fixed non-enumerable property to shadow inherited enumerable property from for-in (r270874)
  • Fixed Intl.DateTimeFormat#formatRange to generate the same output to Intl.DateTimeFormat#format if startDate and endDate are "practically-equal" (r271224)
  • Implemented arbitrary-module-namespace-identifier-names (r270923)
  • Improved performance of Object rest and spread (r271343)

Media

  • Used low-power audio buffer sizes for more output devices (r270943)
  • Updated the video element to ignore requests to enter or exit fullscreen before the current fullscreen mode change is completed (r271341)

WebAssembly

  • Added support for memory.copy, memory.init, and data.drop behind flag (r270948)
  • Added support for memory.fill behind flag (r270855)
  • Added support for type-annotated select behind flag (r270827)
  • Updated WebAssembly instance's exports object (r271112)
  • Updated WebAssembly multi-value to iterate iterable result from JS function first before converting values (r271113)
  • Updated WebAssembly Table/Memory/Global to allow inheritance (r271115)
  • Implemented WebAssembly BigInt handling (r271168)

Web Animations

  • Fixed animation issue on sibling elements caused by style sharing (r270837)

Accessibility

  • Fixed aria-orientation getting ignored on input[type="range"] (r271166)
  • Implemented prefers-contrast: more (r270823)
  • Updated list heuristics to include linked lists inside navigation containers (r270896)

Web API

  • Adjusted date input placeholder color based on specified text color (r270875)
  • Corrected the intrinsic size stored for SVG images (r271129)
  • Fixed "Open with Preview" menu item in PDF context menus on Big Sur (r270946)
  • Fixed some issues with PDFs as <object>. (r270998)
  • Fixed Service Worker inspection (r271294)
  • Changed text fields to not be translated while typing (r271262)

Bug Fixes

  • Fixed text content alignment inside an inline-block element (r271284)
  • Fixed inline block baseline with clipped overflow (r271348)

Release 118

Web Inspector

  • Elements
    • Added an experimental Font details sidebar panel for showing information about the currently used font of the selected node (r270637)
  • Sources
    • Added support for intercepting and overriding network requests (r270604)
  • Implemented Definite and Indefinite Sizes in flexbox (r270578)
  • Corrected cases in which box-sizing was border-box and didn't use the content box to compute size based on aspect ratio (r270617)
  • Fixed preserving aspect ratio when computing cross size of flexed images in auto-height flex container (r270288)
  • Added support for aspect-ratio on replaced and non-replaced elements (r270551, r270618)
  • Changed text-decoration-color animation not to be discrete (r270597)
  • Changed getComputedStyle rounding lineHeight to nearest pixel (r270248)
  • Changed to trigger web font loads earlier (r270590)

Scrolling

  • Made only the first wheel event in a gesture to be cancelable (r270425)

JavaScript

  • Enabled "at" methods (r270550)
  • Changed get and set for object literal and class to not be escaped (r270487)
  • Accepted escaped keywords for class and object property names (r270481)
  • Aligned %TypedArray% constructor/slice behavior with the specification strictly (r270552, r270371)
  • Added a JSC API to allow acquiring the JSLock to accelerate performance (r270659)
  • Removed unnecessary JSLock use from various JSC APIs (r270665)
  • Aligned [[DefineOwnProperty]] method of mapped arguments object with the specification strictly (r270664)
  • Changed Reflect.preventExtensions not throwing if called on WindowProxy or Location (r270702)

WebGL

  • Fixed rasterizer discard interfering with implicit clears in WebGL 2 (r270253)

Media

  • Implemented WebVTT VTTCue region attribute (r270738)

Private Click Measurement

  • Exposed an API for enabling or disabling Private Click Measurement (r270710)

WebRTC

  • Added support for RTCRtpSender::setStreams (r270486)
  • Enabled use of new socket API for WebRTC TLS connections by default (r270680)
  • Fixed ICE not resolving for turns relay candidates rooted in LetsEncrypt CA (r270626)
  • Improved RTCRtpSender and RTCRtpReceiver transforms support (r270641, r270290, r270294, r270507, r270532)
  • Introduced an experimental flag specific to VP9 profile 2 (r270256)

Web API

  • Changed to allow blob URLs with fragments (r270269)
  • Fixed lazy loaded iframe to not lazy load when scripting is disabled (r270300)
  • Changed Reflect.preventExtensions to not throw if called on WindowProxy or Location (r270702)
  • Changed sessionStorage to not be cloned when a window is opened with rel=noopener (r270273)
  • Updated the list of blocked ports according fetch specification (r270321)

Accessibility

  • Fixed VoiceOver not announcing the aria-checked state for ARIA treeitem (r270333)

Extensions

  • Fixed the onClicked listener not being called for page actions

Release 117

Web Inspector

  • Elements
    • Added the option to "Edit Breakpoint..." or "Reveal Breakpoint" in Sources Tab (r269337)
    • Extra closing parenthesis added after var in styles panel (r269201)
  • Network
    • Fixed background color of rows from previous session (r269127)
    • Truncated data URLs in the Resources sidebar and Headers panel (r269075)
  • Search
    • Prevented stealing focus from the search field when shown (r269074)
  • Sources
    • Changed the default breakpoint action to be evaluate (r269547)
  • Console
    • Exposed console command line API to breakpoint conditions and actions (r269023, r269044)
    • Fixed using Show JavaScript Console in an empty tab in Safari Technology Preview (r270060)
  • Other Changes
    • Updated styles to use CSS properties with neutral directionality (r269166)
  • Added support for discrete animations of many CSS properties (r269812, r269333, r269357, r268792, r268718, r268726)
  • Added support for animations on more pseudo-elements (such as :marker) (r269813)
  • Added support for more properties on ::marker (r269774)
  • Added parse support for aspect-ratio CSS property (r269641)
  • Made CSS font shorthands parsable within a worker (r269957)
  • Changed images as flex items to use the overridingLogicalHeight when defined to compute the logical width (r270073)
  • Changed images as flex items to use the overridingLogicalWidth when defined to compute the logical height (r270116)
  • Changed background-size to not accept negative values (r269237)
  • Fixed issues with percentage height on grid item replaced children when the grid item has a scrollbar (r269717)
  • Serialized aspect ratio with spaces around the slash (r268659)

JavaScript

  • Enabled static public class fields (r269922, r269939)
  • Enabled static and instance private class fields (r270066)
  • Implemented Intl.DateTimeFormat.formatRangeToParts (r269706)
  • Implemented Intl.ListFormat (r268956)
  • Aligned %TypedArray% behavior with recent spec adjustments (r269670)
  • Implemented @@species support in ArrayBuffer#slice (r269574)
  • Fixed toLocaleDateString() resolving incorrect date for some old dates (r269502)
  • Resurrected SharedArrayBuffer and Atomics behind a flag (JSC_useSharedArrayBuffer=1) (r269531)

Web Assembly

  • Added wasm atomics instructions, partially behind a flag (JSC_useSharedArrayBuffer=1) (r270208)
  • Fixed opcodes for table.grow and table.size (r269790)
  • Implemented shared WebAssembly.Memory behind a flag (JSC_useSharedArrayBuffer=1) (r269940)
  • Implemented i32 sign-extension-ops (r269929)

Web API

  • Added proper garbage collection to ResizeObserver (r268860)
  • Changed Worklet.addModule() to reject promise with an AbortError when the network load fails (r270033)
  • Changed event targets to be cleared after dispatch if the target pointed to a shadow tree (r269546)
  • Changed WebSocket constructor to not throw when the port is blocked (r269459)
  • Fixed toggling dark mode to update the scrollbar appearance in overflow: scroll elements (r269437)
  • Fixed navigator.clipboard to be exposed on *.localhost pages (r269960)
  • Fixed auto-focus of text input to not select text (r269587)
  • Fixed Canvas drawImage to not raise an IndexSizeError on empty sources (r270126)
  • Fixed getIndexedParameter indexing crash (r270160)
  • Fixed text getting clobbered when assigning to input.defaultValue (r269528)
  • Fixed <input disabled> to fire click events after dispatchEvent (r269452)
  • Fixed the space between minute and meridiem fields in time inputs being too large (r270148)
  • Fixed window.event to not be affected by nodes moving post-dispatch (r269500)
  • Improved exception messages when AudioContext.suspend() / resume() promises are rejected (r268999)
  • Promises returned by our DOM API have the caller's global instead of the callee's (r269227)
  • Removed unneeded whitespace between content and <br> (r268958, r269036)

Speech Recognition

  • Added audio capture for SpeechRecognition (r270158)
  • Added a default action for SpeechRecognition permission request (r269918)
  • Implemented basic permission check for SpeechRecognition (r269810)

WebRTC

  • Added WebRTC SFrame transform (r269830)
  • Added infrastructure for WebRTC transforms (r269764)
  • Added support for RTCPeerConnection.onicecandidateerror event (r270101)
  • Added support for RTCRtpScriptTransform (r270107)
  • Added support for VP9 Profile 2 (10-bit color) in WebRTC (r268971)
  • Increased camera failing timer to 30 seconds (r269190)

Media

  • A video element may fail to enter picture-in-picture from fullscreen (r268816)
  • Added handling trackId changes across Initialization Segments in MSE (r269121)
  • Added addOutput() and removeOutput() utility functions to AudioSummingJunction (r268820)
  • Added skeleton implementation of Media Session API (r268735)
  • Changed to ensure WebAudio API throws exceptions with useful error messages (r268812)
  • Changed AudioBuffer channels to be neuterable and detachable (r269108)
  • Fixed an infinite loop in sample eviction when duration is NaN in MSE (r270106)
  • Fixed Web Audio continuing to play when navigating off the web page via an iframe (r268893)
  • Fixed poor resampling quality when using AudioContext sampleRate parameter (r270141, r270157)
  • Fixed AudioBuffer.getChannelData(x) to keep returning the same JavaScript wrapper for a given channel (r269081)
  • Fixed AudioContext.suspend() to not reject promise when the audio session is interrupted (r269039)
  • Fixed transparent video poster image to keep element transparent once the first frame is preloaded (r269407)
  • Fixed fetching an audio worklet module using a data URL (r270046)
  • Improved the speed of audio and video element creation up to 50x faster (r269077)

Web Animations

  • Ensured animation updates are not scheduled when there are no styles to update (r269963)
  • Fixed KeyframeEffect.pseudoElement to return a valid string when targeting ::marker or ::first-letter (r269623)
  • Fixed accelerated animations of individual transform properties to apply rotate before scale (r269527)

Scrolling

  • Changed programmatic scroll to stop rubberbanding (r269373, r269559)
  • Changed to update scrolling geometry immediately for programmatic scrolls (r269558)

Scroll Snap

  • Fixed scroll snap specified on :root (r269506)
  • Fixed scroll-snap on root aligning to the body margin edge, not the viewport edge (r269622)
  • Made axis in scroll-snap-type required (r268665)
  • Made scroll-margin independent of scroll snapping and applied it when scrolling to anchors (r269144)
  • Made scroll-padding independent of scroll-snap and have it affect scrollIntoView (r270023)
  • Stopped creating implicit snap points at scrollmin and scrollmax (r268856)

Private Click Measurement

  • Added persistence for pending ad clicks and attributions so they survive browser restart (r270136)
  • Changed to accept ad click data when the link opens a new window (r269129)
  • Changed attribute and JSON key names according to the W3C conversation (r269886)
  • Switched to JSON report format (r269489)

Web Driver

  • Added handling for surrogate pairs in keyboard actions (r269421)
  • Added support for a sequence of character key presses (r269035)
  • Added handling HTTPS configuration for WebDriver tests (r268723)
  • Fixed elements in Shadow DOM incorrectly marked as stale (r268867)

Release 116

Web Extensions

  • Added support for non-persistent background pages
  • Fixed browser.tabs.update() to accept calls without a tabId parameter
  • Fixed browser.tabs.update() to allow navigations to a URL with a custom scheme

Web Inspector

  • Sources
    • Added support for creating a local override from resources that failed to load
    • Added a + to the Local Overrides section in the navigation sidebar to streamline creating custom local overrides
    • Fixed issue where event breakpoints were not editable after being added
    • Fixed issue where line-based JavaScript breakpoints were not added on reload
    • Fixed issue where the Sources Tab had wrong icon when paused

Web Audio API

  • Enabled AudioWorklet API by default
  • Added implementation for AudioWorkletGlobalScope.registerProcessor()
  • Added implementation for AudioWorkletGlobalScope's currentFrame, currentTime, and sampleRate attributes
  • Changed to use AudioWorkletProcessor to process audio
  • Changed calling AudioContext.resume() right after AudioContext.suspend() to be a no-op
  • Changed AudioWorkletGlobalScope to perform a microtask checkpoint after each rendering quantum
  • Fixed parameters argument for AudioWorkletProcessor.process() to be spec-compliant

MediaRecorder

  • Enabled video capture by default on macOS
  • Added support for MediaRecorder bitrate getters
  • Added support for MediaRecorder pause and resume
  • Added support for respecting enabled and muted tracks
  • Added support for BlobEvent.timecode
  • Fixed MediaRecorder .stop to not throw in Inactive state
  • Made sure to fire the correct set of events in case MediaRecorder stream has track changes
  • Added support for the individual transform properties translate, rotate, scale, including accelerated animation
  • Fixed flex-grow property to be animatable
  • Fixed CSS image-orientation: none to be ignored for cross-origin images
  • CSS transform computed style should not reflect individual transform properties
  • Added painting CSS highlights over images
  • Fixed clip-path: path() ignoring page zooming
  • Fixed background-clip: var(--a) invalidating -webkit-background-clip: text when --a: text

Rendering

  • Respect the font size when presenting the <select> dropdown when custom fonts are used

JavaScript

  • Changed arguments.callee to become ThrowTypeError if the function has a complex-parameter-list (spec-term)
  • Changed BigInt constructor to be constructible while it always throws an error
  • Fixed Array.prototype.sort's sortBucketSort which accessed an array in an invalid way leading to incorrect results with indexed properties on the prototype chain
  • Improved the essential internal methods for %TypedArray% to adhere to spec

WebAuthn

  • Removed the alg field from the attestation statement

Media

  • Fixed AirPlay menu not showing up when the AirPlay button is clicked
  • Improved computation of default audio input and output devices

Web API

  • Allowed passive mouse wheel event listeners to not force synchronous scrolling
  • Implemented Blob.stream
  • Updated FileReader.result to return null if it isn't done yet
  • Improved xhr.response conformance to the specification

URL Parsing

  • Aligned URL setters to reasonable behaviors of other browsers
  • Changed to parse "#" as a delimiter for fragment identifier in data URIs
  • Changed to fail parsing URLs with hosts containing invalid punycode encodings
  • Fixed UTF-8 encoding in URL parsing

Storage Access API

  • Enabled per-page storage access scope

Accessibility

  • Fixed accessibility on Presidential Executive Order pages

WebDriver

  • Fixed WebDriver Input clear/value commands when the target is inside a Shadow DOM

Release 115

Web Inspector

  • Sources Tab
    • Added a checkbox to the popover when configuring a local override to allow it to skip the network

Web Audio

  • Enabled the modern unprefixed WebAudio API
  • Changed AnalyserNode to downmix input audio to mono
  • Changed AnalyserNode's getByteFrequencyData() and getFloatFrequencyData() to only do FFT analysis once per render quantum
  • Changed AudioBufferSourceNode to update grain parameters when the buffer is set after rendering has started
  • Updated AudioParam.setValueCurveAtTime() to have an implicit call to setValueAtTime() at the end
  • Updated AudioParams with automations to process timelines
  • Fixed BiquadFilterNode's lowpass and highpass filters
  • Fixed Web Audio API outputting silence for 302 redirected resource
  • Made AudioBufferSourceNode loop fixes
  • Changed to properly handle AudioParam.setTargetAtTime() followed by a ramp
  • Improved AudioBufferSourceNode resampling
  • Added stubs for AudioWorklet
  • Added basic infrastructure for AudioWorklet
  • Added stubs for AudioWorkletProcessor and AudioWorkletGlobalScope

JavaScript

  • Fixed BigInt to work with Map and Set
  • Enabled Intl.DateTimeFormat dayPeriod
  • Updated Intl rounding behavior to align with specifications update
  • Updated functions to consistently enumerate length property before name property
  • Updated Array.prototype.sort to be consistent with specifications
  • Implemented item method proposal, note that this will be renamed to at later

Web API

  • Performance.navigation and Performance.timing are incorrectly exposed to workers
  • Update User Timing interfaces to User Timing Level 3
  • Fixed visibilitychange:hidden event to fire during page navigations
  • Re-aligned HTMLElement with the HTML spec

Media

  • Added support for HTMLMediaElement.setSinkId
  • Fixed webkitfullscreenchange to fire for Shadow DOM elements
  • Added support for the individual transform properties translate, rotate, scale, including accelerated animation
  • Changed to clear the override width to properly compute percent margins in CSS Grid
  • Implemented the CSS math-style property
  • Implemented row-gap and column-gap for flex layout
  • Implemented list-style-type: <string>
  • Fixed CSS Selector an-plus-b serialization
  • CSS serialization expects comments between certain tokens
  • Fixed CSS variable causing a background url() to get resolved with a different base
  • Updated to repaint as needed when adding and removing highlights

WebAuthn

  • Changed to not set the UV option if the authenticator doesn't support it

Selection API

  • Fixed selectAllChildren to return InvalidNodeTypeError when passed a DocumentType node
  • Improved VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus

WebRTC

  • Updated toRTCIceProtocol to handle ssltcp candidates

WebDriver

  • Added support for accessing the ‘SameSite’ cookie attribute
  • Fixed several issues when switching to new browser context

Release 114

Web Inspector

  • Elements Tab
    • Changed to grey out properties that aren't used or don't apply
    • Changed to hide non-inheritable properties when viewing inherited rules
    • Changed to not show inline swatches for properties that aren't used or don't apply
  • Sources Tab
    • Changed to allow event breakpoints to be configured
    • Changed to evaluate breakpoint conditions before incrementing the ignore count
    • Changed to allow DOM breakpoints to be configured
    • Changed to allow special JavaScript breakpoints to be configured
    • Changed to allow URL breakpoints to be configured
  • Network Tab
    • Fixed WebSockets to be reported as type websocket
    • Fixed issue where response content was not shown for 304 responses from XHR requests
  • Timelines Tab
    • Fixed duplicate "Timeline Recording 1" on open
    • Fixed re-enabling the JavaScript Allocations timeline to show previously captured heap snapshots in the table
    • Fixed the record button disappearing when interface is narrow
    • Fixed the Stop Recording button to actually stop the recording
  • Audit Tab
    • Allow audits to be created and edited in Edit mode in Web Inspector
  • Miscellaneous
    • Fixed issue where the docking buttons wouldn’t work when docked if the window is too small

JavaScript

  • Added Intl.DateTimeFormat dateStyle and timeStyle
  • Added Intl.Segmenter
  • Added a syntax error for async function in a single-statement context
  • Added Object.getOwnPropertyNames caching and accelerated Object.getOwnPropertyDescriptor
  • Aligned legacy Intl constructor behavior to spec
  • Applied Intl.DateTimeFormat hour-cycle correctly when timeStyle is used
  • Enabled Intl.DisplayNames
  • Changed to not allow let [ sequence to appear in an ExpressionStatement context
  • Changed to allow new super.property syntax
  • Changed to allow new import.meta() syntax
  • Changed to use locale-sensitive grouping for grouping options in IntlRelativeTimeFormat
  • Implemented Intl.DateTimeFormat dayPeriod
  • Implemented Intl Language Tag Parser
  • Implemented Intl.DateTimeFormat.prototype.formatRange
  • Implemented unified Intl.NumberFormat
  • Fixed an invalid early error for object literal method named proto
  • Fixed implementation of the class "extends" clause incorrectly using proto for setting prototypes
  • Fixed Performance and PerformanceNavigation interfaces missing toJSON operations
  • Updated Intl.Collator to take a collation option
  • Updated Array.prototype.push to always perform Set in strict mode
  • Updated Promise.prototype.finally to perform PromiseResolve

Date and Time Inputs

  • Added editing to <input type="datetime-local">
  • Updated date inputs to contain editable components
  • Updated date picker appearance to match system date pickers
  • Updated date picker when the inner control is edited
  • Updated date pickers to respect the document's color scheme
  • Updated date/time inputs to focus the next editable component when entering a separator key
  • Updated date/time inputs to preserve focus on value change
  • Updated date/time inputs to not use user-specified formats to prevent fingerprinting

Web Audio

  • Added AudioParam.automationRate attribute
  • Added proper support for AudioContextOptions.sampleRate
  • Allowed direct creation of replacement codec
  • Changed AudioParam.value setter to call setValueAtTime(value, now)
  • Changed AudioParam.linearRampToValueAtTime() formula to match specification
  • Changed AudioBufferSourceNode to use final values for playbackRate and detune
  • Fixed AnalyserNode.getFloatFrequencyData() to fill array with -Infinity when input is silent
  • Fixed AudioBufferSourceNode.start() behavior when the offset is past the end of the buffer
  • Fixed AudioBufferSourceNode.start() ignoring when parameter when the pitch rate is 0
  • Fixed AudioContext not rendering until an AudioNode is constructed
  • Fixed AudioDestinationNode.maxChannelCount always returning 0
  • Fixed AudioParam.linearRampToValueAtTime() and exponentialRampToValueAtTime() having no effect when there is no preceding event
  • Fixed BiquadFilterNode.getFrequencyResponse() to return NaN for out-of-bounds frequencies
  • Fixed the types of Panner.setPosition() and setOrientation() parameters to not be unrestricted float
  • Dropped non-standard AudioBuffer.gain
  • Made AudioParam.cancelScheduledValues() standards compliant
  • Improved interpolation algorithm in OscillatorNode
  • Introduced StereoPannerNode Interface
  • Stopped performing "de-zippering" when applying gain

MediaRecorder

  • Enabled MediaRecorder by default on macOS
  • End of media capture should not be reported before 3 seconds of the start of capture
  • MediaRecorder timeslice parameter causing internal error on longer videos

Paint Timing

  • Enabled paint timing by default

WebGL

  • Enabled WebGL2 by default
  • Added WebGL and WebGL2 context support to OffscreenCanvas
  • WebGL goes in a bad state where glContext.createProgram() returns null
  • Fixed text-transform inheritance to ::marker
  • Changed to set available column space before grid items prelayout
  • Added support for flow-relative shorthand and offset properties
  • Changed to allow indefinite size flex items to be definite with respect to resolving percentages inside them
  • Changed to not skip flexboxes with auto height for percentage computations in quirks mode
  • Changed to use min-content size for intrinsic maximums resolution
  • Fixed min-height: auto not getting applied to nested flexboxes
  • Fixed :visited color taken on a non-visited link when using CSS variables
  • Fixed CSS revert to serialize as "revert", not "Revert"
  • Updated to safely handle overly-long CSS variable values

Web API

  • Aligned length properties of function prototypes with specificcations
  • Updated ReadableStream.pipeTo implementation to match specifications
  • Updated Web Share API to prevent non-HTTP(S) URLs
  • Aligned ISO-8859-{3,6,7,8,8-I} and windows-{874,1253,1255,1257} encodings with specifications
  • Changed XML documents in iframes to not inherit encoding from the parent frame
  • Changed Element to not set an attribute inside its constructor
  • Changed new URL("#") to throw an error
  • Fixed consecutive requestAnimationFrame callbacks that may get passed the same timestamp
  • Fixed XHR.timeout getting affected by long tasks
  • Fixed taking too long to fetch images from memory cache
  • Implemented encodeInto() TextEncoder method
  • Updated the URL fragment percent encode set

Lazy Loading

  • Implemented lazy iframe loading
  • Fixed lazy image load painting

Media

  • Fixed the PiP window getting closed when the video element is removed from the DOM
  • Fixed an HDCP error for all streams on Netflix
  • Fixed <video> element preventing screen from sleeping even after playback finishes

WebRTC

  • Added RTCRtpSynchronizationSource.rtpTimestamp
  • Exposed RTCPeerConnection.restartIce
  • Safari is not able to hear audio when using WebRTC in multiple tabs

Rendering

  • Fixed animations invalidating too often
  • Fixed flickering on sedona.dev
  • Fixed the cut off scrollbar on Facebook posts with lots of comments has cut off scrollbar that couldn't scroll to the bottom
  • Changed to handle fonts that lie about being monospaced
  • Fixed programmatic selection of text in a text field that causes the highlight overlay to spill out
  • Fixed overflow: scroll rubber-banding getting interrupted by post-layout scrolling
  • Fixed a flash when closing a webpage

Text Rendering

  • Changed letter-spacing to disable ligatures

Scrolling

  • Fixed vertical scrolling getting stuck when a horizontal scroller is under the mouse
  • Fixed select element scrolling after scrolling the page

Back-Forward Cache

  • Added support for third-party domains to get stored for back-forward navigations

Storage Access API

  • Allowed requests for storage access from nested iframes

Release 113

Web Inspector

  • Timelines Tab
    • Fixed background colors for odd and even items in Dark Mode in the Timelines tab
    • Media & Animations timeline shouldn't shift when sorting
  • Adapted Web Inspector’s user interface and styling to better match macOS Big Sur

Web Audio

  • Added constructor for GainNode
  • Added constructor for BiquadFilterNode
  • Added constructor for ConvolverNode
  • Added constructor for DelayNode
  • Added constructor for AudioBuffer
  • Added constructor for AnalyserNode
  • Added support for suspending and resuming an OfflineAudioContext
  • Added constructor for the MediaElementAudioSourceNode interface
  • Aligned AudioListener with the W3C specification
  • Aligned BiquadFilterNode.getFrequencyResponse() with the specification
  • Fixed BiquadFilterNode's lowpass filter
  • Fixed missing length attribute on OfflineAudioContext
  • Fixed missing baseLatency attribute on the AudioContext interface

WebRTC

  • Added support for MediaRecorder bitrate options

Rendering

  • Updated to avoid triggering redundant compositing updates when trying to run a steps() animation on transform
  • Fixed inconsistent spacing of Chinese characters in Safari for macOS Big Sur

Media

  • Enabled H.264 low latency code path by default for macOS
  • Fixed the picture-in-picture button disappearing in the fullscreen YouTube player after starting a new video in a playlist
  • Changed to apply aspect ratios when computing flex-basis
  • Fixed updating min-height: auto after an image loads when the image has a specified height and width
  • Fixed @font-face font-weight descriptor to reject bolder and lighter
  • Fixed the CSS specificity of :host() pseudo-classes

WebDriver

  • Fixed window.print to not invoke native UI

Accessibility

  • Added VoiceOver access to font styling at insertion point

Loading

  • Fixed font loads quickly followed by navigations failing indefinitely

Web API

  • Implemented Canvas.transferControlToOffscreen and OffscreenCanvasRenderingContext2D.commit
  • Implemented createImageBitmap(ImageData)
  • Implemented PerfomanceObserverInit.buffered
  • Fixed text input autocorrect="off" attribute getting ignored on macOS

Gamepad API

  • Added a special HID mapping for the Google Stadia controller
  • Added HID mapping for the Logitech F310/F710 controllers.

Translation

  • Fixed table data incorrectly translated in some articles on wikipedia.org
  • Fixed leading and trailing spaces to be ignored when comparing content

Release 112

Web Inspector

  • Changed the default tab order to display most commonly used tabs first
  • Changed the background, text, and border colors to match the OS
  • Changed to only show scrollbars when needed
  • Fixed issue where a failed initial subresource load would break the Sources Tab
  • Fixed the ability to save files that are base64 encoded
  • Prevented blurring the add class input when a class is added in the Styles sidebar of the Elements tab

Extensions

  • Fixed pop-up dialog sizing for percentage height values applied to <html>
  • Added support for replacing a Safari App Extension with a Safari Web Extension by specifying the SFSafariAppExtensionBundleIdentifiersToReplace key in the NSExtension element in your Safari Web Extension Info.plist file. The value for the key should be an array of strings, each of which is the bundle identifier on a Safari App Extension you want to replace.
  • Fixed align-content in grid containers with small content area
  • Fixed the CSS clip-path being applied to the view-box coordinates
  • Fixed scroll snap when using RTL layout

JavaScript

  • Implemented Intl.DisplayNames
  • Changed eval?.() to be an indirect eval
  • Added support for SVG <a> element's rel and relList attributes

Media

  • Added behaviors for YouTube to offer HDR variants to devices which support HDR
  • Adopted AVPlayer.videoRangeOverride
  • Added HDR decode support in software-decoded VP9
  • Fixed becoming unresponsive after playing a video from a YouTube playlist in picture-in-picture mode

WebRTC

  • Added OfflineAudioContext constructor
  • Fixed scaleResolutionDownBy on RTCRtpSender

Web API

  • Added support for the type attribute to PerformanceObserver
  • Changed date and time input types to have a textfield appearance
  • Changed to propagate the user gesture through Fetch API
  • Fixed highlight color to update after being set it system preferences
  • Fixed datalist dropdown scrollbar position to match the visible region
  • Made mousemove event cancelable

Text Manipulation

  • Changed text manipulation to not extract non-breaking spaces
  • Fixed article headlines being split across multiple lines after translating

Storage

  • Changed to allow IndexedDB in third-party frames

Release 111

Web Inspector

  • Added an error message if unable to fetch shader source in the Canvas tab
  • Fixed Heap Snapshot Object Graph view not getting populated in some cases when inspecting a JSContext
  • Updated the tab bar colors of undocked Web Inspector to match Safari in macOS Big Sur
  • Updated the title bar of undocked Web Inspector to be white in macOS Big Sur

Web Extensions

  • Fixed chrome.tabs.update() so it does not open a new tab for safari-web-extension URLs
  • Fixed chrome.tabs.create() so it passes a valid tab object to the callback for relative extension URLs

Scrolling

  • Fixed content changes not triggering re-snapping with scroll snap after a scroll gesture
  • Fixed scrolling pages with non-invertable transforms in children of an overflow: scroll element
  • Fixed stuttery scrolling by ensuring a layout-triggered scroll snap does not happen if a user scroll is in progress on the scrolling thread

Rendering

  • Fixed high CPU usage on Bitbucket search results pages
  • Fixed line name positions after implicit grid track

JavaScript

  • Made String.protoytpe.toLocaleLowerCase's availableLocales HashSet more efficient
  • Changed Intl.Locale maximize, minimize to return Intl.Locale instead of String
  • Fixed Math.max() yielding the wrong result for max(0, -0)
  • Fixed redefining a property that should not change its insertion index (Object.keys order)

Web Authentication

  • Added a console message to indicate a user gesture is required to use the platform authenticator
  • Relaxed the user gesture requirement to allow it to be propagated through XHR events

WebRTC

  • Fixed the ability to pause to pause playback of MediaStream video track
  • Added support for parsing VP-style codec strings

Web API

  • Changed URL.host to not override the port
  • Fixed autocapitalize="words" capitalizing every word's second character
  • Multiplexed the HID and GameController gamepad providers on macOS
  • Removed the concept of "initial connected gamepads"

Storage Access API

  • Added the capability to open a popup and get user interaction so we can call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves

Intelligent Tracking Prevention

  • Added an artificial delay to WebSocket connections to mitigate port scanning attacks

Accessibility

  • Implemented user action specifications for Escape action

Text Manipulation

  • Fixed text manipulation to observe manipulated text after update
  • Fixed text manipulation to ignore white spaces between nodes
  • Fixed the caret leaving trails behind when the editable content is subpixel positioned

Release 110

WebRTC

  • Added a functional WebRTC VP9 codec
  • Allowed registering VP9 as a VT decoder
  • Added support for freeze and pause receiver stats
  • Added MediaRecorder.onstart support
  • Changed MediaRecorder to support peer connection remote video tracks
  • Enabled VTB required low latency code path
  • Fixed MediaRecorder.stopRecorder() returning an empty Blob after first use
  • Fixed MediaRecorder.start() Method ignoring the timeslice parameter
  • Fixed RTCDataChannel.bufferedAmount to stay the same even if channel is closed
  • Updated the max width and height for mock sources

Web Authentication

  • Improved UI for PIN entry for security keys

Web Animations

  • Keyframe animation with infinite iteration count doesn't show up in the Animations timeline

Web API

  • Changed to require a <form> to be connected before it can be submitted
  • Fixed window.location.replace with invalid URLs to throw
  • Fixed the behavior when setting url.search="??" (two question marks)
  • Changed to allow selecting HEIF images if the 'accept' attribute includes an image MIME type that the platform can transcode
  • Added referrerpolicy attribute support for <link>
  • Allow setting empty host/hostname on URLs if they use file scheme
  • Allow the async clipboard API to write data when copying via menu action or key binding

Media

  • Changed to check for mode=“showing” to consider a text track as selected in the tracks panel
  • Changed to allow indefinite size flex items to be definite with respect to resolving percentages inside them
  • Changed to not include scrollbar extents when computing sizes for percentage resolution
  • Fixed pointer events (click/hover/etc) passing through flex items, if they have negative margin

Layout

  • Changed to resolve viewport units against the preferred content size

Rendering

  • Fixed overlapping content when margin-right is present
  • Fixed content sometimes missing in nested scrollers with border-radius

Accessibility

  • Fixed honoring aria-modal nodes wrapped in aria-hidden
  • Implemented relevant simulated key presses for custom ARIA widgets for increment and decrement

Bug Fixes

  • Fixed the indeterminate progress bar animation periodically jumping in macOS Big Sur

JavaScript

  • Enabled RelativeTimeFormat and Locale by default
  • Configured option-offered numberingSystem in Intl.NumberFormat through locale
  • Changed Intl.Collator to set usage:"search" option through ICU locale
  • Fixed Promise built-in functions to be anonymous non-constructors
  • Fixed incorrect TypedArray.prototype.set with primitives

Storage Access API

  • Added the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves

Text Manipulation

  • Updated text manipulation to exclude text rendered using icon-only fonts
  • Added a new text manipulation heuristic to decide paragraph boundary

Security

  • Enabled referrer policy attribute support by default
  • Changed image crossorigin mutations to be considered "relevant mutations"

Web Inspector

  • Added a tooltip to the icon of resources replaced by a local override explaining what happened
  • Allow selecting text of Response (DOM Tree) in Network tab
  • Adjusted the height of title area when Web Inspector is undocked to match macOS Big Sur

Release 109

Safari Technology Preview Release 109 is now available for download for macOS Catalina. With this release, Safari Technology Preview is now available for betas of macOS Big Sur. If you already have Safari Technology Preview installed, you can update in the Software Update pane of System Preferences on macOS. Safari Technology Preview is currently only available for Intel-based Macs.

This release includes new Safari and WebKit features that will be present in Safari 14. The following Safari 14 features are new in Safari Technology Preview 109:

Safari Web Extensions. Extensions written for Chrome, Firefox, and Edge that use the WebExtension APIs can be converted to Safari Web Extensions using Xcode 12.

Privacy Report. See the trackers that Intelligent Tracking Prevention prevented from accessing identifying information.

Improved tab management with tab previews. Tabs feature a new space-efficient design that lets you view more tabs on-screen and preview tabs to find the one you’re looking for.

Website icons in tabs. Icons in tabs are turned on by default in Safari 14.

Password breach notifications. On macOS Big Sur, Safari will notify users when one of their saved passwords in iCloud Keychain has shown up in a data breach; requesting a password change uses the well-known URL for changing passwords (https://example.com/.well-known/change-password), enabling websites to specify the page to open for updating a password.

Domain-bound codes. On macOS Big Sur, added support to Security Code AutoFill for domain-bound, one-time codes sent over SMS; in the following 2FA SMS, Safari only offers to fill the code on example.com, and no other domain.

Your Example code is 123446.

@example.com #123446

Web Authentication. Added a Web Authentication platform authenticator using Touch ID, if that capability is present (macOS Big Sur-only). Added support for PIN entry and account selection on external FIDO2 security keys.

Adobe Flash is no longer supported in Safari.

In addition to these new Safari 14 features, this release covers WebKit revisions 262502-263214 and Password Manager Resources version 10e3fca9.

Web API

  • Changed the file picker of the <input> file element to show the selection filter
  • Changed to disallow XHR+Fetch responses when a response contains invalid header values
  • Changed image referrerpolicy mutations to be considered "relevant mutations"
  • Fixed empty dataTransfer.types when handling the dragstart event
  • Fixed a case of being unable to select an item from dropdown
  • Made ReadableStream robust against user code
  • Fixed align-content to apply for a single line
  • Fixed pseudo-elements (::after) in shadow roots to animate
  • Fixed CSS custom properties for specific border properties

Web Animations

  • Fixed animating font-size values with em units
  • Fixed Document.currentScript to work for SVGScriptElements
  • Fixed multiple SVG filters unexpectedly lightening the image using linearRGB

IndexedDB

  • Added support for IDBFactory databases method

Scrolling

  • Fixed horizontally scrolling elements that are broken when revealed by toggling visibility

Layout

  • Changed to not apply the special anchor handling when the anchor content is visible after clamping
  • Fixed inserted text placeholder to vertically align to top and behave like a block-level element when it has 0 width

Media

  • Fixed a YouTube video that gets stuck after rapidly tapping on touchbar’s picture-in-picture button
  • Added a quirk to allow starting AudioContext if document was interacted

WebRTC

  • Improved SCTP cookie generation

Back-forward Cache

  • Stopped allowing pages served over HTTPS with Cache-Control: no-store into the back-forward cache

JavaScript

  • Added support for private class fields
  • Added "el" (Greek) to our maintained available locales list
  • Changed Logical Assignment to perform NamedEvaluation of anonymous functions
  • Changed JSON.stringify to throw stack overflow error
  • Changed RegExp.prototype getters to throw on cross-realm access
  • Changed super to not depend on proto
  • Fixed AsyncGenerator to await return completions
  • Made errors an own property of AggregateError instead of a prototype accessor

Editing

  • Fixed text form controls to prevent scrolling by a pixel when the value is the same length as the size
  • Fixed observing a newly displayed element inside previously observed content
  • Fixed text manipulation to exclude characters outside of the unicode private use area
  • Fixed editing to handle nested item boundary elements
  • Fixed to not re-extract elements whose children have been manipulated
  • Fixed first and last unit in a paragraph to not contain only excluded tokens

Accessibility

  • Changed <address> element to no longer map to ARIA contentinfo role

Apple Pay

  • Added new values for -apple-pay-button-type

Web Inspector

  • Changed text inputs to not spellcheck or autocomplete
  • Fixed an issue where XHRs with the same URL as the main resource were not shown in the Sources Tab
  • Improved the performance of resizing the Scope Chain panel in the details sidebar of the Sources Tab

Web Driver

  • Fixed Automation.computeElementLayout to return iframe-relative element rects when the coordinate system is “Page”
  • Fixed WebDriver on non-iOS ports that cannot perform ActionChain which has scrolling down to the element and click it

Release 108

Web Inspector

  • Network
    • Fixed updating statistics when filtering
    • Fixed gaps around the "An error occurred trying to load this resource" message
  • Storage
    • Prevented requesting the list of IndexedDB database names multiple times for the same security origin
  • Graphics
    • Added support for the id (name) of the animation if it exists
    • Fixed populating text editors in the Keyframes section when the Animation panel sidebar in the details sidebar is first shown
  • Miscellaneous
    • Fixed ⌘G to not override the current query of the find banner if it's visible

Accessibility

  • Fixed SVG text node's with content getting described as "empty group" even if it's not empty
  • Fixed ignoring images with an empty alt attribute

Web API

  • Fixed <area> to require being connected in order to navigate
  • Fixed the pageshow event only firing the first time the back button is pressed
  • Fixed Array.prototype.splice not setting the length of the returned object if not an Array
  • Fixed incorrect location.origin in blob workers
  • Implemented ParentNode.prototype.replaceChildren
  • Changed the calculation to compute the hypothetical cross size of each item in flexbox to use fit-content, not max-content
  • Changed to allow indefinite size flex items to be definite with respect to resolving percentages inside them
  • Fixed dynamically setting position: absolute in a grid item to trigger a relayout of that element
  • Fixed tables as flex items to obey the flex container sizing
  • Fixed styling ::selection for a flex container
  • Prevented grid-template-rows from serializing adjacent <line-names>
  • Prevented putting out-of-flow boxes in anonymous flex items or grid items

JavaScript

  • Fixed BigInt operations to handle exceptions correctly

Scrolling

  • Fixed scrolling on a mercurynews.com article
  • Fixed stuttery overflow scrolling in slow-scrolling regions
  • Fixed rendering artifacts when scrolling overlays

Rendering

  • Fixed incorrect clipping of absolute and fixed elements inside stacking-context composited overflow: hidden

Async Clipboard API

  • Added support for reading "image/png" on ClipboardItem
  • Fixed DataTransfer.prototype.files containing multiple files when pasting a single image with multiple representations

Web Animations

  • Avoided starting CSS Transitions for a property when a CSS Animations or JavaScript-originated animation is running for the same property
  • Fixed SVG animations to not stop when other animators are still running

Media

  • Fixed Picture-in-Picture API issues under stress tests
  • Fixed scrubbing video on www.judiciary.senate.gov ( r262169)
  • Fixed fullscreen animation missing a few frames at beginning
  • Fixed transition between encrypted and clear codecs throwing an error
  • Fixed video freezing when attaching a local MediaStream to multiple elements
  • Made setting fullscreen mode more robust under stress tests

Release 107

Web Inspector

  • Network
    • Adjusted the spacing of the navigation items so that none are hidden when previewing a resource
  • Sources
    • Added showing the name of the Worker if it exists as the title of its main resource
    • Fixed source mapping issue when combining single-child directory chains
    • Fixed restoring global DOM, URL, or event breakpoints incorrectly enabling all breakpoints
    • Supported CSS pretty printing when a url() is nested inside a url()
  • Timelines
    • Fixed the memory stacked area graph to not extend beyond the "stopping time" marker
  • Storage
    • Fixed double-clicking on a cookie field to start editing that cookie
  • Layers
    • Ensured that the text at the bottom of the details sidebar doesn’t overlap
  • Console
    • Added showing EventTarget listeners as an internal property
    • Added showing Worker name as an internal property
  • Miscellaneous
    • Accessibility
      • Fixed Left/Right arrow keys to collapse/expand details sections
    • Remote Inspection
      • Provided a way to turn on or off ITP debug mode and AdClickAttribution debug mode
      • Dropped support for iOS 8.x, iOS 9.x, and iOS 10.x

Web API

  • Changed the initial value of transform-box to be view-box to fix some SVG animations
  • Fixed computing the correct perspective matrix on a box with borders and overflow: hidden
  • Fixed Object.prototype.toString to match standards
  • XML external entity resources should only be loaded from XML MIME types
  • Changed the cursor to update during the rendering steps, rather than on a 20ms timer
  • Fixed the computed min-width and min-height for auto depending on the box
  • Fixed disappearing content with CSS parallax on an overflow scroll

Rendering

  • Fixed repaint issues when the login field collapses on music.apple.com
  • Fixed text clipped when rendered with fonts which have a negative line gap metric
  • Fixed table sizing when max-width is used

Scrolling

  • Fixed tapping on the trackpad in a <select> to flash the scrollers
  • Fixed a <select> that sometimes becomes non-scrollable
  • Fixed overflow scrollbars not growing when hovered
  • Fixed find not always scrolling search results into view
  • Fixed composited scrolling interfering with the propagation of perspective
  • Fixed scrollbars flickering in RTL scrollable regions

Media

  • Changed to ignore a poster set after playback begins
  • Fixed media controls tracks menu showing "Auto" selected instead of the track selected via the JavaScript API

IndexedDB

  • Improved the accuracy of IndexedDB estimated write size computation
  • Fixed a bug that could cause IndexedDB log files to grow without bound

JavaScript

  • Implemented Intl.Locale
  • Implemented BigInt.asIntN and BigInt.asUintN
  • Enabled logical assignment operators
  • Ensured IntlCollator.prototype.resolvedOptions returns relevant locale extension keys in alphabetical order

Web Animations

  • Fixed the animation engine to not wake up every tick for steps() timing functions
  • Fixed animations with a single keyframe not getting accelerated
  • Fixed calling reverse() on an accelerated animation having no effect
  • Coordinated "update animations and send events" procedure across multiple timelines
  • Fixed Document.getAnimations() to only consider document connection and not timeline association
  • Fixed the animation of font-size using rem values

Async Clipboard API

  • Enabled clipboard API access when pasting from a menu item or key binding
  • Fixed cut and paste from Google Doc to Notes in several (non-Latin) languages
  • Preserved character set information when writing to the pasteboard when copying rich text

Accessibility

  • Implemented accessibility of HTML 5.1 Drag & Drop

CSS Grid

  • Cleared the override width for computing percent margins
  • Changed to treat percentages as auto for the minimum contribution
  • Fixed auto repeat with multiple tracks and gutters

Bug Fixes

  • Added quirk for cookie blocking latch mode aolmail.com redirecting to aol.com under aol.com
  • Changed to enforce a URL cannot have a username, password, or port if its host is null
  • Changed XML external entities to require an XML MIME type to be loaded
  • Fixed the playhead in Touch Bar continuing when loading stalls
  • Fixed the search field on mayoclinic.org clipping the submit button
  • Fixed setting a host on a URL when no port is specified
  • Limited the HTTP referer to 4KB

Release 106

Web Inspector

  • Sources
    • Ensured “Step Over” only steps through comma expressions if they not nested
  • Storage
    • Fixed third-party cookie display
    • Added support for selecting multiple local storage entries
  • Miscellaneous
    • Updated find dialog to populate the search string from the system find pasteboard
    • Fixed the filter bar in the navigation sidebar to respect the global search settings

Async Scrolling

  • Enabled async frame and overflow scrolling by default on macOS
  • Fixed an overflow that's hidden on one axis to be scrollable on that axis

Web Animations

  • Fixed applying keyframe easings to transforms
  • Changed to guarantee assigning an element to effect.target keeps the element alive, even without other references to it
  • Implemented jump-* functions for steps() timing functions
  • Added support for :where() pseudo class
  • Fixed :is() and :where() to not allow pseudo-elements when parsing
  • Fixed border-radius failing to clip composited iframe contents

JavaScript

  • Enabled BigInt
  • Changed BigInt constructor to accept larger integers than safe-integers
  • Added support for Intl.RelativeTimeFormat
  • Redesigned for-of iteration for arrays

WebRTC

  • Updated getDisplayMedia to respect aspect ratio with max constraints

Web API

  • Fixed the visibilitychange event to bubble per spec

Media

  • Changed to ensure a remote track event gets unmuted after the track event is fired
  • Fixed audio session category to be set incorrectly after changing video source with MSE
  • Fixed video elements to return to an incorrect position when exiting fullscreen

Rendering

  • Fixed flickering header when scrolling articles with fixed position elements
  • Fixed content disappearing in a CSS-based parallax implementation
  • Fixed a blank header on a site by changing to not use stale containing block width value while computing preferred width
  • Fixed oversized caret and selection rects in text fields

Bug FIx

  • Enabled using credentials for same-origin CSS mask images

Release 105

  • Added Selectors Level 4 specificity calculation for pseudo classes
  • Added support for font-relative lh and rlh unit frp, CSS Values Level 4 specification
  • Corrected the computed style for outline-offset when outline-style is none
  • Fixed bad style sharing between sibling elements with different part attributes for CSS Shadow Parts
  • Implemented the CSS Color Level 4 behavior for inheritance of currentColor
  • Prevented caching definite height against perpendicular flex items

JavaScript

  • Fixed Intl.DateTimeFormat patterns and fields
  • Implemented BigInt.prototype.toLocaleString`
  • Updated Intl to allow calendar and numberingSystem options
  • Implemented logical assignment operators
  • Updated canonicalizeLocaleList to gracefully throw OOM error if the input and error message is too large
  • Updated module's default cross-origin value should be "anonymous"

Media

  • Made a change to update ScreenTime as playback state changes
  • Filtered some capture device names
  • Added support for applying a frameRate limit when the request stream is from Camera

Web Animations

  • Added support for pseudoElement on KeyframeEffect and KeyframeEffectOptions
  • Fixed computing transition-property correctly when transition-duration is set to inherit

Accessibility

  • Fixed smart invert to handle the picture elements on foxnews.com

Rendering

  • Fixed drawing an image srcRect and imageRect to be in the same orientation of destRect
  • Fixed a missing gradient banner on fastclick.com

Web API

  • Fixed querySelector("#\u0000") to match an element with ID U+FFFD
  • Fixed scroll snap in subframes when async overflow scroll is enabled
  • Fixed zoom changes to not affect ResizeObserverSize
  • Updated CanvasRenderingContext2D.drawImage to ignore the EXIF orientation if the image-orientation is none
  • Updated documentFragment.getElementById() not work for empty-string IDs
  • Updated baseURL for a module script to be the response URL, not the request URL

Web Inspector

  • Elements Tab
    • De-indented items in the Variables section in the Computed sidebar panel so that wrapped content doesn't line up with --
  • Sources Tab
    • Added support for copying selected call frame(s) in the Call Stack section
    • Added a "Step" button that continues execution to the next expression in the current call frame
    • Treated comma sub-expressions as separate statements to provide more intuitive formatting, additional breakpoint opportunities, and better stepping functionality
  • Storage Tab
    • Provided a way to delete multiple localStorage or sessionStorage entries
    • Allowed cookies to be set with no value
    • Fixed an issue where cookies weren’t shown on pages that have subframes that have been denied access to cookies
  • Console Tab
    • Ensured that long strings are not truncated when passed to console functions
  • Search Tab
    • Added a setting that controls whether search field is populated with the current selection when using the global search shortcut ⇧⌘F
  • Miscellaneous
    • Increased the auto-inspect debugger timeout delay to account for slower networks/devices

Release 104

Web Inspector

  • Elements
    • Created a visual editor for box-shadow
  • Network
    • Change "Preserve Log" to be the last navigation item to be hidden at small widths
    • Ensure that the method is escaped when using “Copy as cURL”
  • Sources
    • If the hovered object is a DOM node, highlight it when hovering the title in the object preview popup
  • Storage
    • Added support for editing cookies
  • Console
    • Show logs for Intelligent Tracking Prevention Debug Mode and Ad Click Attribution Debug Mode in the Console
    • Added a console message when legacy TLS is used
  • Miscellaneous
    • Added a new WebSocket icon
    • Added the keyboard shortcut for showing the Search Tab and Settings Tab to the titles of their respective tab tab items
    • Fixed a bug where the tab bar thought it was too wide causing a tab bar item to be hidden
    • Fixed a bug where the currently focused node was changed when detaching into a separate window
    • Prevent disabled buttons from being focusable

Web API

  • Avoided querying pasteboard strings while dragging content over a potential drop target
  • Added label text to suggested values for a <datalist> element
  • Fixed <datalist> dropdown suggestions table able to be scrolled too far
  • Fixed a change event getting dispatched when a <textarea> gets changed without focus
  • Fixed event listeners registered with the once option that get garbage collected too soon
  • Fixed the name of X-Content-Type HTTP header in console logging
  • Fixed a bug that could cause elements to disappear with combinations of transforms and overflow
  • Fixed function passed to addEventListener may get garbage collected before the event listener is even added
  • Prevented Force Touch preview on file:/// URL works while clicking on the URL is blocked
  • Removed synchronous termination of service workers
  • Sanitized the suggested download filename
  • Updated Intl.NumberFormat.prototype.format to preserve a sign of -0
  • Updated to make sure a preflight fails if response headers are invalid
  • Updated to consider the referrer-policy in the append Origin header algorithm
  • Add support for :is()
  • Fixed changes in grid or elements inside the grid affecting margin on other elements in the grid

Web Animations

  • Marked promises as handled when rejected
  • Fixed onwebkit{animation, transition}XX handlers missing from Document

Intersection Observer

  • Fixed Intersection Observer intersections when zoomed in

Media

  • Changed HTMLTrackElement to be pending while it is waiting for LoadableTextTrack request
  • Fixed animated PNG issue where it would play the frames one time more than the image loopCount

WebRTC

  • Added initial support for WebRTC HEVC
  • Applied video rotation at the source level if WebRTC sink ask so
  • Fixed RTCRtpSender of kind video to have a null dtmf attribute
  • Fixed audio failing to capture stream if the AudioSession gets interrupted
  • Replaced the host candidate IP address in SDP with the corresponding mDNS name
  • Supported inserting text or dictation alternative by simulating keyboard input
  • Supported resolution of IPv6 STUN/TURN addresses

WebAuthn

  • Improved title and text used in prompts

Bug Fixes

  • Fixed getting stuck in a loading state when seeking on hulu.com

Safari extensions

  • Added support for restoring extension tabs across launches of Safari

Release 103

Web Inspector

  • Merged the toolbar and tab bar to save vertical space
  • Redesigned resource and action identifier icons
  • Allowed the use of dark mode theme independently from the system-wide theme
  • Annotated tabs so that they are properly recognized as such
  • Changed to not re-cycle through items in the Styles or Computed details sidebar panel when pressing tab
  • Fixed clicking a button navigation item to focus it, allowing for subsequent keyboard navigation
  • Supported expanding and collapsing details sections with the spacebar or “enter” key
  • Supported cycling through scope bar items by pressing tab

Web API

  • Aligned garbage collection for XMLHttpRequest objects with the specification
  • Aligned Fetch ‘request Origin header’ behavior with the specification
  • Changed the case of an activating service worker getting terminated to go to an activated state
  • Changed to load async scripts with a low priority
  • Changed to accept a Document as an explicit root
  • Implemented wildcard behavior for Cross-Origin-Expose-Headers
  • Made the style invalidation accurate for user-action pseudo classes
  • Changed to avoid full style resolution on Element::focus()

Page loading

  • Changed fixed sized SVG content to be taken into account when computing visually not empty status
  • Changed layers going from visually empty to non-empty to immediately trigger layer unfreezing

Back-Forward Cache

  • Added quirk to disable to back-forward cache on docs.google.com

JavaScript

  • Updated custom element caching to be aware of different worlds

Bug Fixes

  • Fixed leaking DocumentTimeline and CSSTransition objects on CNN.com
  • Fixed icloud.com notes text in titles and headings is distorted
  • Fixed maps.google.com not loading properly with screen flickering when zooming

Release 102

Web Inspector

  • Fixed VoiceOver to read the selected panel tab
  • Updated resource, type, and timeline icons for both light and dark modes

Web API

  • Changed the disk cache policy to allow resources larger than 10MB to be cached
  • Defered execution of async scripts until the document is loaded
  • Fixed value sanitization for input[type=text] to not truncate the value at a control character
  • Fixed new FontFace() to not throw when failing to parse arguments
  • Implemented EventTarget constructor
  • Set User-Agent in preconnect requests

IndexedDB

  • Improved the speed of index cursor iteration when there are a lot of index records from different object stores
  • Changed to prefetch cursor records on client side

Apple Pay

  • Added support for Apple Pay buttons with custom corner radii

Web Animations

  • Ensured CSS Transition and CSS Animation events are queued, sorted and dispatched by their timeline
  • Ensured animations that lose their effect don't schedule an animation update
  • Fixed repeated animations on pseudo elements failing to run after a while
  • Fixed style changes due to Web Animations to not trigger CSS Transitions
  • Improved performance of track sizing algorithm for spanning items

Rendering

  • Changed to not fire timers when there is a pending rendering update
  • Fixed a white flash that can occur if JavaScript forces an early layout

Web Driver

  • Fixed Automation.setWindowFrameOfBrowsingContext to accept negative origin values

Release 101

Web Inspector

  • Added a special breakpoint for controlling whether debugger statements pause in the Sources tab
  • Changed to encode binary web socket frames using base64
  • Fixed elements closing tag showing reversed in RTL mode
  • Fixed the bezier editor popover to be strictly LTR
  • Fixed dragging handles in the easing popover selecting sidebar text
  • Updated some cookie table column headers to not be localizable

Media

  • Corrected TextTrack sorting with invalid BCP47 language
  • Fixed AirPlay sometimes stopping after 60 minutes of playback

Apple Pay

  • Redacted billing contact during payment method selection

JavaScript

  • Added support for BigInt literal as PropertyName

Web Animations

  • Fixed accelerated animations freezing on a render tree rebuild
  • Fixed an event loop cycle between an animation finishing and it being removed from GraphicsLayerCA
  • Fixed an issue where out-of-view transitions could trigger high memory use
  • Prevented playing an accelerated animation that was canceled before it was committed

WebAuthn

  • Changed authenticatorGetAssertion to be sent without pinAuth if user verification is discouraged

WebRTC

  • Aligned getDisplayMedia() with standards specifications
  • Fixed not processing newly gathered ICE candidates if the document is suspended
  • Fixed CSS rules with the same selector from several large stylesheets getting applied in the wrong order

Rendering

  • Fixed pages that trigger a redirect sometimes getting left blank

Web API

  • Disallowed setting base URL to a data or JavaScript URL
  • Fixed highlight text decorations to work with all decoration types and colors
  • Implemented OffscreenCanvas.copiedImage
  • Added standard gamepad mapping for GameControllerGamepads
  • Tightened up stylesheet loading
  • Fixed quantifiers after lookahead assertions to be syntax errors in Unicode patterns only
  • Fixed \0 identity escapes to be syntax errors in Unicode patterns only

IndexedDB

  • Fixed iteration of cursors skipping records if deleted

Back-forward Cache

  • Updated to remember if legacy TLS was used in the back-forward cache

Release 💯

Web Inspector

  • Added links to Web Inspector Reference documentation
  • Renamed the Canvas Tab to be the Graphics Tab, and included basic information and graphical representations of all Web Animation objects that exist in the inspected page
  • Allowed developers to evaluate arbitrary JavaScript in isolated worlds created by Safari App Extensions via the execution context picker in the Console

Web Animations

  • Added support for the options parameter to getAnimations()
  • Changed animations to run accelerated even if other animations targeting the same element are not accelerated
  • Fixed changing the delay of an accelerated animation to correctly seek
  • Fixed a leak of CSS Animations when removing its animation-name property
  • Separated setting a timeline’s current time from updating its animations
  • Updated all DocumentTimeline objects when updating animations

WebAuthn

  • Fixed User Verification (UV) option present on a CTAP2 authenticatorMakeCredential while the authenticator has not advertised support for it

Media

  • Added support for allow="fullscreen" feature policy
  • Changed EME to only emit an array of persistent-usage-records when more than one record is discovered
  • Corrected VTT Cue Style handling to match the specification
  • Fixed decoder glitches when watching videos on CNN.com
  • Fixed AirPlay placard not visible when AirPlay is entered in fullscreen mode
  • Fixed video sound sometimes continuing to play in page cache
  • Fixed HTMLMediaElement to not remove the media session at DOM suspension time

Web API

  • Added finite timeout when synchronously terminating a service worker
  • Fixed :matches() to correctly combine with pseudo elements
  • Fixed automatic link replacement via “Smart links” to emit insertLink input events
  • Disabled Service Workers before terminating an unresponsive service worker process
  • Implemented “create a potential-CORS request”
  • Implemented transferable property of OffscreenCanvas
  • Improved performance speed of index records deletion in IndexedDB
  • Made pasteboard markup sanitization more robust
  • Used Visible Position to calculate Positions for highlights
  • Fixed EXIF orientation ignored for some CSS images
  • Fixed elements no longer stay fixed with elastic overscroll

WebRTC

  • Added support for MediaRecorder.requestData

JavaScript

  • Fixed DateMath to accept more ISO-8601 timezone designators even if they are not included in ECMA262 to produce expected results in the wild code

WebGL2

  • Implemented sub-source texImage2D and texSubImage2D

Release 99

Legacy Plug-Ins

  • Removed support for Adobe Flash

Web Inspector

  • Elements
    • Enabled the P3 color picker
    • Added RGBA input fields for the P3 color picker
    • Added support for manipulating the value with the arrow keys in the color picker
    • Added color() suggestion when editing a CSS property that accepts color values
  • Sources
    • Allowed editing of style sheets injected by Safari App Extensions
  • Console
    • Ensured that the clear button is always visible, even at smaller widths

Web API

  • Added support for using valid non-zero width and height attributes to become the default aspect ratio of <img>
  • Added a check to ensure Service Workers terminate after a period of time when thread blocking
  • Aligned Range.intersectsNode() with the DOM specification
  • Changed <iframe> attributes to be processed on srcdoc attribute removal
  • Changed <img>.naturalWidth to return the density-corrected intrinsic width
  • Changed <link> with non-CSS type to not be retrieved
  • Changed Object.keys to throw if called on a module namespace object with uninitialized binding
  • Changed Object.preventExtensions to throw if not successful
  • Changed Document.createAttribute() to take in a localName, not a qualifiedName
  • Changed the supported MIME types for image encoding to be supported image MIME types
  • Denied Notification API access for non-secure contexts
  • Fixed dispatchEvent() to not clear the event’s isTrusted flag when it returns early
  • Fixed String.prototype.replace() incorrectly handling named references on regular expressions without named groups
  • Fixed URL parser in Fetch not always using UTF-8
  • Fixed encoding entities correctly in <style> element during XML serialization of text
  • Removed the low priority resource load for sendBeacon to reduce failure rates
  • Updated Fetch to Handle empty Location value

Cookies

  • Fixed document.cookie to not do a sync IPC to the network process for iframes that do not have storage access
  • Added support for image-set() standard syntax
  • Added support for rendering highlights specified in CSS Highlight API
  • Implemented a network error when fetching a linked stylesheet resource fails
  • Improved performance by invalidating only affected elements after media query evaluation changes
  • Fixed rejected changes between similar unprefixed and prefixed gradient syntax
  • Excluded implicit CSS grid tracks from the resolved value

Media

  • Enabled HDR Media Capabilities by default
  • Fixed specification violation in Font Loading API
  • Ignored URL host for schemes that are not using host information
  • Implemented “create a potential-CORS request”
  • Implemented transceiver setCodecPreferences
  • Made text track loading set same-origin fallback flag
  • Fixed MediaKeySession.load() failing

WebRTC

  • Removed the certificate info checks related to getUserMedia

Payment Request

  • Converted the payment method data IDL in the PaymentRequest constructor

Web Animations

  • Stopped creating CSS Animations for <noscript> elements

JavaScript

  • Fixed invalid date parsing for ISO 8601 strings when no timezone given
  • Fixed RegExp.prototype[Symbol.replace] to support named capture groups

Web Share API

  • Added support for a user gesture to allow using the Web Share API even when preceded by an XHR call

WebDriver

  • Reimplemented the “Execute Async Script” command with Promises to match the specification
  • Fixed handling of session timeouts for values higher than MAX_INT
  • Fixed scripts being executed in the wrong page context after a history navigation

IndexedDB

  • Improved performance by removing the timer for pending operations in IDBTransaction

Release 98

Web Inspector

  • Elements
    • Removed the “Show/Hide Shadow DOM” navigation item
    • Restricted showing paint flashing and compositing borders to the Web Inspector session
    • Ensure that a bezier swatch is shown for CSS timing function keywords
    • Fixed hovering over an invalid value while holding ⌘ to change the color of the text
    • Fixed the Classes input to not display on top of other content
  • Network
    • Fixed pressing ⌘F when no network item is selected to focus the filter bar
  • Sources
    • Fixed non-regex local overrides to not apply to resources that only contain the URL instead of completely matching the URL
  • Storage
    • Added support for filtering IndexedDB stores and indexes
  • Audit
    • Fixed selected item before entering edit mode not being reselected after exiting edit mode
    • Fixed importing a result with DOM nodes that don’t match the inspected page appearing as empty lines
  • Console
    • Ensure copying an evaluation result does not include the saved variable index
  • Search
    • Added basic “No Search Results” text with a clickable help navigation item that reveals and focuses the navigation sidebar search input when there is no active search

Web Animations

  • Enabled Web Animations CSS Integration, a new implementation of CSS Animations and CSS Transitions, by default
  • Fixed layout of element children with forwards-filling opacity animation that can be incorrect after removal
  • Implemented Animation.commitStyles()

Media

  • Enabled the Generic Text Track Cue API

Rendering

  • Ensured transparency layers are properly ended when only painting root background
  • Fixed an issue where elements could jump to the wrong position after some compositing-related style changes

Web API

  • Implemented OffscreenCanvas.convertToBlob
  • Changed setting toString or valueOf on a cross-origin Location object to throw a SecurityError
  • Fixed an incorrect association of the URL object with the port value
  • Prevented synchronous XHR in beforeunload and unload event handlers
  • Changed to not perform range checking for calc() at parse time
  • Changed media queries in img sizes attribute to evaluate dynamically
  • Implemented the clamp() function
  • Improved computed values of calc() functions to match the specification
  • Changed calc() to not do range checking at parse time

JavaScript

  • Changed Object.prototype.isPrototypeOf() to check if the passed in value is a non-object first

WebRTC

  • Added protection for WebRTC network monitoring to wait forever in edge cases
  • Fixed audio elements that resumed playback after getUserMedia

Clipboard API

  • Added sanitization for HTML and image data written using clipboard.write

Browser Changes

  • Changed to issue the load sooner on swipe back/forward navigation
  • Re-disabled TLS 1.0 and TLS 1.1 by default

WebAssembly

  • Changed to validate and generate bytecode in a single pass

Release 97

Resize Observer

  • Enabled Resize Observer by default

WebAuthn

  • Added UI with instructions for authenticating with a security key while authenticating
  • Added support for legacy Google NFC Titan security keys

Web Animations

  • Added support for AnimationEvent.pseudoElement
  • Fixed retargeted transitions targeting accelerated properties that do not stop the original transition
  • Fixed the easing property for a CSS transition effect
  • Fixed the transform property always none for getKeyframes() output of a CSS Animation
  • Fixed getKeyframes() to return the right timing function for declarative animations

Web Inspector

  • Elements
    • Added support for multiline CSS property values
    • Added support for highlighting nodes that match CSS rules with pseudo-selectors
    • Added color picker support for P3 color space
    • Fixed an issue where copying multiple DOM nodes would only copy the last selected DOM node
    • Fixed aqua and fuchsia not being detected as CSS colors
    • Outlined sRGB-safe areas on the P3 color picker
  • Sources
    • Added a context menu item to reveal the local override when a resource is loaded from it
    • Added support for matching local overrides based on URL pattern in addition to exact match
    • Changed to prefer non-blackboxed scripts when showing a source code location link
    • Changed to fire Node Removed breakpoints whenever the DOM node is removed from the main DOM tree, not just when it’s removed from it’s parent
    • Fixed “Toggle Visibility” context menu item to work for elements inside a shadow tree
    • Made the default content of the Inspector Bootstrap Script a comment that explains how it works
    • Moved the “Local Override…” creation item from the Breakpoints section options menu to the Create Resource menu
    • Made call frames from blackboxed scripts visually distinct
  • Timelines
    • Added a marker for when a stop was requested
    • Added a timeline that shows information about any recorded CSS animation/transition
    • Labeled ResizeObserver callbacks in the JavaScript & Events timeline
  • Layers
    • Enabled the Layers Tab by default
  • Console
    • Defaulted to focusing the console prompt if no other content is focused after opening Web Inspector
    • Fixed an issue where the saved result value was still being shown after navigating
  • Settings
    • Enabled line wrapping by default

Rendering

  • Fixed image flashing with transform: rotate animation
  • Implemented accelerated video-to-texture upload path for ANGLE backend for WebGL

Back-Forward Cache

  • Added site-specific back-forward cache quirk to work around an issue on vimeo.com
  • Fixed WebAnimation to never prevent entering the back-forward cache
  • Fixed PaymentRequest and PaymentResponse to not prevent entering the back-forward cache
  • Fixed UserMediaRequest to not prevent entering the back-forward cache
  • Made MediaStream and MediaStreamTrack back-forward cache friendly
  • Added the orient property of the interface SVGMarkerElement
  • Added percentage support for fill-opacity, stroke-opacity, stop-opacity, and flood-opacity
  • Changed properties that take <position> to not accept 3 values
  • Disabled SVG shapes should not be hit
  • Fixed SVGGeometryElement.getPointAtLength to clamp its argument
  • Fixed opacity to always serialize as a number

Clipboard API

  • Added some infrastructure to resolve ClipboardItems into pasteboard data for writing
  • Added support for Clipboard.readText()
  • Added support for the Q unit
  • Changed CSS Transitions and CSS Animations properties to treat unit-less 0 as an invalid value for times
  • Fixed CSS grid line name positions after auto repeat with no line names
  • Fixed -webkit-font-smoothing: none not antialiasing subsequent elements
  • Fixed ::before and ::after elements not filling their grid cell when the container has display: contents
  • Fixed calc() serialization to match the specifications
  • Implemented the CSS clamp() function

Remote Playback API

  • Enabled Remote Playback API by default
  • Ensured the MediaRemote callback always called

Media

  • Batched multiple EME key requests into one request and response

JavaScript

  • Added BigInt support for ++ and --
  • Fixed Intl.DateTimeFormat to return resolvedOptions in the correct order
  • Optimized Promise runtime functions
  • Implement String.prototype.replaceAll

Picture-in-Picture Web API

  • Enabled the Picture-in-Picture API by default
  • Added support for the :picture-in-picture CSS pseudo-class for video elements in picture-in-picture mode
  • Fixed picture-in-picture events to fire when entering or exiting the picture-in-picture mode

WebAssembly

  • Created a WebAssembly interpreter
  • Support WebAssembly.Global

Web API

  • Added fullscreen style support for reddit.com
  • Changed the file input to fire an input event before the change event
  • Changed hidden framesets to provide default edgeInfo value
  • Fixed <input type="range">.setAttribute("value") to update the value
  • Fixed some captcha images rendering as a blank white space
  • Fixed content sometimes disappearing for a <video> with controls and clipping
  • Fixed a bug where focusing a shadow host which delegates focus will properly skip inner shadow hosts that delegate focus
  • Fixed getComputedStyle returning auto for zIndex property even after it has been set on non-positioned elements
  • Fixed very slow tile rendering due to event region painting in Google Docs spreadsheets
  • Fixed notification permissions not getting remembered for origins without a port
  • Fixed VeryHigh priority loads

Release 96

Web Animations

  • Enabled the Web Animations JavaScript API by default

Web Authentication

  • Implemented AuthenticatorCancel
  • Added auto behavior to the width and height properties of the SVG <image> element
  • Added bounding-box keyword to pointer-events
  • Fixed SVGElement to conform with SVG2
  • Loaded event must be fired only for the SVG structurally external elements and the outermost SVG element
  • Removed the viewTarget property of SVGViewElement

Web API

  • Added strictness to request’s Content-Type
  • Changed XMLHttpRequest.responseXML url to be the HTTP response URL
  • Changed String.prototype.matchAll to throw on non-global regex
  • Fixed a bad is array assertion JSON.parse
  • Fixed setting border-radius on <video> element clipping the top and left sections of the video
  • Ignored document.open or document.write after the active parser has been aborted
  • Made requestIdleCallback suspendable
  • Added content-box and stroke-box to the transform-box property
  • Added support for gradients using stops with multiple positions
  • Fixed a crash when parsing gradients with multi-position color stops

Clipboard API

  • Implemented ClipboardItem.getType()
  • Implemented navigator.clipboard.read()

CSS Shadow Parts

  • Changed :part rules to be able to override the style attribute

JavaScript

  • Removed wasmAwareLexicalGlobalObject

Picture-in-Picture API

  • Implemented EnterPictureInPictureEvent support
  • Added runtime logging for the Picture-in-Picture API

Media

  • Added support for callbacks for manifest events

Service Worker

  • Fixed MP4 video element broken with Service Worker

Back-Forward Cache

  • Prevented putting pages that have not reached the non-visually empty layout milestone into the back-forward cache
  • Fixed Notification to not prevent entering the back-forward cache
  • Fixed AudioContext to not prevent entering the back-forward cache
  • Fixed FetchResponse to not prevent entering the back-forward cache
  • Fixed XMLHttpRequest to not prevent entering the back-forward cache

Web Inspector

  • Elements
    • Added clickable icons for each CSS rule that distinguish the rule’s type
    • Fixed $0 being shown for the wrong node when selecting elements in a user agent shadow tree
    • Fixed the selection color dimmed when inside a shadow tree
    • Replaced color wheel with square HSB color picker
  • Sources
    • Fixed the content of the function definition popover sometimes getting cut off
    • Changed the function/object preview popover to keep the name sticky to the top
    • Provided a way to inject “bootstrap” JavaScript into the page as the first script executed

WebDriver

  • Fixed the Element Click endpoint triggering a click at an incorrect y-coordinate

Release 95

Shadow DOM

  • Added support for ShadowRoot.delegateFocus

Images

  • Added image/apng as a supported mime type for images
  • Fixed a bug with filter outsets that caused black lines on images on wikipedia

WebRTC

  • Removed unified plan runtime flag

Clipboard API

  • Implemented getType() for ClipboardItems created from bindings
  • Refactored custom pasteboard writing codepaths to handle multiple items
  • Refactored Pasteboard item reading functions
  • Supported writing multiple PasteboardCustomData with SharedBuffers to the pasteboard
  • Added support for programmatic paste requests on macOS

Picture-in-Picture Web API

  • Implemented HTMLVideoElement.requestPictureInPicture() and Document.exitPictureInPicture()

Service Workers

  • Changed to reject a response body promise in the case of a failure happening after the HTTP response
  • Prevented timeout for a load intercepted by a Service Worker that receives a response

Back-Forward Cache

  • Fixed pages frequently failing to enter the back-forward cache due to frames with a quick redirect
  • Fixed back-forward cache after doing a Favorites navigation
  • Fixed clearing website data for a given session to not shut down cached processes for other sessions
  • Fixed DOMCacheStorage to not prevent pages from entering the back-forward cache

Web Inspector

  • Sources
    • Enabled the new Sources Tab by default, which merges the Debugger Tab and Resources Tab into a single UI
    • Added support for automatically creating an image or font local override when dragging content over a non-overridden resource
  • Debugger
    • Added support for pattern-based script blackboxing by URL in the Settings Tab
    • Prevented source mapped resources from being blackboxed
  • Elements
    • Included a filter option in the Computed details sidebar for condensing all related longhand properties into their respective shorthand properties

Release 94

CSS Shadow Parts

Web Animations

  • Fixed removing an element to only cancel its declarative animations

Storage Access API

  • Changed document.hasStorageAccess() to return true when the cookie policy allows access and false otherwise, for third parties not blocked by ITP

WebRTC

  • Changed to allow suspending RTCPeerConnection when not connected

Media

  • Updated MediaDevices to require a secure context

JavaScript

  • Changed toExponential, toFixed, and toPrecision to allow arguments up to 100

CSS Grid

  • Preserved auto repeat() in getComputedStyle() for non-grids

Web API

  • Accepted two values in the overflow shorthand
  • Allowed using WebGL 2 when USE_ANGLE=1
  • Changed the default statusText of Response to an empty string
  • Changed CSS ellipse() to accept 0 or 2 <shape-radius>
  • Changed Service Worker Fetch events to time out
  • Corrected clip-path <geometry-box> mapping
  • Changed Fetch API no-CORs check to take into account same-origin
  • Changed radio button groups to be scoped by shadow boundaries
  • Fixed a newly inserted element to get assigned to a named slot if slot assignments had already happened
  • Fixed AbortSignal to always emit the abort signal
  • Fixed JSON.parse to correctly handle array proxies
  • Made table’s clientWidth and clientHeight include its border sizes
  • Updated attachShadow to support attaching a shadow root to a main element
  • Updated Fetch data URL HEAD request to result in empty response body
  • Updated radial gradients to reject negative radii
  • Updated ImageBitmap to be serializable

Web Inspector

  • Elements
    • Fixed issue where properties were always shown as invalid if they didn’t match the selected node
  • Resources
    • Fixed issue where newlines were being unexpectedly added inside template string expressions
    • Include local resource overrides in the Open Resource dialog
  • Debugger
    • Prevent blackboxing of scripts that haven’t finished loading or failed to load
  • Canvas
    • Made it more obvious that the cards in the Overview are clickable
    • Show “No Preview Available” instead of an empty preview for WebGPU devices
    • Support editing of WebGPU render pipelines that use the same shader module for vertex and fragment
    • Fixed issue where clicking on the Overview path component didn’t work
    • Dark Mode: Minor dark mode style fixes
  • Settings
    • Enable the image transparency grid by default and create a checkbox for it

WebDriver

  • Fixed an issue that prevented sudo safaridriver --enable from working correctly

back-forward Cache

  • Allowed pages served over HTTPS with Cache-Control: no-store header to enter the back-forward cache
  • Allowed pages using EventSource to enter the back-forward cache
  • Allowed pages using FontFaceSet to enter the back-forward cache
  • Allowed pages using IDBIndex to enter the back-forward cache
  • Added basic back-forward cache support for RTCPeerConnection
  • Changed IDBTransaction and IDBObjectStore to not prevent a page from entering the back-forward cache
  • Fixed pages that frequently fail to enter the back-forward cache due to pending loads
  • Fixed pages using WebGLRenderingContext to enter the back-forward cache
  • Fixed pages with Web Workers to enter the back-forward cache
  • Fixed pages using PendingImageBitmap to enter the back-forward cache
  • Fixed ServiceWorkerContainer to never prevent a page from entering the back-forward cache
  • Fixed XMLHttpRequest sometimes preventing pages from entering the back-forward cache
  • Fixed IDBRequest to not prevent a page from entering the back-forward cache
  • Fixed provisional and scheduled loads in subframes to not prevent a page from entering the back-forward cache
  • Fixed RTCDataChannel to not prevent entering back-forward cache except if in an open state
  • Made fixes to allow youtube.com to enter the back-forward cache on macOS
  • Improved Service Worker support for back-forward cache

IndexedDB

  • Added size estimate for key path when estimating task size
  • Fixed wrapping CryptoKeys for IndexedDB during serialization
  • Included size of index records in size estimate of put/add task
  • Updated size to actual disk usage only when estimated increase is bigger than the space available

Release 93

Resource Timing

  • Updated to report performance entries with all HTTP status codes
  • Added auto behavior for rx and ry to the SVG <ellipse> and <rect> elements
  • Fixed SVG <animateMotion> to reset the element to its first animation frame if its fill is set to "remove"
  • Fixed SMIL animations of SVG <view> element having no effect

Web API

  • Added support for sync-xhr feature policy
  • Changed to use the same parser for <meta http-equiv="refresh"> and Refresh HTTP header
  • Fixed Node.replaceChild()’s pre-replacement validation order
  • Fixed parsing Access-Control-Expose-Headers correctly
  • Fixed preserving Content-Type to be preserved on responses created from DOMCache
  • Fixed Date.prototype.toJSON to properly execute
  • Fixed HTMLVideoElement with a broken poster image to take a square dimension
  • Fixed a case where the Intersection Observer intersection ratio becomes larger than 1
  • Fixed cropped dropdown shadow for <datalist>
  • Fixed blocking insecure WebSocket URL connection attempts by Workers on secure pages
  • Fixed posting a message to a redundant Service Worker should fail silently instead of throwing
  • Improved CSP inheritance semantics
  • Provided a prototype for AR QuickLook to trigger processing in the originating page
  • Removed gopher from the list of special schemes in URLParser

Web Inspector

  • Elements
    • Prevented showing the Changes details sidebar panel when selecting text nodes
  • Resources
    • Added support for pretty printing HTML content
    • Added support for pretty printing XML-like content
  • Canvas
    • Added GPUDevice content previews and device configuration
    • Added a list of any GPURenderPipeline/GPUComputePipeline, including the content of any GPUShaderModule, for the associated GPUDevice
  • Console
    • Added a “Show More” button to see more than 100 items in arrays / collections
    • Decreased the amount of horizontal space used by autocompletion bubbles
    • Improved autocompletion typing performance by avoiding global forced layouts
  • Miscellaneous
    • Changed to allow undocked Web Inspector windows to be dragged around by the title text

Accessibility

  • Exposed misspelling ranges for editable content to accessibility clients.

Apple Pay

  • Added support for telling websites why a session was cancelled
  • Cleaned up handling of summary items and payment method updates

JavaScript

  • Added missing syntax errors for await in function parameter default expressions

WebGPU

  • Ensured structs and arrays with pointers as fields are disallowed
  • Removed null from the standard library

Web Authentication

  • Added support for more than two FIDO protocol versions

WebDriver

  • Fixed a bug that caused safaridriver —enable to not take effect immediately in some cases.

Release 92

JavaScript

  • Fixed Math.round() which produced a wrong result for value prior to 0.5
  • Made Promise implementation faster

WebGPU

  • Fixed matrices to have correct alignment
  • Implemented GPUUncapturedErrorEvent
  • Implemented SampleLevel(), SampleBias(), and SampleGrad() in WSL
  • Updated several interface and enum names to match specifications
  • Fixed fragment-only URL url(#fragment) to be resolved against the current document regardless of the HTML <base> element
  • Fixed SMIL animations of SVG <view> element
  • Made a change to get the value of the href attribute or the xlink:href attribute of SVG animation elements to get the animation target element

Images

  • Changed to respect EXIF orientations by default when images are rendered

Web API

  • Fixed copying and pasting two paragraphs with a newline between them resulting in a stray paragraph with newline inside
  • Fixed cancelled transitions on Google image search leaving content with opacity: 0 sometimes
  • Fixed document.fonts.ready resolving too quickly
  • Fixed responseXML for XMLHttpRequest in some cases returning null if a valid Content-Type ends with +xml
  • Made tabIndex IDL attribute reflect its content attribute
  • Updated HTMLImageElement::decode() to return a resolved promise for decoding non-bitmap images
  • Updated geolocation.watchPosition() and geolocation.getCurrentPosition() to return PERMISSION_DENIED when the context is not secure

Service Workers

  • Added missing origin check for Service-Worker-Allowed header
  • Added support for postMessage buffering between the Service Worker and window
  • Dropped support for registration resurrection

WebRTC

  • Added support to RTCDataChannel.send(Blob)
  • Fixed audio sometimes failing to be captured in WebRTC

IndexedDB

  • Changed to cache prepared SQLiteStatement in SQLiteIDBCursor to improve performance
  • Changed to use the SQL COUNT statement for count operations to improve performance
  • Updated the size of the database when the database operation is completed

Web Inspector

  • Network
    • Provided a way to view XML, HTML, and SVG resource responses as a DOM tree
  • Debugger
    • Added support for async event listener stack traces in Workers
    • Added support for event breakpoints in Worker contexts
    • Allow script resources to be blackboxed, which will prevent the debugger from pausing in that script
  • Resources
    • Provide a way to override the content of resources loaded over the network with local content in Web Inspector
    • Fixed issue where links to CSS resources didn’t map to the right line after pretty printing if the line is after a multiline comment
    • Fixed issue where the closing } of nested @media weren’t indented
  • Dark Mode
    • Fixed jarring white box-shadows in the Overview Timeline View in dark mode
  • Miscellaneous
    • Fixed import file pickers sometimes not importing

Accessibility

  • Fixed children cache to be re-computed if the tab index is removed

Security

  • Disabled TLS 1.0 and TLS 1.1 in WebSockets

Release 91

Security

  • Disabled legacy TLS 1.0 and TLS 1.1

JavaScript API

  • Added a public API for unhandled promise rejections
  • Added support for hashbang in ESNext
  • Implemented optional chaining in ESNext
  • Implemented StaticRange constructor
  • Fixed Date.prototype.toJSON to not throw an exception if toISOString returns an object
  • Fixed more missing exception checks in String.prototype
  • Fixed a bad error message when for-await-of is used in a non-async function
  • Fixed ProxyObject to not allow access to its target’s private properties
  • Updated the Promise constructor to check argument before `Construct?“
  • Updated Promise.prototype.finally to accept non-promise objects

JavaScript Performance

  • Changed to avoid looking up the join function each time Array.prototype.toString is called
  • Ensured x?.y ?? z is fast

Media

  • Fixed firing webkitpresentationmodechanged twice when exiting picture-in-picture
  • Updated to stop MediaDevices timer when stopping MediaDevices
  • Fixed removing fullscreen element in a requestAnimationFrame() callback after requestFullscreen() leaving fullscreen in an inconsistent state
  • Disabled devices should not be taken into account when searching for a capture device

Web API

  • Started to expose Geolocation interfaces (GeolocationPosition, GeolocationPositionError, and GeolocationCoordinates) on the global Window object
  • Fixed Emoji with variation selectors to be rendered in emoji style, not text style
  • Changed SVG elements to become focusable when focus and key event listeners are added
  • Changed the default tab index of output and fieldset to be -1

Rendering

  • Fixed drawing an animated image to a canvas via drawImage to draw the first frame

Pointer Events

  • Fixed removing the capture element preventing future pointer events from being dispatched on macOS

WebDriver

  • Fixed mouse buttons to be correctly printed in SimulatedInputDispatcher logging

Web Inspector

  • Elements
    • Fixed issue where “Copy Rule” menu item copied commented out properties incorrectly
    • Changed to automatically enable the event listener when setting a breakpoint on it in the Node details sidebar
    • Changed the DOM tree to always be LTR, even in RTL mode
  • Network
    • Changed the Headers pane to always be LTR, even in RTL mode
  • Resources
    • Added syntax highlighting for more CSS media queries
    • Added syntax highlighting for JavaScript BigInt
    • Added pretty printing support for more modern JavaScript language features
    • Fixed a CodeMirror issue where tabs were still used even when the “Prefer indent using” setting is set to “Spaces”
  • Debugger
    • Added a global breakpoint for pausing in the next microtask
    • Fixed an issue where the Assertion Failures breakpoint didn’t work when inspecting a JSContext
  • Console
    • Implemented queryHolders Command Line API function
    • Updated console.dir to start out expanded when given an object
    • Created additional Command Line API functions for other console methods
    • Changed the Console to always be LTR, even in RTL mode
  • Sources (Experimental)
    • Fixed an issue where the gear icon would move to the second line when the navigation sidebar is narrow
    • Fixed an issue where the “No Filter Results” message was displayed on top of all of the other content, preventing any interaction
    • Gave Origins their own icon in the navigation sidebar
    • Moved the resource type scope bar to be next to the filter in the navigation sidebar
    • Provided a way to create an arbitrary Inspector Style Sheet
  • Layers (Experimental)
    • Fixed the background of the 3D area not updating when transitioning to/from Dark Mode

WebGPU

  • Added unary plus
  • Changed enums to not be shadowed by local variables
  • Fixed WebGPU layers not showing up sometimes
  • Implemented GPUErrors for and relax GPUBuffer validation rules
  • Made operator== native and added bool matrices
  • Updated matrices to have constructors that take a flattened list of scalars
  • Updated vertex shader and fragment shader to be able to come from two different programs

Release 90

Web API

  • Fixed ping loads to not prevent page caching
  • Prevented autofocus for cross-origin iframes
  • Prevented navigations of frames about to get replaced by the result of evaluating javascript: URLs
  • Updated Element.outerHTML to link missing attribute prefixes in some cases in HTML documents
  • Updated the wrapper for navigator.geolocation to not become GC-collectable once its frame is detached

Media

  • Fixed an issue where muted <video> elements could block the display from sleeping

WebRTC

  • Fixed incorrect this in negotiationneeded event

WebGPU

  • Changed WebGPU to not force discrete GPU
  • Improved WHLSL compile-time performance
  • Removed char, short, and half types

Web Inspector

  • Elements
    • Added a way to disable or set a breakpoint on all event listeners for a given DOM node or event type in the Node details sidebar panel
    • Added showing @supports CSS groupings in the Styles details sidebar panel
    • Added experimental quick-action icon buttons to each CSS rule in the Styles details sidebar panel
    • Added display of radius values in Box Model section of the Computed details sidebar panel
    • Fixed an issue where CSS variable swatches were not shown for var() with a fallback in the Styles details sidebar panel
    • Fixed some RTL issues in the Computed details sidebar panel
    • Moved psuedo-selector rules before inherited rules in the Styles details sidebar panel
    • Moved the Box Model section to the top of the Computed details sidebar panel
  • Resources
    • Fixed brotli-compressed resources to correctly show as being compressed in the Resources details sidebar
    • Fixed to properly handle CSS comments with an escape character when pretty printing
  • Debugger
    • Added a global breakpoint for “All Events” which will pause whenever any event listener is about to be fired
  • Timelines
    • Made Heap Snapshots searchable
    • Fixed an issue where Develop > Start Timeline Recording didn’t work when focused on a detached Web Inspector window
  • Console
    • Changed to always show all navigation items in the header area of the split console
    • Fixed issue where the execution context picker didn’t update when switching to the inferred context from auto
    • Provided a way to set an alias for previous console evaluation values (e.g. $0, $1, …, $99) in case the inspected page has variables with the same name
    • Renamed queryObjects console command line API to queryInstances for clarity
    • Supported console.screenshot with dataURL strings
  • Overlay
    • Changed to show page width and height information
  • Settings
    • Added an Engineering pane to expose useful settings for WebKit engineers

Bug Fixes

  • Fixed dragging an image from Safari to Notes to correctly appear

Release 89

JavaScript

  • Implemented nullish coalescing with the ?? operator for ESNext

Web API

  • Added referrerpolicy attribute support for <script> elements
  • Changed window.openDatabase to be overridable
  • Fixed an IndexedDB error where the starting version change transaction may be neglected
  • Fixed the ability to unbold selected text when the system font is used
  • Made storing cross-origin top-level prefetches in HTTP cache optional
  • Moving right by word boundary right before an object element followed by a <br> element hangs
  • Removed support for beforeload on link=prefetch

Compatibility

  • Fixed Daring Fireball long press highlights that were unnecessarily inflated due to false illegibility
  • Fixed contextual menu actions for YouTube videos

Accessibility

  • Exposed the aria-label attribute for <video> elements

Media

  • Enabled a WebRTC debug mode without encryption
  • Fixed support for FLAC-in-MP4

Web Inspector

  • Added support for console.screenshot with detached (not in main DOM tree) <img> and <picture> elements
  • Added support for console.screenshot with ImageData and ImageBitmap
  • Added a “Show Grid” navigation item for the Images collection in the Resources tab
  • Added an indicator/separator around items in the Images collection in the Resources tab
  • Add special case for about:blank resources to show “Resource has no content” message
  • Fixed display of application/xml content for XHR requests
  • Fixed issues toggling multiple breakpoints when they’re collapsed into one line
  • Fixed Command-X (⌘X) to cut selected properties in the Styles sidebar
  • Made the Changes panel in the Elements Tab render with LTR text direction

WebGPU

  • Implemented errors for GPURenderPipeline creation
  • Added descriptive error messages in WHLSL
  • Changed checker to setError() when a property access node can’t commit its base type in WHLSL
  • Changed to return the zero-value enum in the enum-from-integer constructor when the integer is not a valid enum value in WHLSL
  • Made enums work in WHLSL
  • Updated matrix memory layout to match HLSL by laying out columns linearly in WHLSL

Release 88

JavaScript

  • Enabled Intl.PluralRules and Intl.NumberFormatToParts by default

WebRTC

  • Registered a MediaStreamTrack as media producer only if it is a capture track

Web API

  • Fixed XHR CORS requests getting logged twice on the server

Pointer Events

  • Updated to respect pointer capture when dispatching mouse boundary events and updating :hover

Rendering

  • Changed to avoid extra backing store on elements with overflow: scroll and visibility: hidden
  • Changed to trigger a compositing update when a video element is changing

Accessibility

  • Added accessibility announcement notifications to show, dismiss and selection change for the datalist suggestions view
  • Exposed HTML datalist accessibility
  • Enhanced support of aria-haspopup per ARIA 1.1 specification.Implemented support for ARIA roles: insertion, deletion, subscript, superscript, and time
  • Fixed ignored role="presentation" on HTML <table> elements for VoiceOver

WebGL

  • Hooked up WebGL’s back buffer in ANGLE backend on macOS

WebGPU

  • Added most of the remainder of the standard library
  • Implemented GPUError and error scopes
  • Made the destructor of VariableDeclaration non-virtual
  • Optimized the lexer
  • Removed the phase resolveCallsInFunctions

Web Inspector

  • Added support for pasting copied DOM nodes in the Elements tab
  • Fixed dismissing a blank property to no longer cause the rule to appear in the Changes panel
  • Fixed an issue where unbalanced quotes or parenthesis weren’t displayed as properly closed after editing values
  • Updated descendant DOM breakpoints be enabled, disabled, or deleted from a collapsed parent

Bug Fixes

  • Fixed paste from Notes into Excel 365 spreadsheet
  • Fixed video playback on xfinity.com/stream on macOS Catalina

Release 87

Web API

  • Changed openDatabase to return an empty object when WebSQL is disabled
  • Added an experimental behavior to prevent a 5 second delay for initial paint on pages that are using Google’s anti-flicker optimization when content blockers are enabled

Web Sockets

  • Added support for sending blob messages when using web sockets platform APIs

Payment Request

  • Changed to set state to Closed when show() is called during an active session

Experimental Web Shading Language (WHLSL)

  • Implemented arrays

Rendering

  • Fixed incorrect clipping with overflow: scroll inside overflow: hidden with border-radius
  • Fixed the preview of a <picture> element to match the element bounds

WebGPU

  • Made WebGPU enabled only on Mojave and later

Web Inspector

  • Implemented console.countReset
  • Implemented console.timeLog
  • Added additional demo audits for other WebInspectorAudit functions
  • Enable the Show Shadow DOM navigation item by default in the Elements tab

Known Issues

  • Open tabs are blank on initial launch after upgrading to Safari Technology Preview 87 and loading all tabs from the last session. To correct this behavior, reload open tabs or relaunch Safari Technology Preview.

Release 86

Pointer Events

  • Added support for chorded button interactions
  • Updated to fire pointerout and pointerleave events after firing pointercancel

JavaScript

  • Added support for String.prototype.matchAll)
  • Changed to throw a TypeError exception if Proxy’s set trap returns falsy value
  • Fixed JSON.parse to throw a syntax error when called without arguments

Web Assembly

  • Added support for Anyref tables, Table.get and Table.set for Anyref only
  • Added support for multiple tables
  • Added support for Table.size, grow and fill instructions
  • Fixed float64 “select” on ARM64 devices

WebRTC

  • Updated mediaDevices.enumerateDevices() to list the system default audio devices with deviceId as “default”

Web API

  • Fixed IntersectionObserver rootMargin detection failure when root is an element
  • Updated to avoid generating a new XSLT-based document when already changing the document.
  • Implemented tab-size with units
  • Included touch-action in the computed styles list

Security

  • Added wildcard to Access-Control-Allow-Methods and Access-Control-Allow-Headers
  • Changed blob URLs to inherit CSP policy from their parent
  • Changed data URLs to inherit their CSP policy from their parent

Experimental Web Shading Language (WHLSL)

  • Enabled compute shaders
  • Implemented array references
  • Implemented loop expressions
  • Implemented out-of-bounds and nullptr behavior
  • Supported matrices

WebGPU

  • Removed GPUBuffer.setSubData and implemented GPUDevice.createBufferMapped

Web Inspector

  • Included JavaScript call trees when exporting or importing Timeline recordings
  • Improved the performance of the CSS pretty printer by using a Worker
  • Split the General panel in the Settings tab into sub panels
  • Ensured that indent type and size settings are respected everywhere that there’s a CodeMirror editor
  • Added support for respecting case sensitive or regex global settings when searching in a resource
  • Changed to ensure that adding a DOM, Event, or URL breakpoint is enabled globally
  • Added support for multiline keys when using “Copy Path to Property”
  • Fixed an issue where longhand CSS properties that were overridden by shorthands didn’t have a strikethrough
  • Fixed an issue where query parameters in the Network tab would truncate if the value contained a =
  • Fixed an issue where the Inspector Style Sheet was missing when grouping resources by path

Release 85

Pointer Events

  • Updated to ensure that capturing data managed by the PointerCaptureController gets cleared upon navigation
  • Changed compatibility mouse events to be able to be prevented while the pointer is pressed
  • Exposed navigator.maxTouchPoints
  • Changed to only allow pointer capture if the pointer is in the active buttons state
  • Changed to not prevent mouseover, mouseout, mouseenter, and mouseleave events while the pointer is down
  • Changed toElement and fromElement on PointerEvent to be null
  • Changed mouseenter and pointerenter events to be fired from the bottom up

Editing

  • Fixed inserting a newline in contenteditable add one character, not two

Media

  • Added an option to mute audio capture automatically when page is not visible
  • Allowed for resizing camera video feeds to very small resolutions
  • Fixed createAnswer() SDP Rejected by setLocalDescription()
  • Fixed playing one video at a time for multiple videos with audio, and the autoplay and playinline attributes
  • Changed to hide MediaCapabilities.encodingInfo() when the platform does not support it.
  • Changed precedence for min-width to always win over max-width
  • Fixed font-optical-sizing to apply the correct variation value
  • Updated to include searching sub-selectors when determining the property whitelist for selector
  • Updated to preserve CSS Grid repeat() notation when serializing declared values

Web API

  • Fixed bounding client rect for an inline element in Intersection Observer
  • Implemented feature policy self, none, and * parsing
  • Implemented imagesrcset and imagesizes attributes on link rel=preload
  • Implemented Promise.allSettled
  • Fixed programmatic scroll in right-to-left overflow with async scrolling enabled
  • Added support for preferred presentation size when pasting an image
  • Made the computed width of non-replaced inline return computed style

JavaScript

  • Implemented support for Numeric Separators
  • Implemented opwide16 and opwide32 and introduced 16-bit version bytecode
  • Fixed InferredValue to not be a JSCell
  • Reduced metadata footprint
  • Changed createListFromArrayLike to throw a type error if the value is not an object

WebAssembly

  • Added support for anyref in globals

Web GPU

  • Updated vertex buffers and Input State API

WHLSL

  • Enforced variable lifetimes
  • Implemented property resolver
  • Improved the speed of parsing and lexing the standard library

Web Inspector

  • Exposed a way to get the current Audit version from within an Audit
  • Allowed arbitrary JSON data to be returned as part of the result of an Audit
  • Changed CSS modifications to be shared for rules that match multiple elements
  • Updated the debugger navigation sidebar to always reveal the active call frame when hitting a breakpoint
  • Moved the overlay rulers to the opposite vertical or horizontal side if they intersect the highlighted nodes so that no content is obstructed
  • Added a setting to show overlay rulers and guides whenever element selection is enabled

Release 84

This release covers the same revisions of WebKit from Safari Technology Preview 83, but includes new Safari and WebKit features that will be present in Safari 13. The following Safari 13 features are new to Safari Technology Preview 84:

Refreshed Favorites Design. The Favorites page has been visually refreshed, and now includes Show More and Show Less actions.

Switch to Tab from Smart Search Field. The Smart Search Field now offers switching to an already-open tab when a search query matches the title or URL of an open tab.

Warnings for Weak Passwords. When signing into a website with a weak password, Safari will prompt you to visit the website in a new tab to upgrade the password to an Automatic Strong Password. Safari uses the well-known URL for changing passwords (/.well-known/change-password), allowing websites to take users directly to their change password pages. The password list in Safari Preferences has also been updated to flag weak passwords.

Many more WebKit features in Safari 13 are present in this release of Safari Technology Preview and have been in past releases. You can read more about these changes in What’s New in Safari 13 Beta.

Release 83

  • Fixed isPrimary property of pointercancel events to match previous events for that pointer
  • Fixed calling preventDefault() on pointerdown to prevent “compatibility” mouse events

Storage Access API

  • Changed to only consume the user gesture when the user explicitly denies access and made document.hasStorageAccess() return true when the feature is off

Rendering

  • Implemented backing-sharing in compositing layers, allowing overlap layers to paint into the backing store of another layer
  • Changed layers painting into shared backing to contribute to overlap
  • Changed to repaint when the set of backing-sharing layers changes
  • Fixed rendering of backing-sharing layers with transforms
  • Fixed layer bounds for sharing layers that paint with transforms
  • Fixed layer-related flashing with composited overflow: scroll
  • Fixed overflow: scroll that becomes non-scrollable to stop being composited
  • Fixed content disappearing when the scroller hosting a shared layer becomes non-scrollable
  • Fixed rendering issues when layer contents become non-opaque

Service Workers

  • Changed to terminate a service worker instance when its SWServer is destroyed
  • Changed a service worker process to app nap when all of its clients app nap
  • Implemented line-break: anywhere
  • Implemented a modern “clearfix” with display: flow-root
  • Implemented page-break-* and -webkit-column-break-* as legacy-shorthands.
  • Fixed font-optical-sizing applying the wrong variation value
  • Updated CSS grid when changing auto repeat type
  • Updated to use max size to compute auto repeat CSS grid tracks

WebRTC

  • Defined a media buffering policy
  • Allowed sequential playback of media files when initial playback started with a user gesture
  • Fixed video stream freezing when the front camera orientation changes

WebDriver

  • Fixed the in-view center point for elements larger than the viewport

Web API

  • Changed to preserve DOM selection after clicking a button that hides itself on mousedown
  • Limited the number of prefetches of a given page

Web Inspector

  • Changed the user gesture toggle to also force a user interaction flag
  • Fixed the colors in the network table waterfall container for Dark Mode
  • Fixed context menu items in the DOM tree when not clicking directly on the node representation in the Elements tab
  • Fixed Storage tab crashes when adding new local storage or session storage entries
  • Fixed the CPU timeline and Memory timeline bars sometimes incorrectly drawing and jumping around while scrolling
  • Made it easier to switch to a DOM node in the Elements tab from a returned DOM node in the Audit tab

Release 82

Web API

  • Enabled Fetch Keep Alive by default
  • Changed to resolve the percentage values of inset properties against proper box.
  • Changed to use the normal loading path for ping loads
  • Fixed propertyRegistry() to be overridden for SVGFEFloodElement and SVGFEMergeElement
  • Fixed programmatic scrolling with async overflow scroll
  • Marked U+01C0 as a homograph of U+006C
  • Updated WebKit to rely more on ICU’s UTF-8 support

JavaScript

  • Fixed crash when opening the inspector when using already in-flight generators and async functions
  • Changed setting a frame src attribute to not run a JavaScript URL synchronously

Media

  • Changed WebAudio Node JS wrappers to not be collected if events can be fired
  • Updated getDisplayMedia to require a user gesture
  • Updated XMLHttpRequest to propagate user gestures for media playback

Storage

  • Made a change to stop IndexedDB transactions to release locked database files when network process is ready to suspend
  • Updated to terminate Service Worker processes that use too much CPU
  • Updated to terminate unresponsive Service Worker processes
  • Fixed font-weight: 1000 to be parsed successfully
  • Fixed transform sometimes being left in a bad state after an animation

Accessibility

  • Fixed the hit-point of a link that spans multiple lines

Web Inspector

  • Updated support for dragging a node to the console to log the node
  • Added support for recording actions performed on WebGL 2 contexts

Web Driver

  • Used a more informative key to indicate automation availability

Web Authentication

  • Added a check to require a call to WebAuthn from a focused document

WebGPU

  • Moved gpu API entry point from window to navigator

Browser Changes

  • Changed unchecking “Allow websites to ask for permission to send notifications” to also disable prompting for HTML5 notifications

Release 81

Dark Mode

  • Renamed supported-color-schemes to color-scheme
  • Standardized the <meta name="color-scheme"> separator

JavaScript

  • Added support for incremental bytecode cache updates

WebRTC

  • Allowed the MediaSource API to be enabled via website policy
  • Prevented restarting WebRTC stats timer if backend is stopped
  • Supported RTCDataChannel blob binaryType
  • Added support for parsing FairPlayStreaming PSSH boxes.

Media

  • Updated AudioSession route sharing policy
  • Fixed layout issues occuring when entering full screen mode

Layout

  • Added @page margin support
  • Fixed synthesized baseline for CSS Grid and CSS Flex

Accessibility

  • Removed deprecated Accessibility Object Model events

Web API

  • Changed requestAnimationFrame to execute before the next frame
  • Changed visited link hash to be computed only once
  • Fixed link clicks in PDFs to not send referrer headers

Storage

  • Changed to clear cache storage structures before removing all related files
  • Delayed initialization of quota users until the first quota request
  • Fixed blob type not getting stored correctly in IndexedDB when IDBObjectStore has autoIncrement and keyPath options

Security

  • Changed to Ignore X-Frame-Options header when frame-ancestors CSP directive is present
  • Implemented remembering device orientation permission for the duration of the browsing session

Web Inspector

  • Added line and column numbers with source location when logging CSP messages to the console
  • Added support for drag-and-drop to import files in the Canvas and Audit tabs
  • Added support for drag-and-drop to import HAR archives in the Network tab
  • Added support to show Worker imported scripts in the Open Quickly dialog even if Web Inspector is opened after the Worker was created
  • Changed to prevent starting property selection when pressing the right mouse button in the Styles sidebar
  • Changed to show a resource in the Debugger even if an extension script throws a parse error
  • Changed to include the number of Network Requests in the Statistics section of the CPU Usage timeline
  • Ensured that object previews with Promises don’t add unnecessary catch handlers that prevent rejectionhandled events from being fired in the Console
  • Ensured that tracking stops for the CPU Usage Timeline when disconnecting Web Inspector
  • Fixed an issue where navigating to a resource sometimes shows a different resource
  • Made starting and stopping a recording more consistent and reliable in the Timelines tab
  • Provided a more obvious way to return to the overview when viewing imported recordings in the Canvas tab
  • Updated to preserve multiple selection in the Elements tab when switching tabs
  • Updated to disable special breakpoints when they are deleted in the Sources tab

WebDriver

  • Added hooks to make it possible to easily run WPT WebDriver web server by itself
  • Fixed JavaScript evaluation failures if a dialog is shown
  • Fixed enter fullscreen error handling code
  • Fixed the Set Cookie endpoint to correctly set subdomain cookies

Web GPU

  • Implemented support for indexed drawing
  • Prevented narrowing conversions during Metal function calls on 32-bit platforms

Privacy Preserving Ad Click Attribution

  • Added the privacy preserving Ad Click Attribution API as an experimental feature

Release 80

WebGPU

  • Updated setBlendColor, setViewport, setScissorRect in GPURenderPassEncoder
  • Replaced unsigned longs in WebGPU with uint64_t
  • Standardized WebGPU object reference counting and creation logic
  • Removed WebMetal experimental feature in favor of WebGPU

Web API

  • Implemented ResizeObserver
  • Added support for “noreferrer” window feature to window.open()
  • Added support for <object>.contentWindow
  • Changed window.closed to true immediately when close() is invoked
  • Changed to close the service worker database on network process suspension
  • Changed Fetch to allow used body replacement in Request constructor
  • Fixed HTML fragment serialization to not strip whitespace from URL attribute values
  • Made someWindow.frames, someWindow.self, someWindow.window always return someWindow, even without a browsing context
  • Removed conditional parsing of <noembed> content in the HTML parser
  • Fixed the loadstart event for XMLHttpRequestUpload to be correctly initialized
  • Fixed getBoundingClientRect returning an empty rect on a collapsed range
  • Fixed the select element not showing a popup if the element lost focus while the popup was previously shown
  • Pasting a table from Confluence strips table cell content
  • Updated to ensure resetting the storage quota takes into account third party origins

SVG Animation

  • Fixed SVG Animation (SMIL) on <text> or <tspan> to work correctly on the second run

Media

  • Added support for muting screen capture and camera/microphone independently
  • Implemented white-space: break-spaces value
  • Removed functionality for -apple-trailing-word
  • Allowed FontFace names which start with a number

Accessibility

  • Prevented <svg> elements with labels and no accessible contents from getting exposed as empty AXGroups
  • Changed to automatically compute accessibility labels for Apple Pay buttons

Web Inspector

  • Added support for showing WebGPU contexts in the Canvas Tab
  • Added support for showing the resource initiator in the summary of the headers in the Network Tab
  • Adjusted the energy impact thresholds in the CPU Usage Timeline
  • Ensured that the Script Profiler debugging thread is not counted as part of the page usage in the CPU Usage Timeline
  • Disabling a breakpoint for a specific event listener no longer removes it from the list of breakpoints
  • Prevented breakpoints for attribute modifications from firing when breakpoints are disabled
  • Prevented single clicks from following links in text editors that are not read-only

Safari Extensions

  • Legacy Safari Extensions (.safariextz files) are no longer supported. Safari App Extensions and Content Blockers, which can take advantage of powerful native APIs and frameworks as well as web technologies, can be distributed with apps in the App Store or from developers’ websites. You can learn more at developer.apple.com/safari/extensions/.

Release 79

Web Authentication

  • Implemented FIDO AppID extension

Accessibility

  • Implemented support for new meter ARIA role

Service Workers

  • Changed to use a ServiceWorker process per registrable domain

Browser Changes

  • Blocked all plugins smaller than 5px × 5px
  • Fixed CSS grid container baseline alignment for orthogonal items
  • Fixed a single leading space not being considered as a word break even when word-break: break-all is set

Web API

  • Changed to use smaller default storage quotas for third-party frames
  • Fixed Intl.DateTimeFormat to obey 2-digit hour
  • Fixed toggling display: contents to display: none failing to hide the element

Web Inspector

  • Added support for import and export of timeline recordings in the Timelines tab
  • Added support for HAR import in the Network tab
  • Added a toggle to switch between live activity and Imported HAR resource collections in the Network tab
  • Added a HAR extension for resource priority in the Network tab
  • Added a HAR extension for serverIPAddress port number in the Network tab
  • Added icons for WebGL2 contexts in the Canvas tab
  • Added support for style attribute changes to get tracked in the Changes sidebar
  • Added support for a way to filter out all Console messages, evaluations, or results
  • Added support for ::-webkit-scrollbar* rules being shown in the Styles sidebar
  • Added a flattened Timeline overview that shows all records, one per line in the Timelines tab
  • Changed to show when preventDefault() was called on an event or not in the Timelines tab
  • Changed to support DOM searches to be case sensitive in the Search tab
  • Fixed the WebGL action icon to not invert when selected in the Canvas tab
  • Fixed changes to CSS resources only taking effect once editing stops
  • Fixed getEventListeners to work for any EventTarget in the Console
  • Fixed pausing in an inline script on a page with a URL query creating an Extra Script in the Debugger tab
  • Fixed selecting a node in a different frame to automatically switch the Console prompt’s execution context
  • Fixed HAR Export duplicating blocked time and send time if there was no DNS or Connect block in the Network tab
  • Fixed Page Weight indicator clearing on pages with zero length resources
  • Fixed canvas being rendered twice per frame in the Canvas tab
  • Fixed collapsing a section not shrinking the space used by that section in the Source tab
  • Fixed disabled breakpoints banner to be sticky in the Sources tab
  • Fixed group by path names to not use the resource file name in the Sources tab
  • Fixed editing the selector to not hide the rule in the Styles sidebar
  • Fixed the “jump to effective property” button not hiding after overridden property becomes effective in the Styles sidebar
  • Fixed export on about:blank causing the suggested filename to contain a colon and silently fail in the Timelines tab
  • Gave long thread names a tooltip if they could be truncated in the CPU Usage timeline
  • Included window as part of any event listener chain in the DOM
  • Provided $event in the Console when paused on an event listener
  • Provided a way to capture a screenshot of a node from within the page32
  • Provided a way to get the contents of resources for audits in the Audit tab
  • Provided option to group by path in the Sources tab
  • Reduced the intensity of the orange overlay color for dark mode in the CPU Usage timeline

Release 78

Pointer Events

  • Enabled support for Pointer Events by default
  • Added support for Pointer Events on macOS

Web Inspector

  • Enabled the CPU Usage timeline by default
  • Added an Energy Impact section to the CPU Usage timeline
  • Added Statistics and Sources sections to the CPU Usage timeline
  • Added CPU Usage categorization per-thread and per-worker
  • Added support for system accent color throughout the user interface
  • Added node contextual menu items for event listeners sorted by node in the Elements tab
  • Added support for shift-clicking a variable swatch to replace the text with the variable’s value in the Styles sidebar
  • Added support for Control-Space to toggle the auto-completion menu in the Styles sidebar
  • Added a go-to button for overridden CSS properties to jump to the effective property in the Styles sidebar
  • Added the version number in the UI of the Audit tab
  • Added export Canvas recording as HTML in the Canvas tab
  • Changed to remove event listeners once a recording is ready in the Canvas tab
  • Changed to stop showing the auto-stop UI when not inspecting a page in the Timelines tab
  • Changed enabling “Stop when page loads” toggle to stop any active recording if the load event has already occurred in the Timelines tab
  • Changed to allow image collections to be filtered by type in the Sources tab
  • Changed breakpoints to be disabled when an audit is running
  • Changed to not enable breakpoints when the source location changes in the Debugger tab
  • Changed to highlight the node when hovering event listeners sorted by node in the Elements tab
  • Fixed color swatches for valid inputs with leading or trailing whitespace in the Canvas tab
  • Fixed DOM, URL, and Event breakpoints to grey out when all breakpoints are disabled in the Debugger tab
  • Fixed the ability to select records in the bottom 16px of the timeline overview graph
  • Fixed unreadable text in bezier curve editor numeric input fields in dark mode
  • Fixed popover colors when transitioning to and from dark mode
  • Fixed DOM event breakpoints firing when breakpoints are disabled
  • Fixed frequent flashing of DOM node attributes in the Elements tab
  • Fixed the keyboard shortcut for the Settings tab on non-US keyboards
  • Fixed no results when opening to Search tab
  • Improved handling past recordings in the Timelines tab
  • Updated to only show changes for the given node in the CSS Changes sidebar

WebDriver

  • Fixed string not getting terminated with a null character

Web API

  • Adjusted XMLHttpRequest Content-Type handling
  • Added support for the referrerpolicy attribute
  • Implemented further CORS restrictions

Accessibility

  • Added remote search support for keyboard focusable element search type

Media

  • Removed HEVC as a codec requiring hardware support

Release 77

WebRTC

  • Fixed getUserMedia with an ideal deviceId constraint to always select the correct device
  • Made navigator.mediaDevices SecureContext

Web API

  • Fixed WebSocket to not fire events after being stopped
  • Fixed Same-Site Lax cookies to be sent with cross-site redirect from a client-initiated load
  • Updated the MIME type parser

CSS Grid

  • Changed to handle indefinite percentages in fit-content()

Accessibility

  • Fixed HTML5 <footer> tag to be read as an ARIA Landmark to VoiceOver
  • Fixed incorrectly mapping the <meter> element to progressbar

Media

  • Fixed setting fullscreen pseudo-classes outside of root when entering fullscreen from inside of a shadow root
  • Changed inline WebVTT styles to start with ::cue

Web Inspector

  • Added emulation of user gestures from Web Inspector console
  • Added built-in accessibility tests to the Audit tab
  • Added a macOS user-agent option in the device settings menu
  • Added an experimental setting to merge Resources and Debugger tabs into a single Sources tab
  • Changed how selected items are tracked in trees and tables to improve performance
  • Changed Command-/ (⌘/) to toggle the edited property in the Styles sidebar
  • Changed typing ; to not focus on the next property when there’s open parenthesis or open comment in the Styles sidebar
  • Changed clicking a CSS property or selector to always select its text in the Styles sidebar
  • Fixed all actions after an offscreen path modification getting marked as offscreen path errors in the Canvas tab
  • Fixed an issue where taking a second Canvas recording wouldn’t select the Initial State of the new recording
  • Fixed clearing the selection when dragging a selection outside of the selected element in the Console
  • Fixed the dim appearance of commas in CSS selectors for dark mode
  • Fixed the DOM Content Loaded blue marker for dark mode
  • Fixed the Network Overview Graph segments box shadow for dark mode
  • Fixed node-specific event breakpoints to get cleared or recalculated on navigation
  • Fixed highlighting a node when hovering inside an object preview
  • Fixed the navigation sidebar showing “No Search Results” when a slow search is in progress
  • Fixed Scripts Timeline loading indicator margins in right-to-left mode
  • Fixed valid values in style attributes getting reported as unsupported property values in the Styles sidebar
  • Improved the Scripts timeline on-going-recording in dark mode
  • Improved categorization of JavaScript Class instances in the Heap Snapshot instances view
  • Provided a way to avoid a Timeline recording auto-stop on reload
  • Provided a way to make searches case-sensitive or use a regular expression

Bug Fixes

  • Fixed a bug that caused loading on some sites to hang in Safari Technology Preview

Safari app Extensions

  • Made the window.safari object available in frames opened to safari-extension:// resources

Release 76

Dark Mode

  • Fixed overflow element scrollbar for dark mode content

WebRTC

  • Fixed RTCRtpSender.getCapabilities("video") before initial offer breaking VP8

Web API

  • Simplified and streamlined code that creates an appropriate document based on MIME type
  • Aligned with Fetch on data: URLs
  • Fixed scroll-snap-align to be honored on a child with non-visible overflow

Rendering

  • Added basic scrollability for async overflow scrolling
  • Fixed first paint getting blocked by async or deferred scripts
  • Fixed jumpy async overflow scrolling if the main thread is busy
  • Fixed rendering for async overflow scroll with border-radius

Payment Request

  • Updated to allow requiring a phonetic name for shipping contacts

Media

  • Updated inline WebVTT styles to start with ::cue
  • Updated to always stop ducking audio after audio capture ends

Web Inspector

  • Added the ability to Import and Export Heap Snapshots
  • Added context menu items to copy a resource’s HTTP request or response data
  • Added keyboard shortcut to the Export button tooltip in the Audit tab
  • Added icons for media event types
  • Fixed selection getting broken after deleting the selected node
  • Fixed the Memory timeline starting from zero when both CPU and Memory timeline are enabled
  • Fixed missing resource data for the document on reload in the Resources tab
  • Fixed timeline Detail views to reset properly when a new time range selection contains nothing in the Timelines tab
  • Fixed timeline graphs that have drawing issues with multiple discontinuities in the Timelines tab
  • Fixed timeline time range selection to show duration alongside start and end in the Timelines tab
  • Fixed clicking on an empty space in the overview to deselect any selected record bar in the Timelines tab
  • Reduced the time spent updating related resources in the Details sidebar of the Resources tab when loading a page with lots of resources
  • Updated the Styles sidebar to automatically close unbalanced quotes and parenthesis when editing values
  • Updated the Styles sidebar with an easier way to select a single line

Browser Changes

  • Added a “Reset All to Defaults” option in the Experimental Features menu of the Develop menu

Release 75

WebRTC

  • Enabled Screen Capture
  • Updated track sources to be unmuted whenever re-enabled after setDirection changes
  • Updated Screen Capture to correctly handle rotation for local video playback

Intelligent Tracking Prevention

  • Added the ability to enable and disable Intelligent Tracking Prevention Debug Mode in the Develop menu

Web Authentication

  • Changed the nonce in the CTAP kInit command to weak random values

Media

  • Allowed <video> elements not in the DOM to AirPlay

Accessibility

  • Added support for returning relative frames for accessibility
  • Changed the AXSelected attribute on RadioButton to not be settable

Layout

  • Fixed the position of layers nested inside of composited overflow-scroll
  • Updated animations to only trigger layer re-compositing when necessary

Web API

  • Implemented PerformanceObserver.supportedEntryTypes
  • Fixed a bug where sendBeacon to a previously-unvisited HTTPS domain would always fail
  • Improved Fetch data: URL handling to align with standards

WebDriver

  • Added support for running subtests
  • Added support for simulating single touches to Automation.performInteractionSequence
  • Updated Automation.computeElementLayout to return Visual Viewport-aware coordinates
  • Updated POST commands to require a valid parameters object

Web Inspector

  • Added Changes sidebar panel to Elements tab
  • Added support for CSS Color 4 color syntaxes
  • Added supports key to test/group for compatibility in the Audit tab
  • Added a mechanism for Web Inspector to edit page settings on a remote target
  • Added a mechanism for Web Inspector to edit page WebRTC settings on a remote target
  • Added a mechanism for Web Inspector to edit the user agent of a remote target
  • Added grouped CSS rules by resource to the Changes sidebar panel
  • Added a CPU usage timeline in the Timelines tab
  • Added new mechanisms for getting related Accessibility nodes and properties for a given node for audits in the Audit tab
  • Changed the style of the device settings override popover content
  • Changed the Elements tab to toggle visibility for all selected nodes
  • Enabled computed style cascades by default in the Styles sidebar
  • Excluded Debugger Threads from CPU usage values in Web Inspector
  • FIxed a bug that prevented audits from being imported in the Audit tab
  • Improved Dark Mode appearance within Memory timeline
  • Improved invalid Audit and Recording JSON error messages
  • Updated the Memory Timeline View to be responsive when resizing
  • Updated the Audit tab to ensure that each test run creates its own injected objects
  • Updated the Network waterfall column to redraw when adding or removing new columns
  • Updated Web Inspector to show the uncaught exception view for unhandled promise rejections
  • Updated CSS Grid to properly handle static positions of absolute-positioned inside grid items
  • Implemented flow-relative inset properties
  • Implemented flow-relative margin, padding and border shorthands
  • Changed to reject unitless length quirk in the inset shorthand

Browser Changes

  • Removed support for the expired Do Not Track standard to prevent potential use as a fingerprinting variable.

Bug Fixes

  • Fixed snapshots removed too late after swiping back on Twitter
  • Fixed history navigations to twitter.com that were leading to a 403 HTTP error
  • Fixed a loading hang that could occur on history navigation
  • Updated the MIME-type parser

Release 74

Fetch API

  • Implemented abortable fetch

Web Animations

  • Changed to compute animation effect timing properties in batch

Web Authentication

  • Changed the nonce in the CTAP kInit command to weak random values
  • Imported U2F command and response converters from Chromium
  • Added support for U2F HID Authenticators on macOS

WebRTC

  • Enabled MDNS ICE candidate support by default

Media

  • Changed <video> elements to not enter “paused” state when playing to the end over AirPlay
  • Defined page media state flags for display capture
  • Changed to deactivate audio session whenever possible
  • Added support for new rgb() and rgba() syntax described in the CSS Color Level 4 specifications
  • Added support for calc() expressions in gradient color stops
  • Changed absolute positioned items to reference implicit grid lines

Web API

  • Added an override of the session configuration for cookieAcceptPolicy
  • Enabled visual viewport API by default
  • Changed to no longer trigger a main frame load when doing a history navigation if the source and destination history items are clones
  • Fixed Bulgarian TLDs to not punycode-encode URLs with Bulgarian Cyrillic characters
  • Fixed an issue where view is unresponsive for 5 seconds after swiping back on sites like quoteunquoteapps.com
  • Fixed the parsed protocol of JavaScript URLs with embedded newlines and carriage returns to match the parsed protocol in Chrome and Firefox
  • Fixed unwanted page navigation after showing and dismissing contextual menu with control-click

Service Workers

  • Fixed Service Worker fetch handler that resulted in a bad referrer
  • Updated Service Worker fetch to obey its referrer policy

JavaScript

  • Optimized Object.prototype.toString

Accessibility

  • Updated the accessibility string for the <hr> HTML tag to use “separator” instead of “rule”

Web Inspector

  • Added a Setting toggle for Source Maps
  • Added the ability to allow audits to be enabled or disabled in the Audits tab
  • Added the ability for audits to determine whether a give node has event listeners when running an audit
  • Added the ability for audits to query for all nodes with a given computed Accessibility role when running an audit
  • Changed to automatically disable breakpoints when running an audit in the Audit tab
  • Changed the Network tab to show secure connection details per-request
  • Changed to use the save sheet instead of a dialog when clicking the “Export” button in the Network tab
  • Extended XHR breakpoints to work with Fetch
  • Fixed the color picker to accurately show color when the saturation value is not 100%
  • Fixed support for “white” as a recognized color keyword
  • Fixed text field and completion popover fonts to match in the Events breakpoint popover
  • Fixed showing completions for events that start with “DOM” when typing uppercase “DOM” in Event breakpoints
  • Fixed vertical alignment of group titles in the Settings tab
  • Fixed read-only properties from being able to be deleted in the Styles sidebar
  • Fixed pressing down key on an empty value field discarding the completion popover in the Styles sidebar
  • Fixed selection becoming lost in the Styles sidebar when Web Inspector is blurred
  • Fixed undo to prevent it reverting all changes at once in the Styles sidebar
  • Implemented queryObjects Command Line API
  • Included globalThis in default JavaScript completions
  • Prevented starting a selection when clicking on a property that is being discarded in the Styles sidebar

WebDriver

  • Changed element click and other commands to appropriately handle user prompts
  • Updated the Create Window implementation to support the newest specification

Storage

  • Fixed IndexedDB storage of Crypto keys in private browsing mode
  • Fixed deleting IndexedDB databases to ensure open databases are not missed
  • Made “Disable Web SQL” on by default

Security

  • Fixed CSP violation reports to bypass CSP checks

Release 73

Web API

  • Fixed navigator.userAgent in service workers to correctly reflect the customUserAgent set by the client
  • Fixed offsetLeft and offsetParent to adjust across shadow boundaries
  • Fixed an incorrect value for key property in keydown and keyup events generated holding Control (⌃) key
  • Removed support for <meta http-equiv=set-cookie>

JavaScript

  • Added support for globalThis
  • Added support for BigInt in JSON.stringify
  • Implemented support for BigInt ValueDiv into DFG
  • Implemented DFG and FTL support for typeof in BigInt
  • Implemented the “well-formed JSON.stringify” proposal
  • Optimized Object.keys by caching key results
  • Fixed percentages in relative offsets for CSS grid items
  • Fixed thick overlines and line-throughs growing in the wrong direction
  • Fixed CSS variables to work for colors in the border property
  • Prevented attempting to animate invalid CSS properties
  • Updated CSS Properties and Values API to use new cycle fallback behavior
  • Updated repeated background images with zero size to display the background color

Media

  • Changed EME MediaKeySystemConfiguration distinctiveIdentifier and persistentState to default to optional
  • Changed inline WebVTT styles should override styles from Captions settings in System Preferences
  • Updated PiP video to switch tabs before returning video to inline
  • Changed playing a media element synchronously after setting srcObject to succeed without user gesture
  • Fixed a flicker when exiting element-fullscreen

WebRTC

  • Ensured the first video frame of a MediaStream is rendered
  • Fixed the MediaStream calculation of width or height when constraints contain only one of them
  • Ensured that an ended event fires on MediaStreamTrack when a USB camera is unplugged
  • Made RTCRtpSender.setParameters activate specific encodings
  • Made sure getSenders() and getReceivers() do not return closed transceiver senders or receivers
  • Implemented non-timeslice mode encoding for MediaRecorder
  • Made sure RTCRtpTransceiver.stopped is true when a remote description with the corresponding m section rejected is applied

Web Animations

  • Changed Web Animations to ensure an animation’s finished state only occurs once when updating animations

Web Authentication

  • Changed userPresence to always be true

WebGPU

  • Implemented WebGPUBindGroupLayoutDescriptor and its supporting dictionaries
  • Added basic implementation of vertex buffers with Metal Shading Language in WebGPU

Web Inspector

  • Enabled the display of m3u8 content as text in the Network tab
  • Ensured that localized strings in default audits respond to locale changes in the Audit tab
  • Fixed clipping of “Clear Filters” button in short windows in the Audit tab
  • Fixed descriptions of default tests in the Audit tab
  • Provided localization support for the display of “percentage passed” results in the Audit tab
  • Fixed autoformat for minified JavaScript
  • Fixed alignment of path view in the Canvas tab
  • Fixed initial focus state of the recording auto-capture input in the Canvas tab
  • Fixed selected text color when Inspector window is inactive in dark mode
  • Fixed colors of ThreadTreeElement status icon when hovered in dark mode
  • Fixed background color of Type profiler popovers in dark mode
  • Improved readability for tables containing object previews in dark mode
  • Fixed which element gets selected after pressing an arrow key after undoing deletion of a DOM node in the Elements tab
  • Fixed Charles Proxy errors when opening some HAR files exported from Safari
  • Fixed disappearing reload button after changing more than one setting
  • Fixed the spacing of “E” icon on the debugger dashboard
  • Fixed the rendering of column sort controls for dark mode in the Layers tab
  • Increased the default column width for some localizations in the Layers tab
  • Fixed the alignment of experimental setting editors for some localizations in the Settings tab
  • Fixed a problem in the Styles sidebar where focus was lost when the inspector is blurred
  • Fixed shift-clicking a color-swatch to change formats in the Styles sidebar
  • Fixed data corruption when toggling selected properties in the Styles sidebar
  • Improved the usability of the Computed styles sidebar when the panel is narrow
  • Made the “esc” key select the entire property when editing the name or value in the Styles sidebar
  • Prevented table selection from becoming corrupted when deleting selected cookies
  • Fixed labelling of Intersection Observer callbacks in the Timelines tab

Release 72

Web Authentication

  • Added support for CTAP HID authenticators on macOS

CSS Painting API

  • Added CSS Painting API support for multiple worklets.
  • Changed the CSS Painting API to pass this to the paint callback, and repaint when properties change.
  • Updated the CSS Painting API to allow image values in inputProperties
  • Updated the CSS Painting API to scale the display list when drawing

Web API

  • Changed CSS subresource loads to not be observable from resource timing if the stylesheet is opaque
  • Changed overflow scrolling layers to be self-painting
  • Changed to prevent computing animated values when there is no relevant animation
  • Fixed XMLHttpRequest to prevent removing spaces from content-types before processing
  • Fixed HEAD requests becoming changed to GET requests after 301, 302, and 303 redirects
  • Fixed document.lastModified to work for non-rendered documents
  • Fixed IndexedDB with binary data (Uint8Array) and autoIncrement key in store
  • Modernized version checks for same site cookie support
  • Restricted the DeviceMotion and DeviceOrientation APIs to secure contexts

WebRTC

  • Added support for firing the devicechange event when more capture device information is revealed when getUserMedia is granted by user
  • Fixed the devicechange event to not fire in frames that can’t access capture devices
  • Changed scaled video frames to be resized in letterbox mode
  • Fixed DataChannels created asynchronously to open properly
  • Fixed calling getUserMedia in a link that was opened with target="_blank" to work properly the second time
  • Fixed the case of a sender created through addTransceiver whose track is populated using addTrack

Web Inspector

  • Enabled selection of multiple properties by default in the Styles sidebar
  • Fixed $0 being shown for all selected elements in the Elements tab
  • Fixed jumping from Computed to Styles to correctly select the property in the Elements tab
  • Fixed the overlay bounds rulers to match the element when the page is scrolled
  • Fixed disclosure triangles for RTL to be flipped and aligned right
  • Fixed the selection of properties of read-only rules in the Styles sidebar
  • Updated the selected DOM node scope highlight to improve contrast in the Elements tab
  • Updated ⌘A to select all visible nodes in the Elements tab
  • Fixed “Add Default Audits” shown when there are no filter results in the Audit tab
  • Fixed empty results folder shown after clearing filters in the Audit tab
  • Fixed navigating while tests are running to properly stop and clear all results in the Audit tab
  • Fixed the sidebar briefly showing “No Filter Results” before populating default audits in the Audit tab
  • Updated to save the expanded state of test groups in the Audit tab
  • Updated test tree elements to start out collapsed in the Audit tab
  • Updated tests to support async operations in the Audit tab

Web Share API

  • Fixed the share overlay to properly stick to the Safari window

Media

  • Fixed the lifetime of the HTMLMediaElement to be properly handled in asynchronous actions

JavaScript

  • Enabled .mjs content when loaded from file://
  • Added BigInt support for logic operations
  • Implemented BigInt support for << and >>

Service Workers

  • Fixed updating a service worker during a navigation load sometimes causing the load to fail

Release 71

Dark Mode

  • Enabled Dark Mode CSS Support by default in the Experimental Features menu
  • Added experimental support for a supported-color-schemes CSS property
  • Updated prefers-color-scheme media query matching to better match the draft spec
  • Changed the default document background and text colors in dark mode and when dark is listed as a supported-color-schemes on the document or body element
  • Added support for forcing color scheme (dark or light mode) in Web Inspector’s Elements tab

Web Animations

  • Enabled Web Animations by default in the Experimental Features menu

Intersection Observer

  • Enabled Intersection Observer by default in the Experimental Features menu

Web Authentication

  • Added Web Authentication as an experimental feature with support for USB-based CTAP2 devices

Web API

  • Fixed click event and touch event listeners on the body element
  • Fixed input element gaining focus when a selectstart event listener on the document prevents the default action
  • Fixed phantom focus events and blur events firing when clicking between text input fields with addEventListener
  • Fixed Content-Type parameter values to allow empty quoted strings
  • Changed CSS Painting API to pass size, arguments, and input properties to the paint callback
  • Fixed incorrectly sized monospace text when an SVG is included as an <img>
  • Fixed SVG <use> element inside a shadow tree to be able to reference an element in the same tree
  • Fixed updating href on textPath to properly update its rendering
  • Unprefixed text-decoration CSS3 properties
  • Fixed normal-flow-only flex items to correctly respect z-index
  • Fixed overlays with -webkit-overflow-scrolling:touch to become scrollable after added text makes it taller

Rendering

  • Made compositing updates incremental
  • Changed to update the transform of a composited layer when the layer also needs repainted
  • Fixed the caret disappearing at the end of a password field when the caps lock indicator is shown
  • Fixed invisible dotted underlines that skip descenders
  • Added support for dynamic pseudo-classes on elements with display: contents
  • Fixed positioned text underlines that can look like a strike-through

Intelligent Tracking Prevention

  • Enabled a cap on partitioned cache max age

WebRTC

  • Required <iframe allow="display"> for an iframe to use getDisplayMedia
  • Added support for RTCRtpCodecParameters.sdpFmtpLine
  • Added support for transportStats and peerConnectionStats
  • Enabled setting RTCRtpTransceiver.direction
  • Fixed RTCPeerConnection.getTransceivers to always expose all transceivers

Web Inspector

  • Added support for the tab bar to automatically add a new Audit tab for running page audits when enabled in Web Inspector Experimental settings
  • Added default tests to the Audit tab
  • Added support for drag-and-drop for importing Audits in the Audits tab and Recordings in the Canvas tab
  • Changed to not start the Canvas tab with auto-capture enabled
  • Added support for the copy keyboard shortcut and context menu to the Cookies table
  • Fixed the Debugger Popover to work when paused in a Worker
  • Fixed Elements tab to allow selecting and deleting multiple DOM nodes
  • Fixed missing minimum sizes in Network graphs that could cause no graph to be shown
  • Added secure certificate details per-request in the Network tab
  • Added a button to show the system certificate dialog in the Network tab
  • Fixed a potential issue for watch expressions that never show results
  • Added support for ⌘A (Command-A) to select all properties in the Styles sidebar
  • Added support for ⇧Click (Shift-click) on a property to extend the selection in the Styles sidebar
  • Fixed inline swatches when multiple properties selection is enabled in the Styles sidebar
  • Changed Pressing ⇥ (Tab) or ↩ (Enter) to start editing the focused property in the Styles sidebar
  • Added support to allow expanding properties to show list of overridden values in the Computed sidebar
  • Fixed the experimental Computed sidebar in Dark Mode
  • Updated tables to recalculate scrollable height when resized
  • Updated tables to support Select All ⌘A (Command-A)
  • Updated tables to support extending the row selection with the ⇧ (Shift) key
  • Updated tables with no selection to select the first or last row when pressing the down or up arrow key
  • Added a Media timeline in the Timelines tab
  • Updated TreeOutline to re-use multiple-selection logic from Table
  • Updated TreeOutline to prevent selecting the first child of an expanded element when pressing the right arrow key
  • Added a button to clear filters with “No Filter Results” in the Navigation sidebar
  • Made the “Reload Web Inspector” button more reliable when toggling experimental features

CSS Grid

  • Fixed absolute positioned child getting incorrectly sized when using auto-fit, generating spurious collapsed tracks
  • Fixed align-self:center and position:sticky to work together
  • Fixed grid container sizing under min-content height
  • Implemented Baseline Alignment for grid items

Media

  • Fixed frame re-ordering preventing iframes from getting enqueued
  • Enabled external playback for video in element fullscreen
  • Fixed SourceBuffer to prevent throwing an error when appending a second init segment after changeType()

Payment Request

  • Fixed canMakePayment() to not consider serialized payment method data

JavaScript

  • Added BigInt support into ValueAdd

Release 70

Web Animations

  • Implemented getTiming() and updateTiming()
  • Implemented Animation.updatePlaybackRate()
  • Changed to not reset pending tasks when setting a null effect
  • Made document.getAnimations() return declarative animations in the correct order
  • Updated the API to allow the auto composite value
  • Updated the Web Animations API to remove all of the ReadOnly interfaces

Intersection Observer

  • Added support to allow cross-document intersection observing
  • Fixed isIntersecting computation when 0 is not a threshold
  • Updated to account for CSS zoom when computing client rects
  • Added CSS Custom Properties API Support for syntax="*" and <length> with proper cycle handling
  • Fixed <picture> container to update when the prefers-color-scheme media query changes
  • Fixed CSS grid elements with justify-content:space-around that have extra whitespace
  • Implemented text-underline-offset and text-decoration-thickness

WebRTC

  • Added support for sender and receiver getCapabilities
  • Added onremovetrack support for RTCPeerConnection removed tracks
  • Changed MediaRecorder to fire dataavailable event when all tracks are ended and stop() is called
  • Fixed calling sender.replaceTrack() twice producing a new transceiver and its corresponding m= section
  • Fixed sender.replaceTrack() fails with InvalidStateError if the transceiver.direction is “inactive”
  • Fixed RTCTrackEvent.streams should be SameObject
  • Updated to prevent revealing device IDs until the user has granted permission to capture
  • Updated enumerateDevices to not expose devices that are not available to getUserMedia
  • Updated to prevent prompting the user again after denying a getDisplayMedia request

Rendering

  • Fixed requestAnimationFrame causing bad location of position:fixed inside overflow:auto and iframe
  • Fixed overlays with -webkit-overflow-scrolling:touch to become scrollable after added text makes it taller

Web Inspector

  • Added low-power video playback enter and exit events in Timelines and Network waterfalls
  • Added support to show save and restore stack for recorded 2D Canvases
  • Added missing context menu items for links in the Styles sidebar
  • Added support to toggle selected properties by pressing Space or ⌘/ (Command-/) in the Styles sidebar
  • Added support for multiple selection and multiple deletion of cookie records
  • Created a setting for auto-recording newly created contexts in the Canvas tab
  • Implemented copying and deletion of multiple properties in the Styles sidebar
  • Updated to capture changes to <canvas> (i.e., canvas size) that would affect the recorded context in the Canvas tab

Storage

  • Added a storage limit for IndexedDB
  • Changed IndexedDB to allow storing RTCCertificate

Media

  • Fixed MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L60.B0') getting improperly rejected

Payment Request

  • Changed the errorFields of PaymentResponse.retry() to be optional

Security UI

  • Added a warning in the Smart Search field when loading non-secure pages

Release 69

  • Enabled Conic Gradients by default

Web API

  • Enabled the <datalist> element by default
  • Added new image type for the CSS Paint API
  • Changed the CSS Painting API to give a 2D rendering context
  • Changed the CSS Painting API to parse paint() and store paint callbacks
  • Changed Web Animations to not create a DocumentTimeline to suspend or resume animations

Intersection Observer

  • Handled zero-area intersections

Dark Mode

  • Changed to use a dark appearance scrollbar when the page background is dark or the document supports dark mode

JavaScript

  • Implemented BigInt support for ^

Media

  • Added support for MediaKeyEncryptionScheme
  • Updated to be able to adapt between H.264 streams with and without EditList
  • Updated TextTrack cues to be updated more often than every 250ms
  • Fixed timestampOffset to prevent introducing floating-point rounding errors to incoming samples
  • Fixed the WebVTT region parameter and value to be separated by :

Web Inspector

  • Added corner rounding to the network timing blocks in the Network tab waterfall
  • Changed to more aggressively snap timing blocks together in the Network tab
  • Fixed CSP JSON request payload without a MIME-type to be pretty-printed
  • Added fullscreen enter and exit events in the Timelines and Network waterfalls
  • Fixed the Quick Open dialog to show named scripts that appear in the Debugger sidebar
  • Fixed the Quick Open dialog for line and column to have a caret indicate the position
  • Fixed malformed popovers for function source code
  • Prevented the Canvas tab from listening for “space” key press when the tab is not visible
  • Improved Canvas Recording loading speed when the “Frame” tree element is expanded
  • Updated the Canvas tab to show a warning when the path moves offscreen

WebRTC

  • Changed MediaRecorder to fire a stop event when all tracks are ended
  • Changed to handle MDNS resolution of candidates through libwebrtc directly

Payment Request

  • Implemented MerchantValidationEvent.methodName
  • Implemented PaymentResponse.retry()
  • Updated PaymentRequest.canMakePayment() to resolve to true whenever Apple Pay is available

Storage

  • Added a deprecation warning to the console for Web SQL
  • Fixed iteration of cursors skipping records if updated or deleted in IndexedDB

Release 68

Web API

  • Enabled <input type="color"> support
  • Fixed the Document and Window objects to lose their browsing context as soon as its iframe is removed from the document
  • Fixed incorrect input.checked when parsing its children
  • Fixed window.navigator and window.performance to not become null after the window loses its browsing context
  • Fixed incorrect garbage collection of JavaScript node wrappers held by MutationObserver and MutationRecord
  • Changed to restrict browsing context lookup by name to frames that are related to one another
  • Changed anchor target to be ignored on activation when the download attribute is set
  • Changed target="_blank" on anchors to imply rel="noopener"

WebRTC

  • Added VP8 support to WebRTC
  • Added support for IceCandidate stats
  • Added support for reporting “display composited video frames” through the VideoPlaybackQuality object
  • Added support for RTCPeerConnection.generateCertificate
  • Added support for RTCConfiguration.certificates
  • Implemented error handler of MediaRecorder

Media

  • Added support for inline WebVTT styles
  • Changed to use nanoseconds as MaximumTimeScale
  • Changed to only report the supported WebGL version
  • Added prefers-color-scheme media query support for styling dark mode content
  • Changed to resolve inset properties to computed style when there is over-constrainment

Rendering

  • Fixed slow tiling for CSS gradients

JavaScript

  • Added BigInt support for the bitwise | operator

Web Inspector

  • Added the ability to go directly from an event in the overview view to the specialized timeline for that event
  • Added support for showing redirect requests in the Network and Timelines tabs
  • Added table support for multiple selection and ⌘ Click (Command-Click) behavior
  • Changed to use the iframe name attribute for FrameTreeElement
  • Changed to allow multiple canvases to be recorded at the same time
  • Created a special Network waterfall for media events
  • Exposed Server Timing response headers in the Network tab
  • Fixed the Canvas recording sidebar scroll position after switching tabs
  • Fixed the color contrast of the disabled Record button in the Canvas tab
  • Fixed capturing previously saved states and adding them to the recording payload in the Canvas tab
  • Fixed previews to be removed when the parent view is hidden in the Canvas tab
  • Fixed clicking the initiator link in the Network tab table to automatically switch to the Preview section
  • Fixed dark mode contrast issues
  • Fixed style editor warnings to not look like errors in dark mode
  • Fixed unreadable text when hovering over CSS properties while holding the ⌘ (Command) key in dark mode
  • Fixed the “goto arrow” color for the selected DOM breakpoint tree element in dark mode
  • Fixed the detail view to be correctly shown after sorting the Network table
  • Fixed the detail view reverting to “Response” when new requests are added in the Network tab
  • Fixed the Open Resource dialog to show the path to the resource to disambiguate resources with the same name
  • Fixed the toolbar getting hidden when Web Inspector is docked to side
  • Fixed ⌃G (Control-G) to not wipe the line when jumping to the line in a CSS file
  • Grouped media network entries by the node that triggered the request
  • Indented all network entries when “Group by Node” is enabled

WebDriver

  • Fixed a bug where some key combinations such as ⌘A (Command-A) can cause the WebDriver session to hang
  • Fixed a crash when a WebDriver session is terminated while waiting for simulated inputs to be handled
  • Fixed a hang when creating a WebDriver session for Safari Technology Preview (macOS Mojave only)

Payment Request

  • Changed to abort requests after details settle when the user cancels

Apple Pay

  • Fixed new shipping methods getting ignored when updating after the shippingaddresschange event
  • Changed payment authorization results with ApplePayErrors to never be considered final

Web Animations

  • Fixed setting animation-name:none after a fill:forwards animation has completed to correctly revert to the unanimated style

WebCrypto

  • Changed ECDSA to be able to handle invalid signature inputs

Release 67

Pointer Events

  • Added PointerEvent in the Experimental Features menu
  • Ensured PointerEvent is not visible when disabled

WebRTC

  • Added RTCCodecStats support
  • Changed to allow IP mismatch for local connections on localhost
  • Cleaned up change handling for RealtimeMediaSource settings
  • Fixed video track clone to preserve original property
  • Implemented sender and receiver getStats
  • Updated constraints supported by getDisplayMedia

Media

  • Enabled H.264 Simulcast
  • Enabled Modern Encrypted Media API by default in the Experimental Features menu
  • Added WebM sanitization in EME
  • Introduced the concept of CDMInstanceSession for EME
  • Changed to use some tolerance when deciding whether a frame should be appended to the decode queue in MSE
  • Fixed a comparison with an uninitialized greatestDecodeDuration in MSE
  • Fixed an unwanted erased sample from the decode queue in MSE
  • Fixed WebVTT cue alignment
  • Updated the WebVTT parser according to new region syntax
  • Fixed item alignment next to collapsed tracks with gutters in CSS Grid
  • Restricted the total combined size of backdrop filters
  • Fixed CSS reference filter with feDisplacementMap buffer corruption on Retina displays
  • Fixed updating feMorphology filter in CSS when the element moves
  • Fixed a garbled rendering of an image when feConvolveMatrix is applied to it on a Retina display
  • Started implementing CSS Custom Properties and Values
  • Implemented initialValue support for CSS Custom Properties and Values API
  • Made overflow:overlay a synonym for overflow:auto
  • Fixed <form> in quirks mode to have margin-block-end:1em

JavaScript

  • Implemented BigInt support for bitwise & operation
  • Optimized Array#indexOf in the C++ runtime
  • Optimized Array#lastIndexOf in the C++ runtime

Web Animations

  • Fixed accelerated animations to get suspended
  • Fixed endlessly calling DocumentTimeline::updateAnimations()
  • Ensured renderers with accelerated animations have layers

Shadow DOM

  • Added the support for users to select content across shadow boundaries
  • Added the support for copying content across shadow boundaries

Web API

  • Fixed custom elements in a reaction queue losing its JavaScript wrapper and becoming an HTMLUnknownElement
  • Fixed elements enqueued in mutation observers losing its JavaScript wrappers
  • Changed Image.proto to be a Function.prototype not an HTMLElement.prototype
  • Fixed radio inputs and checkbox inputs to fire “click”, “input”, and “change” events in order when clicked
  • Simplified authentication code
  • Changed document.open() to not propagate URLs to non-fully active documents
  • Changed document.open() to throw errors for cross-origin calls
  • Changed to strip the fragment from the document URL during document.open() URL propagation
  • Fixed no-op document.open() calls to ensure no side effects
  • Dropped support for the cross-origin-window-policy header

Apple Pay

  • Added support for granular errors in PaymentDetailsUpdate
  • Removed the “in-store” button type

Web Inspector

  • Fixed an issue that caused Web Inspector’s tabs to be hidden when docked to the side
  • Fixed an issue that caused dock buttons to disappear when Web Inspector goes fullscreen
  • The Debugger tab now has one unified section for all breakpoint types
  • Fixed the light background on new watch expression popover in Dark Mode
  • Fixed image resources without content getting shown when the Images folder is selected
  • Removed the Legacy Style Editor
  • Removed the Visual Style CSS details sidebar panel
  • Reworked the Computed panel in the Styles sidebar panel to match the styles of the Rules panel
  • Added an experimental setting for multi-property selection
  • Changed to start editing property names and values on mouseup instead of mousedown in the Styles sidebar

Web Driver

  • Fixed an issue wherein sending a Tab key press could sometimes shift focus out of web content and hang the WebDriver session
  • Fixed an issue that caused safaridriver to immediately abort on launch
  • Fixed an issue where the Perform Actions command failed if a keyboard input source specified a tick containing a “pause” value without a “key” value

Storage

  • Fixed an WebSQL issue preventing the user from granting a quota increase if the JavaScript provides an expected usage value that is too low

Release 66

Web Share API

  • Implemented the Web Share API

Conic Gradients

  • Added support for Conic Gradients
  • Fixed angle interpretation for Conic Gradients
  • Fixed color stop blending in Conic Gradients for stops past the first stop

WebRTC

  • Enabled WebRTC Unified Plan as an Experimental Feature
  • Exposed RTCRtpSender.setParameters
  • Introduced a backend for RTCRtpTransceiver

Shadow DOM

  • Fixed :first-child, :last-child, :nth-child, and :nth-of-type to work on shadow root’s children
  • Fixed mouseenter and mouseleave events to get dispatched when there is a capturing event listener for a slot ancestor
  • Added support for double-position gradient color stop syntax

Web Inspector

  • Updated the bezier curve editor for Dark Mode
  • Changed to generate CSSKeywordCompletions from backend values
  • Fixed imported recordings that are unable to be viewed after navigation
  • Fixed opening Web Inspector with a selected element that might immediately scroll that element off screen in the DOM Tree outline
  • Changed to record actions performed on ImageBitmapRenderingContext
  • Fixed Source View to scroll to show the line when a breakpoint is hit inside of a <script> in an HTML resource
  • Fixed a Location popover triggering for a hidden Location column when clicking a row in the Script Events grid of the Timelines tab

Web API

  • Fixed XMLHttpRequest open() to throw a SYNTAX_ERR exception if the method is empty or the URL cannot be resolved
  • Fixed overrideMimeType to not update the Content-Type header in the XMLHttpRequest response

Apple Pay

  • Updated to dispatch a paymentmethodchange event when the payment method changes
  • Renamed the -apple-pay-button-type value checkout to check-out

JavaScript

  • Fixed Symbol.prototype.description to handle a null Symbol

Media

  • Added Media Capabilities API as an Experimental Feature
  • Added support for HEVC codec types in Media Capabilities
  • Fixed track.onmute not getting called for a remote MediaStreamTrack when its counter part track is removed from the peer connection
  • Updated to include supported frame rates in video capture presets
  • Simplified logic when changing RealtimeMediaSource settings
  • Changed the middle value to center in WebVTT for consistency with CSS

Web Animations

  • Fixed a failure that occurred when interrupting an accelerated CSS transition on a composited element in-flight
  • Fixed accelerated animations to correctly respect positive delay values

Web Assembly

  • Optimized JavaScript to Web Assembly call by removing Vector allocation

Password AutoFill

  • Automatically submit login forms when filling credentials with Password AutoFill
  • On MacBook Pro with Touch Bar, require authentication with Touch ID to fill passwords into web pages; this can be changed in Safari’s AutoFill preferences

Release 65

Storage Access API

  • Made a change to maintain access through same-site navigations of an iframe
  • Updated the Storage Access API prompt to show the eTLD+1s, not the full host names

Media

  • Fixed scrubbing video with Touch Bar on YouTube to prevent video playback freezing
  • Fixed muted elements not updating their Now Playing status when unmuted

Apple Pay

  • Added Web Inspector auto-complete keywords for -apple-pay-button-style and -apple-pay-button-type
  • Changed to allow $0 totals
  • Changed PaymentRequest.show() to reject when an unsupported ApplePayRequest version is specified
  • Introduced Apple Pay JS v4
  • Introduced new values for -apple-pay-button-type

Payment Request

  • Added an onpayerdetailchange event handler to PaymentResponse
  • Implemented the MerchantValidationEvent constructor
  • Removed PaymentAddress.languageCode

Shadow DOM

  • Changed to compose click events from click()
  • Fixed the focus navigation order in slot fallback contents

Fetch API

  • Made a change to stop checking the Request.integrity value in no-CORS mode

Service Workers

  • Fixed undefined self.isSecureContext in Service Workers

Web API

  • Added getModifierState to MouseEvent

Web Inspector

  • Added auto-completion for event breakpoints
  • Added support for breakpoints for timers and animation-frame events
  • Fixed deleting multiple event breakpoints by repeatedly hitting delete
  • Fixed the color picker to allow entering decimal numbers for opacity
  • Fixed typos in some compositing reasons
  • Fixed the Search bar being too narrow in some localizations
  • Fixed console.inspect(sessionStorage) to correctly show the Session Storage content view if the Storage tab was previously unvisited
  • Fixed console.log() to show the passed string when a certain format is used
  • Fixed the JSContext Inspector to correctly show Scripts in the Resources tab

WebGL 2

  • Updated WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer specification conformance

Web Assembly

  • Updated Web Assembly to parse wasm modules in a streaming fashion

Safari extensions

  • Messages from a Safari App Extension to its content script are now delivered to the correct page after a back or forward navigation

Release 64

Custom Elements

  • Fixed the custom element constructor to use HTMLElement in new.target’s realm
  • Fixed custom element to invalidate its style when :defined rule starts to apply
  • Changed invoking custom element reactions after constructing and inserting a custom element
  • Changed to perform a microtask checkpoint before creating a custom element

Web API

  • Added the content-length header to the Fetch safe-list
  • Disallowed navigations when page cache updates the current document of the frame
  • Fixed navigator.sendBeacon to work in pagehide callbacks
  • Fixed <object> elements that change from hidden to visible to properly display its content if its URL has a fragment identifier

Media

  • Added Experimental Feature support for SourceBuffer.changeType()
  • Fixed an issue causing video playback to use more power
  • Skipped validation of ideal constraints when selecting matching getUserMedia devices

JavaScript

  • Added support for a “name” option for dedicated workers
  • Added support for unhandled promise rejections in a Worker
  • Changed Date.UTC to not return NaN with only year parameter
  • Changed Array.prototype.sort to throw a TypeError if the parameter is a not callable object

Storage Access API

  • Changed to use eTLD+1s, not full host names, when granting storage access

Web Inspector

  • Added support for breakpoints on arbitrary event names
  • Added Initiator information in the Network table
  • Allowed breakpoints to be set for specific event listeners
  • Allowed recording processing to be stopped midway in the Canvas tab
  • Created icons for recordings and shaders in the preview tile of the Canvas tab
  • Fixed console.log to prevent firing getters for deep properties
  • Fixed the contrast of the error and warning text widget for the source code text editor in Dark Mode
  • Fixed XHR content sometimes showing as an error even though the load succeeded
  • Fixed ⌘G to work as expected when the find banner is focused
  • Provided a default icon for all actions in the Canvas tab
  • Prevented tables from centering rows when scrolling them into view

WebDriver

  • Changed top not handle prompts that appear while running scripts
  • Included all capabilities in the new session response
  • Stopped trying to set the caret when focusing a non-text element in the send keys command
  • Implemented flow-relative margin, padding, border and sizing properties
  • Updated the behavior of percentage row tracks and gutters in CSS Grid)

WebGL

  • Fixed WebGL contexts to be updated when the display configuration is changed

Bug Fix

  • Fixed color wells to appear pressed when presenting a color picker

Safari Push Notifications

  • A user gesture, such as a mouse click, is now required to request the user’s permission to send Safari Push Notifications

Safari Reader

Release 63

Known Issue

  • Adobe Flash content does not load on macOS Mojave

Dark Mode

  • Fixed the appearance of the Smart Search Field in Dark mode on macOS Mojave

Stability

  • Fixed a Safari Technology Preview application crash that could happen when waking one’s Mac from sleep
  • Fixed a Safari Technology Preview application crash that could happen when navigating between web pages

Custom Elements

  • Fixed document.open and document.write to throw errors while the HTML parser is synchronously constructing a custom element
  • Implemented customElements.upgrade()
  • Fixed erroneous garbage collection for properties set on window.customElements
  • Changed innerHTML to not synchronously create a custom element
  • Made HTML parser immediately execute custom elements reactions after synchronously constructing a custom element
  • Fixed the crash that occurs when a custom element reaction callback throws an exception

Media

  • Prevented creating composited layers for renderers unless they are part of the fullscreen subtree
  • Fixed switching tabs to not close the picture-in-picture window

Web Animations

  • Fixed accelerated animations to respect a positive delay value
  • Fixed transitions added immediately after element creation to work as expected
  • Fixed animation stopping with object-fit:contain on an animated 2D canvas

Web API

  • Fixed navigator.sendBeacon to work in pagehide event callbacks
  • Fixed setting the table layout to fixed causing incorrect cell width calculations

Accessibility

  • Fixed returning nothing for various previous text marker APIs from one <div> or <p> node to another

Web Inspector

  • Fixed inconsistent background color for the JavaScript Debugger breakpoint editor in Dark Mode
  • Fixed the contrast for the disabled breakpoints banner in Dark Mode
  • Fixed a white background for the Search sidebar panel text field in Dark Mode
  • Fixed the source code text editor thread indicator widget contrast in Dark Mode
  • Included a full URL tooltip when hovering the name in the Network Tab

Internationalization API

  • Changed the Internationalization API to ignore encoding when parsing BCP 47 language tag from an ISO 15897 locale string passed via LANG

WebGL 2

  • Added support for compilation of GLSL ES version 300 shaders
  • Changed to allow href attribute without xlink on SVG elements

Release 62

Known Issues

  • This release of Safari Technology Preview for macOS Mojave betas does not render text properly in the Smart Search Field when in Dark Mode.
  • This release of Safari Technology Preview for macOS Mojave betas does not have a usable WebDriver implementation; safaridriver hangs when processing the New Session command.

Intelligent Tracking Prevention

  • Added an experimental ITP Debug Mode to be used only when actively debugging, not to remain enabled

JavaScript

  • Changed to canonical language tags in the Internationalization API
  • Fixed the Generator and AsyncGeneratorMethod prototype
  • Fixed the JSON.stringify replacer to use isArray instead of JSArray checks
  • Fixed the iterator of Array.keys() to return the object in the correct order
  • Fixed JavaScript URL to provide the correct result when frame is navigated
  • Changed JSON.stringify to emit properties included in the prototype chain for entries in the second array argument

Media

  • Changed to require the document to be visible for fullscreen video
  • Disabled all network caching for HLS streams.
  • Fixed the transition for the first Picture-in-Picture from Fullscreen
  • Changed HLS resources with remote sub-resources to taint media elements
  • Improved WebGL selection of GPU driving the current display

Rendering

  • Fixed newly added float elements to trigger full layout on the block

Dark Mode

  • Improved the visibility of spelling and grammar markers in Dark Mode

Web API

  • Limited editing selections to within Shadow DOM boundaries

Web Inspector

  • Made several color and contrast improvements for Dark Mode
  • The experimental Layers Tab visualization no longer selects a layer on mousedown
  • Fixed recent regressions in presentation of execution/basic block highlights and type token positions
  • Implemented support for margin-box as reference box and box shape
  • Added full support for -webkit-clip-path on SVG elements

Web Animations

  • Changed to discrete interpolation between font-styles with a keyword value
  • Changed to discrete interpolation between lengths with an auto value
  • Added support for calc() in CSS Grid gutter properties

IndexedDB

  • Fixed the ability to remove the database file of a sub-frame

Accessibility

  • Fixed pressing tab to highlight items on a webpage when voiceover enabled

Release 61

  • Fixed -webkit-clip-path offset for clipPath references
  • Turned CSS Animation Triggers off by default
  • Updated clip-path box mapping to unified box

Dark Mode

  • Made the focus ring color honor the system accent color
  • Prevented inverting text color for selections when not in dark mode

Web API

  • Enabled Link Preload by default in the Experimental Features menu
  • Fixed cookie creation time exposed to Objective-C
  • Fixed find in page to find low (German) quotes
  • Fixed return values for DOMMatrix.invertSelf() when used on a non-invertible matrix
  • Implemented support for Element.toggleAttribute
  • Improved window.event compliance: Should not be set when target is in shadow tree
  • Promoted the Secure Context API from an experimental feature to always on
  • Updated the Element API to use qualifiedName to comply with standards

Service Workers

  • Made fetch() use “same-origin” credentials by default
  • Fixed fetching several times in a row

Media

  • Disabled autoplay when the element is suspended
  • Fixed video flicker which sometimes happened when playing to AppleTV
  • Changed to reject getUserMedia promise if capture fails

WebRTC

  • Fixed delay and video lag caused by enabling and disabling a MediStreamTrack

Web Assembly

  • Stopped using tracePoints in JavaScript/WASM entry

Web Inspector

  • Fixed copy from Search results content view
  • Fixed the “Open Link” context menu action
  • Fixed the resource search field in dark mode
  • Fixed the Debugger content view to properly update when the left sidebar is collapsed
  • Enabled control-dragging to pan the 3D render in the Layers inspector

Accessibility

  • Added a subrole for meter elements on macOS
  • Fixed setValue on text controls to send out key events

Release 60

Known Issues

  • Safari Technology Preview Release 60 will crash on launch on macOS Mojave Developer Beta 1. Users should upgrade to macOS Mojave Developer Beta 2 to avoid the crash.
  • After updating to Safari Technology Preview Release 60, the homepage preference and the Develop menu preference will be lost.

Web Animations

  • Changed CSS Animations to take precedence over CSS Transitions
  • Ensured animations are updated prior to requestAnimationFrame callbacks
  • Implemented the starting of CSS Transitions according to the standards specifications

Dark Mode

  • Fixed input form controls with a white background in dark mode
  • Fixed the white corner between vertical and horizon scrollbars in dark mode

Web Inspector

  • Fixed all non-Same-Site cookies getting marked as Same-Site Strict in the Storage tab
  • Fixed the Box Model section to have dark background in dark mode
  • Fixed color outline that was too dark in dark mode
  • Fixed font guideline colors that were too bright in dark mode
  • Fixed media query names that were unreadable in dark mode
  • Fixed network headers colors are too dim in dark mode

Media

  • Fixed the AirPlay picker to use the correct theme in dark mode
  • Fixed CSS background-color style to no longer affect natively rendered text fields
  • Exposed more semantic system colors

WebRTC

  • Changed RTCRtpSender.replaceTrack(null) to stop the real-time source but keep the track

Security

  • Changed CSP to apply checks before content blocker checks for network loads to match cache load behavior
  • Validated Cross-Origin-Resource-Policy for resources cached in the MemoryCache

Plug-ins

  • Fixed plug-in process crashing that affected Flash on macOS Mojave betas

Intelligent Tracking Prevention

  • Improved classification of redirect collusion to a prevalent resource

WebDriver

  • Fixed key actions to support multiple pressed virtual keys
  • Included correct key code with synthesized NSEvents used for keystrokes

Accessibility

  • Fixed focus to follow the text cursor when zoom is enabled

Release 59

Known Issues

  • This release of Safari Technology Preview for macOS Mojave betas does not render text properly in the Smart Search Field when in Dark Mode
  • Users running this version of Safari Technology Preview on macOS Mojave Developer Beta 2 will need to login to websites when restarting the application, or may require logging in again on some websites when launching a new window

Intelligent Tracking Prevention 2.0

  • Enabled the latest version of Safari’s privacy protection “Intelligent Tracking Prevention.” For technical details, see the WebKit blog post.

Web Animations

  • Enabled Web Animations as an experimental feature by default
  • Added support for handling relative length units such as em, vw, and vh
  • Fixed a bug causing WebAnimation objects to never get destroyed

Payment Request

  • Removed currencySystem member

JavaScript

  • Added Symbol.prototype.description getter
  • Implemented + and - unary operation for BigInt
  • Implemented support for % operation for BigInt
  • Implemented support for < and > relational operation for BigInt
  • Implemented support for =< and >= relational operation for BigInt
  • Implemented support for addition operations for BigInt
  • Fixed the Array.prototype.concat fast case when a single argument is a Proxy object
  • Fixed Date.parse() to properly handle input outside of ES spec limits
  • Fixed Array.prototype.sort to reject null comparator
  • Renamed Array#flatten to flat

Editing

  • Fixed not displaying spelling errors in the middle of an inserted paragraph

Storage Access API

  • Changed Storage Access API calls to handle the absence of an attached frame

Security

  • Enabled Cross-Origin-Resource-Policy by default
  • Changed the NetworkCORSPreflightChecker to set the preflight request User-Agent header
  • Changed Accept request header values to be more tightly checked in the case of a CORS load
  • Fixed the Referrer-Policy response header to not be ignored
  • Renamed Cross-Origin-Options HTTP header to Cross-Origin-Window-Policy
  • Renamed Cross-Origin-Resource-Policy:same to same-origin
  • Migrated From-Origin to Cross-Origin-Resource-Policy

Service Workers

  • Added Accept-Encoding:identity to Range requests
  • Fixed ServiceWorker registration to store any script fetched through importScripts
  • Fixed HTTP Header values validation to not be too strict
  • Improved error messages when FetchEvent.respondWith has a rejected promise
  • Prevented starting service worker fetch when there is substitute data
  • Updated Fetch code to provide more useful exception messages

Compatibility

  • Fixed page reloading when viewing photos in Google Drive due to exceeding canvas memory limits
  • Fixed memory management when zooming and scrolling on some websites
  • Link drag image is inconsistently unreadable in dark mode

WebRTC

  • Added an option to restrict communication to localhost sockets

Web API

  • Changed PopStateEvent to not be cancelable by default

Media

  • Changed media elements outside of fullscreen to not be considered main content
  • Changed to exit fullscreen when JavaScript alerts are presented
  • Changed automatic picture-in-picture to use the main content heuristic
  • Changed to stop playing in the background when automatic picture-in-picture is disabled
  • Enabled subsampling for progressive JPEG images
  • Fixed incorrectly sized captions in picture-in-picture mode
  • Fixed regions outside of the fullscreen window becoming exposed during zoom operations
  • Fixed fullscreen element clipping by an ancestor

Web Inspector

  • Added Same-Site cookie annotations
  • Fixed copying a link address in the Elements tab
  • Fixed popovers getting dismissed while attempting to move the cursor inside
  • Fixed the tab picker becoming briefly visible when the TabBar is initially shown
  • Prevented text in “Add New Class” from being auto-capitalized

Accessibility

  • Exposed the <link> rel attribute to voiceover
  • Fixed VoiceOver to announce when a details element is expanded when using role group
  • Fixed setValue on contenteditable to preserve whitespace
  • Fixed VoiceOver to announce fieldset description from aria-describedby when focusing inputs
  • Implemented support for new blockquote, caption, and paragraph ARIA roles

iCloud Keychain Password Manager

  • Added support for loading https://example.com/.well-known/change-password when a user indicates they’d like to change a password that is reused in Safari’s Passwords preferences, falling back to loading example.com if that load fails

Release 58

This release covers the same revisions of WebKit from Safari Technology Preview 57, but includes new Safari and WebKit features that will be present in Safari 12. The following Safari 12 features are new to Safari Technology Preview 58:

Icons in Tabs. You can enable showing website icons in tabs in Safari’s Tabs preferences.

Automatic Strong Passwords. Safari automatically generates strong, unique passwords when signing up for accounts or changing passwords on websites. New to Safari 12 and Safari Technology Preview 58, generated passwords can be customized using the passwordrules attribute. See Apple’s Password Rules Validation Tool for more information.

Many more WebKit features in Safari 12 are present in this release of Safari Technology Preview and have been in past releases. You can read more about these changes and many others in What’s New in Safari 12.

Release 57

JavaScript

  • Added support for Intl.NumberFormat().formatToParts()
  • Changed to throw SyntaxErrors for runtime generated regular expressions with errors
  • Implemented BigInt support for *, /, and == operations
  • Improved specification compliance for Internationalization APIs
  • Improved the speed of Object.assign for final objects

Animations

  • Exposed Web Animations CSS integration as an experimental feature
  • Fixed a bug where animation-play-state:paused causes very high cpu load because of a style invalidation loop

Storage Access API

  • Extended the lifetime of cookies on successful user approval

Security

  • Added initial support for the Cross-Origin-Options HTTP response header
  • Changed Cross-Origin-Options:deny and Cross-Origin-Options:allow-postmessage to prevent getting navigated by cross-origin scripts
  • Changed X-Frame-Options:SAMEORIGIN to check all ancestor frames

Media

  • Enabled the modern EME API by default
  • Fixed media continuing to load after rendered invisible (e.g. removed from DOM; scrolled off screen)
  • Improved NowPlaying using the element "title" attribute when available

Accessibility

  • Changed the accessiblility name provided for a node to simplify the whitespace when using innerText
  • Excluded hidden nodes which are not directly referenced from participating in name or description content
  • Ensured listbox and combobox roles embedded in labels participate in name calculation
  • Exposed the primary screen height through the AX API
  • Fixed a bug with VoiceOver causing <iframe> scrolling focus jumping
  • Fixed VoiceOver to manually focus or read dialog paragraph description text inside the modal in role=dialog elements with aria-modal=true

WebDriver

  • Fixed a crash that happens if a browsing context’s cookies are requested prior to an initial navigation
  • If the network or storage process crashes, terminate the automation session to avoid undefined behavior
  • Automation.getBrowsingContext now returns the same window origin as window.screenX and window.screenY

Web Inspector

  • Added rulers and guides to the Canvas tab
  • Changed the Canvas tab to not automatically select a recording when viewing a canvas
  • Improved the placement logic for the element details popover that is shown during Inspect Element mode
  • Calculating the visual effect of each Canvas action is now off by default for performance reasons.

Release 56

JavaScript

  • Implemented Intl.PluralRules

WebAssembly

  • Added support for stream APIs

Web API

  • Fixed document.open() event listener removal to be immediate
  • Fixed DHTML drag operations to report the number of files in the operation
  • Fixed window.postMessage(), window.focus(), and window.blur() unexpectedly throwing a TypeError
  • Serialized font-variation-settings with double-quotes to match standards
  • Stopped using the id of an <iframe> as fallback if its name attribute is not set

Security

  • Added support for the WHATWG proposed From-Origin:same and From-Origin:same-site response headers with nested frame origin checking as an off by default experimental feature
  • Fixed CSP referrer for a document blocked due to a violation of its frame-ancestors directive
  • Fixed CSP status-code for a document blocked due to a violation of its frame-ancestors directive
  • Fixed CSP to pass the document’s referrer
  • Fixed CSP to only notify Web Inspector to pause the debugger on the first policy to violate a directive
  • Fixed a bug causing first-party cookies to be blocked on redirects
  • Fixed CSS filters which reference SVG filters to respect the color-interpolation-filters of the filter
  • Fixed feTurbulence to render correctly on a Retina display
  • Fixed shape-outside and filter styles occuring twice in the result of getComputedStyle

Rendering

  • Changed font collection fragment identifiers to use PostScript names
  • Fixed selecting text on a webpage causing the text vanish
  • Fixed hiding then showing an <object> of type image to ensure the underlying image is displayed

Media

  • Changed MediaStreams that are playing to allow removing some of its tracks
  • Updated text track cue logging to include cue text

Web Inspector

  • Improved the user experience in Canvas tab to show progress bars while processing actions in a new recording
  • Ensured that tabbing through the last section of rules in the Styles editor wraps back to the first section of rules
  • Fixed Console drawer resizing when the console prompt has more than one line of code
  • Fixed unsupported properties that sometimes don’t get warnings just after adding them
  • Updated the Canvas tab to determine functions by looking at the prototype

Release 55

  • Added support for calc() in webkit-gradient and cross-fade
  • Changed :active pseudo class to deactivate when using pressure sensitive trackpad
  • Omitted the default value when serializing font-feature-settings
  • Updated HSL and HSLA parsing to match CSS Color 4

Web API

  • Enforced content-type for <script> tags
  • Fixed input.webkitEntries to work as expected when a folder contains accented chars
  • Setting event.returnValue to true is now a no-op

Rendering

  • Fixed animated GIFs with finite looping to loop the expected number of times
  • Fixed the position of the caret in empty table cells

Accessibility

  • Added the accessibility events to the HTML attribute names so AOM works with DOM Level 1 events
  • Fixed a hang when triggering an alert from an AOM increment event

JavaScript

  • Fixed function.prototype.caller to not return generator bodies

Web Driver

  • Fixed simulated mouse interactions to not be done until the associated DOM events have been dispatched

Web Inspector

  • Fixed selecting and copying text from a Network tab popover

Media

  • Added allSamplesInTrackEnqueued event

WebRTC

  • Fixed a WebRTC data channel issue for non-ASCII characters.

Security

  • Changed to use CSP and content blockers for sync XHR

Bug Fixes

  • Fixed an issue that would sometimes incorrectly rule out PDF as a mime type that can be showed
  • Fixed an issue with Command-clicking web app links on icloud.com

Release 54

Clipboard API

  • Fixed copying a list from Microsoft Word to TinyMCE when mso-list is the first property
  • Prioritized file promises over filenames during drag and drop

Beacon API

  • Fixed Beacon redirect responses to be CORS validated

Web API

  • Implemented createImageBitmap(Blob)

WebRTC

  • Added a special software encoder mode when a compression session is not using a hardware encoder and VCP is not active
  • Added experimental support for MDNS ICE candidates in WebRTC data channel peer-to-peer connections

Web Inspector

  • Fixed the errors glyph to fully change to blue when active
  • Tinted all pixels drawn by a shader program when hovering over a tree element in the Canvas Tab

Release 53

Service Workers

  • Changed to use one service worker process per security origin
  • Changed to use the same SWServer for all ephemeral sessions
  • Fixed promptly terminating service worker processes when they are no longer needed
  • Included the security origin in the service worker process name

WebRTC

  • Added support for VCP encoder on macOS and iOS
  • Fixed the RTCPeerConnection constructor to throw an exception for bad configuration parameters
  • Fixed setting SenderTrack to null calling removeTrack with RTCRtpSender

Loading

  • Fixed CSS mask images to be retrieved using potentially CORS-enabled fetch
  • Fixed loading the stylesheet when changing the <link> element rel attribute from preload to stylesheet

Rendering

  • Fixed invalidating descendants for :nth-child and :nth-of-type pseudo classes only when needed
  • Fixed positioning for text with letter spacing

Media

  • Added Fullscreen API as an Experimental Feature
  • Prevented SVG root from being skipped while marking percentage height descendants dirty

Accessibility

  • Fixed the table row count when role="row" is added to in DOM
  • Fixed CSS Grid auto repeat tracks computation with definite min sizes

Web API

  • Added a query and fragment exception to the History API’s unique origin restriction

Web Inspector

  • Changed “Force Print Media Styles” to not persist across Web Inspector sessions
  • Changed to not show checkboxes for invalid properties in the Styles sidebar
  • Fixed the ability to add a new class by editing the class attribute in the DOM tree outline
  • Fixed an instance of the main WebGL canvas having no reported size in the Canvas Tab
  • Fixed a recording initiated by the user to properly show immediately on completion
  • Fixed session dividers not being added when Console tab is not visible
  • Fixed flashing when switching between nodes in the Styles sidebar
  • Fixed losing focus when editing a property while a page is being loaded
  • Prevented the Shift-Command-Left Arrow (⇧⌘←) and Shift-Command-Right Arrow (⇧⌘→) keys from switching tabs when focused on color picker text fields
  • Removed redundant tooltips

Release 52

Legacy NPAPI Plug-ins

  • Removed support for running legacy NPAPI plug-ins other than Adobe Flash

Service Worker

  • Changed Fetch event release assert to take into account the fetch mode
  • Changed to not use a Service Worker in the case of document redirection if it will be already served by AppCache
  • Fix loads for a Document controlled by a Service Worker to not use AppCache
  • Updated Service Worker to respect IndexedDB and DOM cache partitioning

Loading

  • Added support for preconnect link headers
  • Fixed converting a load to a download to work with async policy delegates
  • Prevented DNS prefetching from being re-enabled

JavaScript

  • Fixed handling undefined global variables with the same name as an element ID
  • Made Number.isInteger an intrinsic
  • Added new CSS env() constants for use with fullscreen
  • Fixed ::selection CSS stroke-color and stroke-width to be applied to selected text in text fields

Web API

  • Fixed HTML pattern attribute to set u flag for regular expressions
  • Fixed replaceState causing back and forward navigation problems on a page with <base href="/">
  • Fixed document.open to cancel navigation policy check in addition to cancelling the existing provisional load

Accessibility

  • Added more accessibility events support
  • Dispatched accessiblesetvalue event
  • Fixed keyboard focus to follow the VoiceOver cursor into web content or within web content
  • Fixed WebKit running spell checker even on non-editable content text

Web Driver

  • Fixed clicking on a disabled option element to not produce an error
  • Fixed stale elements not getting detected when removed from the DOM
  • Fixed failed provisional loads causing “Navigate To” command to hang
  • Fixed script evaluations via WebDriver to have a user gesture indicator

Web Inspector

  • Changed Canvas Tab to scroll into view and inspect an element if Canvas has a DOM node

WebAssembly

  • Added cache for memory address and size on an instance

Media

  • Fixed the webkitfullscreenchange event to fire at the same time as :-webkit-full-screen pseudo selector changes

Bug Fix

  • Fixed copying a table from the Numbers app and pasting into iCloud Numbers

Release 51

Accessibility

  • Added accessibleclick event

Security

  • Disallowed cross-origin subresources from asking for credentials
  • Prevented blocking authentication challenges to navigated resources

Loading

  • Fixed provisional loads that might get committed before receiving the decidePolicyForNavigationResponse response

Service Workers

  • Fixed the ability to download resources loaded from Service Workers

Rendering

  • Changed to handle all SVG writing modes

Styles

  • Improved the speed of descendent selector invalidation by using a selector filter

Web Inspector

  • Added support to show or hide the navigation sidebar panel based on the current view
  • Fixed hiding the completion popover when switching panels in the Styles sidebar
  • Added support for scrolling a non-editable web-selection and start autoscroll when near screen edges

Release 50

Service Workers

  • Added support for cache storage of blob responses
  • Changed to queue a microtask when a waitUntil() promise is settled\
  • Delayed service worker process creation until actually needed
  • Delayed saving service worker registrations to disk until after the activation succeeds
  • Fixed issue with IndexedDB databases not persisting inside Service Workers
  • Fixed issue where service workers jobs would sometimes not get processed anymore
  • Fixed clearing a registration to properly null out its workers before setting their state to "redundant"
  • Fixed clearing all service worker registrations to wait for importing the service worker registration to finish
  • Started nulling out registration.installing before setting service worker state to “redundant” when install fails

Web App Manifest

  • Changed to default Web App Manifest scope to the containing directory of the start URL when 'scope' is not specified

Payment Request

  • Changed show() to take an optional PaymentDetailsUpdate promise
  • Fixed payment sheet not dismissing when calling complete() with result "unknown" or "fail"

Web API

  • Implemented createImageBitmap(HTMLVideoElement)

Rendering

  • Corrected invaliding style for sibling combinators on class change
  • Fixed rendering SVG images with same size as WebGL texture
  • Fixed computing inline-block baseline for vertical-lr

Web Inspector

  • Added listing of Canvases, Programs, and Recordings to the sidebar
  • Fixed the Canvas tab tree selection abruptly changing when selecting a recording frame
  • Fixed pasting multiple properties to create properties instead of causing a bad property in the Styles Sidebar
  • Fixed the completion popover not hiding when switching panels in the Styles Sidebar
  • Fixed typing a value and quickly moving focus away sometimes displaying an outdated value in the Styles Sidebar
  • Updated the Elements tab to have “Jump to Layer” functionality

Web Driver

  • Changed cookies returned by automation to have expiry time in seconds
  • Changed to not return an error if resizing or moving a window has no effect
  • Prepended a dot to the domain when missing in the addCookie command

Accessibility

  • Fixed Accessibility getting notified when a web process cancels suspension
  • Deferred attribute computation until needed
  • Deferred focus notifications for UI elements

JavaScript

  • Changed to throw an exception when using structured cloning on a Symbol
  • Fixed an incorrect case of variable resolution to consult the global lexical environment first before the global object

Release 49

Service Workers

  • Changed Service Workers restored from persistent storage to have “activated” state
  • Changed to terminate Service Workers that are unresponsive
  • Prevented Service Worker registrations restored from disk from being reused when the JavaScript calls register() again

Fetch

  • Added support for ConsumeData callback when chunk data is received for Fetch response
  • Changed opaque being-loaded responses to clone their body
  • Filtered out Fetch headers from an opaque response
  • Fixed Fetch redirect to be compatible with “no-cors” mode
  • Fixed Fetch response to copy its URL from the request if it is null
  • Set integrity Fetch options for loading scripts and CSS

Intelligent Tracking Prevention

  • Blocked cookies for prevalent resources without user interaction
  • Ensured ServiceWorker loading and requests are correctly cleared by Intelligent Tracking Prevention
  • Introduced debug mode as experimental feature
  • Added support for percentages in column-gap
  • Added support for parsing calc() in CSS media queries
  • Adopted CSS WG recommended syntax changes to remove "left" and "right" in block/cross-axis alignment properties
  • Adopted CSS WG recommended syntax changes requiring overflow-position to precede self-position or content-position in the css-align property
  • Adopted support for a recent specification change removing "baseline" as a valid value for the ‘justify-content’ property
  • Fixed computing the scroll position of position:fixed elements when the scale is greater than 1
  • Preserved original image and picture element colors when invert colors is on

Rendering

  • Fixed the overflow of formulas for display mathematics
  • Optimized building the non-fast scrollable region with multiple iframes
  • Fixed the feMorphology SVG filter to allow the radius on one axis to be 0 and still apply the effect

JavaScript

  • Implemented trimStart and trimEnd
  • Relaxed line terminators in String to make JSON subset of JavaScript

Web Inspector

  • Changed clicking on a path component that has no siblings to now select it
  • Changed the Layers tab to use a statically positioned layer details panel instead of a moving popover
  • Changed the Styles sidebar to always display CSS rules left-to-right, even when Web Inspector uses RTL layout
  • Fixed an issue that caused the Canvas Tab to display multiple “waiting for frames” messages
  • Fixed an issue that cause the record button on a Canvas Tab canvas to sometimes not appear on hover
  • Fixed a bug that caused the Network Tab sort indicator to hide when a sorted column is hidden and re-shown
  • Fixed the Network Tab’s table columns to no longer shake when scrolling at non-default zoom levels
  • Fixed a data corruption issue triggered by updating values in the Styles Sidebar quickly
  • Fixed the Styles sidebar to stop throwing exceptions when tabbing past commented out properties
  • Fixed the Resource Tab detail sidebar to wrap super long URLs better
  • Fixed Window resizing when the Web Inspector is detached from the browser
  • Prevented showing “Displayed Columns” when right-clicking in a table header if all columns are required
  • Improved the behavior of the Cookies table in the Network Tab at narrow widths
  • Improved Navigation Bar layout at narrow heights

Media

  • Added support of multi keys from different sessions in CDMinstanceClearKey
  • Changed to resign the NowPlaying status when no media element is eligible
  • Changed to use existing RGB colorspace instead of creating a new one
  • Fixed cues for WebVTT served via HLS

Storage

  • Added a deprecation warning to the Console when AppCache is used
  • Added console messages for cache storage errors like Quota
  • Changed to not use the storage process when loading a main resource if there is no Service Worker registered
  • Changed to not use the storage process when registering a Service Worker client if there is no Service Worker registered
  • Ensured Cache API will resolve caches.open promises in the same order as called
  • Fixed DOMCache data not getting properly removed when clearing data for a given origin
  • Increased default cache storage quota to 50MB

Security

  • Added a policy check for targeted windows when navigating to a JavaScript URL
  • Added CSP post checks for Service Worker responses
  • Disabled access to Service Workers and the Cache API in sandboxed frames without the allow-same-origin flag
  • Updated frame-ancestor directive to match Content Security Policy Level 3

Accessibility

  • Added support for ARIA active-descendant
  • Added a way for VoiceOver to uniquely identify a web session
  • Implemented support for Graphics ARIA roles: graphics-document, graphics-object, and graphics-symbol
  • Prevented SVG AAM mapping from overriding ARIA role attribute in the case of SVG root

Bug Fixes

  • Fixed the GitHub login at forums.swift.org by ensuring redirections for subresource loads can change Service Worker controllers
  • Fixed blob conversion and sanitization for Microsoft Word for Mac 2011
  • Prevented a disallowed user-installed font from being used if its PostScript name is specified

Release 48

Password AutoFill

  • Disabled Automatic AutoFill of user names and passwords at page load to prevent sharing information without user consent

Storage Access API

  • Enabled the Storage Access API by default
  • Changed to remove access for all frames under a page when the page is closed
  • Fixed SVG lighting filter lights to use the correct coordinate system
  • Fixed feLighting that has a filter primitiveUnits="objectBoundingBox"

Service Workers

  • Added CSP support to Service Workers
  • Changed to use no-cache fetch mode when loading main documents with location.reload()
  • Changed WebProcess to pass the registration identifier and not the worker identifier for fetch events
  • Changed to use Service Workers for documents with data URLs or blob URLs
  • Changed behavior to cancel pending script loads when the Service Worker is being terminated
  • Cleared the Cache volatile storage as a memory optimization.
  • Exposed redirect mode as “manual” for navigation loads in Service Workers
  • Enabled User Timing and Resource Timing for Service Workers
  • Fixed fetch events getting sent to a Service Worker before its state is set to “activated”
  • Fixed navigator.onLine inside Service Workers
  • Implemented the “main fetch” default referrer policy setting
  • Made Service Workers behave correctly with regards to Page Cache
  • Stopped exposing fetch and extendable events to window
  • Fixed ::first-letter to select the correct grapheme pairs
  • Fixed a blank pages except for inner iframes when pending stylesheets cause style.isNotFinal() to be true
  • Fixed image-rendering to affect the scaling of border-image
  • Fixed the special list-item counter to start from the correct number for ::before and ::after
  • Improved text appearance on some CSS spec pages

Web API

  • Changed redirected iframes loading with request.redirect=follow to fail
  • Fixed setting window.opener to null to disown its opener
  • Implemented createImageBitmap(ImageBitmap)
  • Implemented Cache API partitioning based on ClientOrigin
  • Made elements with zero width or height focusable

Rendering

  • Fixed constant frame dropping during Flash video playback
  • Fixed clipping copyTexImage2D and copyTexSubImage2D
  • Fixed a visual flash caused by using font-display:fallback
  • Fixed data URL fonts that are split in the middle of an alphabet from causing random letters to disappear

Web Inspector

  • Added support for JSX (React) syntax highlighting
  • Added a content menu to the main Tab bar for showing and hiding tabs
  • Fixed the “Log Value” context menu sometimes being unavailable
  • Fixed typing a “space” in the quick console triggering a Canvas recording
  • Fixed fuzzy Capture Element screenshots
  • Fixed the Find banner sometimes not working when already populated and shown for first time on a resource
  • Fixed the “find next” and “find previous” within a resource content view does bouncing highlight when the editor scrolls
  • Fixed Layers sidebar to hide popovers when it is collapsed
  • Fixed the Export HAR context menu in the Network tab
  • Fixed DOM Tree Element selection in RTL mode
  • Fixed clicking on white space after a property sometimes placing a blank property at the wrong index in the Styles sidebar
  • Fixed long values causing bad wrapping in the Styles sidebar
  • Fixed pressing the down key to select the first item from completion list when focusing on an empty value
  • Fixed Command-G (⌘G) and Shift-Command-G (⇧⌘G) text search after closing the find banner
  • Fixed the Debugger tab to restore the selected resource on reload
  • Improved performance when dragging the recording slider in the Canvas tab
  • Improved inspector launch time, especially for systems with many fonts
  • Made the Console’s Execution Context picker stand out when it is non-default
  • Prevented properties from being semitransparent or crossed out while editing in the Styles sidebar

Web Driver

  • Implemented the Get Timeouts command

Accessibility

  • Changed the style of video elements when invert colors is on to preserve normal video colors
  • Implemented the updated CSS3 Speech for the speak and speak-as properties

WebRTC

  • Changed RTCController to disable ICE candidate filtering in case of getUserMedia based on the RTCPeerConnection origin
  • Updated WebRTC to close sockets that are marked as defunct

JavaScript

  • Applied poisoning to pointers in JavaScriptCore
  • Fixed for-in caching when indexed properties are added to properties on the prototype chain
  • Fixed Array storage operations that sometimes do not update the indexing mask correctly
  • Removed the arguments and caller properties for bound functions in Object.getOwnPropertyNames

WebAssembly

  • Added poison to JavaScript object’s secrets

Bug Fixes

  • Changed the History state to be updated during client redirects with asynchronous policy decisions
  • Forbid “<” and “>” in the host name of a URL
  • Prevented recording dynamic spelling corrections while in an ephemeral browsing session
  • Reduced the precision of “high” resolution time to 1ms

Release 47

Storage Access API

  • Enabled allowing requests from non-sandboxed <iframes>
  • Implemented frame-specific access in the document.cookie layer
  • Made document.hasStorageAccess() retrieve the current status from the network process
  • Refactored XPC for access removal to go straight from the web process to the network process

Service Workers

  • Added support for response blob given to fetch events
  • Changed extracting a body of type Blob to set the Content-Type to null instead of an empty string
  • Changed to use “error” redirect mode for fetching service worker scripts
  • Changed the Service Worker script fetch request to set the Service-Worker header
  • Changed Service Worker to not clean HTTP headers added by the application or by Fetch specification before Service Worker interception
  • Fixed the default scope used when registering a service worker
  • Fixed the Service Worker Registration promise sometimes not getting rejected when the script load fails
  • Fixed Service Worker served response tainting to keep its tainting
  • Fixed scopeURL to start with the provided scriptURL
  • Fixed self.importScripts() to obey updateViaCache inside service workers
  • Fixed Fetch handling to wait for the Service Worker’s state to become activated
  • Fixed SameOrigin and CORS fetch to fail on opaque responses served from a Service Worker
  • Fixed memory cache to not reuse resources with a different credential fetch option
  • Prevented searching for service worker registration for non-HTTP navigation loads
  • Supported Service Worker interception of a request with blob body

Media

  • Enabled picture-in-picture from an inline element on suspend
  • Fixed playing media elements which call “pause(); play()” getting the play promise rejected
  • Implemented <iframe allow="camera; microphone">

Rendering

  • Fixed elements animated on-screen that are sometimes missing
  • Fixed setting the fePointLights color
  • Fixed the color of the bottom right pixel of feDiffuseLighting
  • Fixed SVG lighting colors to be converted into linearSRGB
  • Updated the SVG use element’s shadow trees explicitly before the style recall

Web Inspector

  • Enabled the Canvas Tab by default
  • Improved open time performance when enumerating system fonts
  • Fixed Command-Option-R (⌘⌥R) in the docked inspector causing Web Inspector to reload instead of the inspected page
  • Fixed the URL filter in the Network Tab to be case-insensitive like filter bars in other tabs
  • Fixed mis-sized waterfall graphs in the Network Tab after closing the detail view
  • Redesigned the waterfall popover showing timing data in the Network Tab table
  • Updated the Time column in the Network Tab table to include the total duration not just the download duration
  • Added an inline swatch for CSS variables in the Styles sidebar
  • Added support for typing a semicolon at the end of a value to move to the next property in the Styles sidebar
  • Enabled Command-S (⌘S) to save changes in the matching CSS resource in the Styles sidebar
  • Fixed selecting text in the Styles sidebar to not add new properties
  • Implemented clicking above the selector to prepend a new property in the Styles sidebar

Clipboard API

  • Fixed isSafari runtime check to enable custom clipboard types and clipboard data sanitization in Safari Technology Preview
  • Fixed not being able to paste images on Gmail
  • Reverted blob URL conversions in pasted contents for LegacyWebKit clients

Bug Fix

  • Avoided waking plugin process up unnecessarily

Release 46

Service Workers

  • Made Service Workers enabled by default
  • Exposed self.registration inside Service Workers
  • Removed HTTP headers added by CachedResource and CachedResourceLoader in Service Worker fetch
  • Rejected promises in the ServiceWorkers API when calling objects inside of detached frames
  • Yielded image content from a CacheStorage.add(url) network request
  • Changed the Fetch event header filtering to only apply in CORS-mode
  • Handled self.skipWaiting() inside Service Workers
  • Removed XMLHttpRequest from being exposed to Service Workers
  • Implemented clients.get() and clients.getAll()
  • Supported container.register() and registration.unregister() inside Service Workers
  • Targeted the Service Worker’s scope URL for remote inspection metadata
  • Made navigation requests to use navigate fetch mode
  • Activated IndexedDB and Web Sockets in Service Workers
  • Supported container.getRegistration() and container.getRegistrations() inside Service Workers
  • Added support for serviceWorker.postMessage() and serviceWorkerRegistration.update() inside of Service Workers
  • Added support for the Service Worker client unloading algorithm
  • Added support for FetchEvent.clientId
  • Addressed various issues inspecting Service Workers
  • Included support for Service Worker generated redirections
  • Populated self.registration.installing, self.registration.waiting, and self.registration.active inside Service Workers

Security UI

  • Added a warning in the Smart Search field when interacting with password or credit card forms on non-secure pages

Privacy

  • Froze the user-agent string to reduce web compatibility risk and to prevent its use for fingerprinting
  • Fixed small or clipped controls caused by scale() transforms on <video> elements
  • Clamped automatic minimum size in CSS grid if the min() track sizing function is auto
  • Implemented alignment for absolute positioned CSS grid items

Rendering

  • Fixed an often blank <object type="image/svg+xml" data="foo.svg"> in an HTML-page
  • Fixed missing layer content when animating elements on-screen
  • Implemented transferToImageBitmap for WebGL offscreen canvas objects
  • Prevented viewport unit values from being affected by zooming with ⌘- or ⌘+

Storage Access API

  • Implemented frame-specific access in the network storage session layer
  • Made document.hasStorageAccess a function and always allow access for same-origin iframes

Web Inspector

  • Made Computed a top-level sidebar panel in the Elements tab
  • Added the ability to filter rules and add new style rules in the redesigned Styles sidebar
  • Added display of related pseudo-elements in the Styles sidebar
  • Changed the behavior of pressing delete in an empty value field of a newly added property to focus on the name field in the Styles sidebar
  • Fixed CSS properties not being removed in the Styles sidebar after deleting their values
  • Fixed details section headers overlapping the Classes container in the Computed Styles panel
  • Fixed adding a new property after a property without trailing semicolon in the Styles sidebar
  • Prevented adding a property before or after the first property from becoming appended to the end in the Styles sidebar
  • Fixed the filter bar in the Console tab sometimes not appearing and cases where clear console doesn’t always work
  • Fixed content views for resources loaded through XHR and Fetch to reflect the declared MIME-type
  • Fixed the Remote Web Inspector window to restore the last used window size
  • Fixed spurious warnings shown for commands that changed pixel contents in the Canvas tab
  • Improved the initial user interface experience in the Canvas tab
  • Fixed an issue that caused Safari to hang after toggling “Allow Web Inspector” setting on an attached iOS device.

Web Assembly

  • Fixed postMessage to allow a WebAssembly module to postMessage to and from an iframe
  • Fixed a bug where we would incorrectly throw stack overflow errors

Web Driver

  • Added support for handling user prompts shown while executing scripts
  • Fixed link and partial links queries to work in XHTML documents
  • Fixed computeElementLayout to correctly translate iframe client coordinates to main frame coordinates
  • Fixed a regression that causes page screenshots to only contain the viewport
  • Fixed an issue where safaridriver would quit after trying to close a window when no windows remain open

JavaScript

  • Corrected the recursive tail call optimisation on closures
  • Implemented BigInt literals and JSBigInt
  • Implemented a more optimized WeakMap and WeakSet
  • Optimized Object.assign by single transition acceleration

Media

  • Added support for the decoding="sync" or decoding="async" attribute on images
  • Enabled use of the VCP H264 encoder for platforms that support it
  • Fixed the cursor not becoming visible after exiting full screen video
  • Included "video/*" in image request Accept header if the browser supports video media in image contexts

WebRTC

  • Changed to allow AudioContext to start when getUserMedia is on
  • Fixed an issue where getUserMedia is resolving before the document knows it is capturing
  • Prevented the display from going to sleep when playing WebRTC video tracks

Release 45

Rendering

  • Corrected the computed style in pseudo-elements with display:contents
  • Changed to reset the SVG scrolling anchor if the fragmentIdentifier does not exist or is not provided
  • Fixed the available height for positioned elements with box-sizing:border-box
  • Fixed long pressing a phone number with spaces to result in a data detectors sheet instead of a link sheet
  • Fixed compositing layers to use accelerated drawing when navigating back to a page
  • Fixed Flexbox issues with display:contents by no longer eliminating the whitespace renderer if the previous sibling is a text renderer
  • Fixed missing contents of composited overflow-scroll when newly added
  • Fixed content not getting painted when scrolling an overflow node inside an iframe
  • Fixed FETurbulence SVG filter with stitchTiles
  • Fixed skewed colors in feImage as a filter input
  • Fixed an issue in the FEGaussianBlur SVG filter where the output of the last blur pass wasn’t copied to the result buffer
  • Optimized the FEDisplacementMap SVG filter
  • Optimized the FEMorphology SVG filter
  • Optimized the FEComponentTransfer SVG filter
  • Optimized the FELighting SVG filter
  • Optimized the FETurbulence SVG filter
  • Used vImage to optimize alpha premultiplication and un-premultiplication in FilterEffect

JavaScript

  • Added recursive tail call optimization for polymorphic calls
  • Fixed async iteration to only fetch the next method once
  • Updated module fetching to retry if the previous request fails
  • Fixed continual style re-resolution due to calc() values always comparing as unequal as seen on arstechnica.com
  • Fixed display issues in CSS Grid for a child with max-width
  • Enabled display:contents by default
  • Fixed inserting an image, selecting, underlining, and then deleting to remove the typing style with both -webkit-text-decorations-in-effect and text-decoration
  • Prevented mixing stroke-width and stroke-color with their prefixed versions

Web API

  • Added support for CanvasPattern.setTransform()
  • Implemented OffscreenCanvas.getContext("webgl")
  • Changed XMLHttpRequest to not treat file URLs as same origin
  • Changed FetchLoader to unregister its blob URL

Media

  • Added a FairPlay Streaming based CDM for Modern EME
  • Changed Web Audio’s AnalyserNode.fftSize to allow up to 32768 to match specifications
  • Changed skip back and skip forward buttons to not hard-code their numeric amount in localised strings
  • Fixed play and pause when pressing the space bar while watching a fullscreen video
  • Prevented captions from moving when <video> with no controls is hovered

Web Inspector

  • Added the display of detailed status during canvas recording in the experimental Canvas tab
  • Added showing the internal properties of PaymentRequest in the Console
  • Cleaned up the backtrace in Canvas details sidebar
  • Cleaned up navigation bar dividers and separators
  • Gave the DataGrid table header ContextMenu a section header to better describe its functions
  • Included Beacon loads in the Network table’s “Other” filter
  • Moved console Preserve Log setting from Setting tab to Console navigation bar
  • Added a toggle in the Network tab to control automatically clearing or preserving log across loads
  • Added a HAR Export button to the Network tab
  • Cleaned up the Network tab details view
  • Fixed the Navigation sidebar that would become broken after closing and re-opening the tab
  • Made the connection part thinner in the Network tab waterfall graph
  • Updated the Ignore Caches icon in the Network tab
  • Updated the Clear icon in the Network tab and Console tab
  • Removed Network “Clear on load” from the Settings tab now that Network tab has a toggle for it
  • Prevented adding a new property when clicking on inline swatches and property checkboxes in the Styles sidebar
  • Changed typing colon in the property name field to advance to the value field in the Styles sidebar
  • Fixed the clipped shadow of the selector’s field in the Styles sidebar
  • Made the selector field inline-block when editing in the Styles sidebar
  • Added undo and redo support for the DOM Tree’s add sibling context menus
  • Removed context menu actions for images which did not work

Accessibility

  • Fixed VoiceOver in Safari to read the table header for the first cell in the first body row
  • Fixed the search predicate to return the text element for plain text instead of the containing group
  • Prevented accessibility from triggering a sync layout while building the render tree on macrumors.com

Release 44

Conic Gradients

  • Added support for parsing conic gradients

Payment Request

  • Enabled Payment Request by default
  • Implemented the algorithm for when a user aborts the payment request
  • Restricted Payments Request API use to secure, same-origin frames
  • Changed the show() method to only be called with user activation

Image Bitmap

  • Implemented createImageBitmap() with HTMLCanvasElement
  • Added support for accepting a Settings object in the ImageBitmapRenderingContext constructor and getContext

Web API

  • Added basic OffscreenCanvas interface
  • Prevented XMLHttpRequest from sniffing content encoding
  • Added support for the <menuitem> tag, currently off by default at runtime
  • Fixed dynamic media query updates in shadow tree stylesheets
  • Fixed display:contents with dynamic table mutations

Rendering

  • Fixed a black background showing when over-scrolling with overflow-scrolling-touch
  • Fixed ugly looking text on macOS High Sierra in some CSS specification pages

Web Inspector

  • Added support for enabling and disabling event listeners in the Node details sidebar
  • Grouped DOM Tree context menus into sub-menus
  • Added DOM Tree context menu items for adding new elements and inserting HTML
  • Added a lock indicator in the Domain column of the Network Tab for secure loads
  • Added a context menu item to jump from any resource to its entry in the Network Tab
  • Fixed an issue where selecting a DOM Search Result in the Search Tab suddenly changed tabs
  • Fixed bugs and usability issues present in the Canvases Tab overview
  • Added a backtrace in the Canvases Tab to show where the selected canvas context was created
  • Added a display of all WebGL extensions that are activated for a particular WebGL canvas in the Canvases Tab
  • Added inline preview swatches for image parameters in 2D canvas recordings
  • Changed selecting a recorded Frame in a canvas recording to update the preview slider to reflect the final drawn result of that frame
  • Fixed an issue where the Canvases Tab recording status would fail to update
  • Fixed some usability issues in the experimental Layers Tab
  • Moved the compositing borders and paint flashing buttons from Elements Tab to the experimental Layers Tab if the latter is enabled
  • Enabled the new CSS styles editor by default and made the deprecated Legacy Style Editor available in the Settings tab under Experimental
  • Added many smaller features and bug fixes for the spreadsheet-style CSS editor

Web Driver

  • Fixed an issue that prevented a test from properly simulating a denied getUserMedia request
  • Fixed an issue that prevented a user from manually resizing an automation window after the session had been cancelled.
  • Fixed an issue that caused the mouse move command to use incorrect coordinates in some situations.

Media

  • Fixed UNPACK_FLIP_Y for MSE-backed videos
  • Fixed <video> to respect pointer-events
  • Improved performance of painting <video> to canvas by caching resolved URLs

CSS Grid

  • Changed CSS Grid to avoid clearing the overrideContainingBlockWidth if possible

Security

  • Changed to only allow non-mixed content protected sub-resources to ask for credentials

Extensions

  • Disallowed HTTP Authentication prompts from within Global Pages, Bars, and Popovers in .safariextz-style Safari Extensions

Release 43

Cache Storage API

  • Activated Cache Storage API by default
  • Added API to clean CacheStorage data
  • Enabled Cache Storage API implementation to compute storage size
  • Implemented listing origins for which CacheStorage is storing data

Web Animations

  • Added animations to the timeline
  • Added basic timing and target properties
  • Provided basic timeline and animation interfaces

ImageBitmap

  • Added support for createImageBitmap with basic HTMLImageElement
  • Added createImageBitmap to Window and Worker
  • Aligned ImageData constructor with the specification
  • Implemented drawImage(ImageBitmap) on 2D canvas
  • Implemented resizing options for ImageBitmap rendering

Geolocation API

  • Exposed Coordinates.floorLevel

Drag and Drop

  • Fixed event.dataTransfer.getData("text/uri-list") to return an HTTP or HTTPS URL for a dragged image
  • Exposed “text/html” data when dragging and dropping across origins
  • Prevented exposing raw HTML in pasteboard to the web content
  • Added support for ::before and ::after pseudo elements on elements with display:contents
  • Resolved ::before and ::after pseudo elements during style resolution

Rendering

  • Fixed overlapping text on all CSS fonts specifications
  • Avoided triggering layout from a style change
  • Fixed fonts that are erroneously invisible when the policy says they should be visible
  • Fixed UTF-8 decoding to produce one replacement character per illegal sequence instead of per byte
  • Fixed corrupted image after looping movie-backed <img>

WebGL

  • Added WebGL2 texImage3D overloads
  • Avoided duplicate multisample resolve before WebGL compositing
  • Removed proprietary constants from WebGL2RenderingContext
  • Improved performance by performing pixel conformance and texturing in a single step
  • Improved performance by skipping texture upload if the source image and destination texture haven’t changed
  • Updated the signatures of texSubImage3D
  • WebGL clamps drawingBufferWidth to 4096 pixels on a 5120 monitor or canvas

Bug Fixes

  • Fixed an issue where the Delete button didn’t fully delete certain emoji
  • Updated cookie partition to add and remove accordingly in intermediary redirect requests

JavaScript

  • Optimized __proto__ getter to be faster

Web Inspector

The redesigned styles sidebar can be enabled in the Web Inspector Settings tab under Experimental.

  • Turned on the new Network Tab by default
  • Turned on the Canvas Tab by default
  • Added support for HAR Export in the Network Tab
  • Enabled a JSON tree view for JSON content
  • Fixed resizing the Console drawer to match the cursor position
  • Enabled up and down arrows to modify CSS number values in the redesigned styles sidebar
  • Added color picker inline widget to the redesigned styles sidebar
  • Applied syntax highlighting to property values in the redesigned styles sidebar
  • Enabled autocompletion to property names and values in the redesigned styles sidebar
  • Enabled the go-to arrow in the Computed Tab of the redesigned styles sidebar
  • Fixed Layers Tab mistakenly throwing out the root element’s layer
  • Made 3D objects selectable in the Layers Tab visualization
  • Changed the split console to use the full width of the tab view
  • Changed Clear button back to the Trash icon in all tabs
  • Prevented popovers when scrolling the editor while debugging

Web API

  • Prevented detection of HTML or XML when an XMLHttpRequest responseType is set to “text”
  • Prevented DOMTokenList from adding empty attributes
  • Stopped key events from updating Document.lastHandledUserGestureTimestamp unless a key event is handled
  • Added support for MouseEvent.buttons
  • Removed Fetch Request.type getter

Web Driver

  • Fixed handling of keyboard shortcut for “Select All” (Ctrl-a)
  • Simulating keyboard shortcuts for disallowed actions no longer triggers the glass pane dialog

Payment Request

  • Implemented the “PaymentRequest updated” algorithm
  • Implemented a paymentmethodselected event for PaymentRequest
  • Changed processing shipping options only if shipping is requested, and throw an exception on duplicate shipping option IDs
  • Changed to resolve the accept promise for PaymentRequest.show() when a payment is authorized

Subresource Integrity

  • Added support for integrity="" on module scripts

Accessibility

  • Exposed explicitly-set aria-sort value of "none" as an object attribute

Release 42

File and Directory Entries API

  • Fixed a failure when calling fileSystemDirectoryEntry.getDirectory() with an empty path
  • Fixed recognizing a path starting with 2 slashes as a valid absolute path

Payment Request

  • Implemented PaymentRequest.canMakePayment()
  • Implemented PaymentRequest.show() and PaymentRequest.hide()

Clipboard API

  • Added the support for custom pasteboard MIME types and hid unsafe MIME types
  • Fixed copying and pasting of image files on TinyMCE and GitHub
  • Fixed DataTransfer.items to expose custom pasteboard types
  • Prevented revealing the file URL when pasting an image
  • Prevented dragenter and dragleave from using the same data transfer object
  • Removed “text/html” from DataTransfer.items when performing paste and match style
  • Started pasting images in RTF and RTFD contents using blob URLs
  • Sanitized the URL in the pasteboard for other applications and cross-origin content

Fonts

  • Added “display” to the FontFace JavaScript object
  • Implemented font-display loading behaviors
  • Upgraded Brotli to version 1.0.1 and WOFF2 to the latest upstream
  • Removed constant() in favor of env()

Web API

  • Added support for DOM aborting
  • Added support for <link rel=preconnect>
  • Changed to use the blob URL when pasting RTFD
  • Changed XMLHttpRequest.setRequestHeader() to allow Content-Transfer-Encoding header
  • Prevented submitting a form that is disconnected
  • Updated Document.createEvent for recent DOM specification changes

WebDriver

  • Added support for selecting an <option> element by sending keys to its parent <select> element.
  • Fixed an issue that caused driver.sendKeys("") to unexpectedly fail and throw an exception.

JavaScript

  • Addressed an issue with if (!await get(something))
  • Dropped instantiate hook in ES6 module loader
  • Fixed object properties that are undefined in super.call() but not in this.call()
  • Implemented polymorphic prototypes
  • Implemented RegExp Unicode property escapes
  • Introduced import.meta

Accessibility

  • Exposed ARIA drag-and-drop attribute values via AtkObject attributes
  • Exposed ARIA menu items with ATKROLEMENU_ITEM even when it’s the child of group role
  • Fixed redundant layout on tables
  • Fixed exposing aria-rowindex set on a row element
  • Fixed exposing the value of aria-level on non-heading roles

Media

  • Added basic support for getting an ImageBitmapRenderingContext
  • Fixed slow WebGL compositing performance
  • Fixed seek() command for encrypted content when the <video> element is not in the DOM at decode time

Rendering

  • Fixed incorrect fullscreen animation when the element has a transform
  • Fixed an issue where minimum font size may cause elements to have an infinite line-height
  • Improved the progressive display of large images

WebGL

  • Changed to allow async to be able to be used as an imported binding name
  • Changed the way WebGL is composited into the page significantly, providing much better performance on lower-end hardware with high-resolution displays
  • Reduced the maximum samples used in Multi-Sample Anti-Aliasing (MSAA) for improved performance

Web Inspector

  • Added a Canvas tab
  • Added auto-completion for min() and max() within a CSS calc()
  • Added support for keyboard navigation with Tab, Shift-Tab, Enter, and ESC in the redesigned styles sidebar
  • Added support for editing rule selectors in the redesigned styles sidebar
  • Added support for undo and redo of manual edits in the redesigned styles sidebar
  • Added detail views for resources in Network tab
  • Added a headers detail view for resources in the Network tab
  • Added remote address in the headers detail view of the Network tab
  • Added a cookies detail view in the Network tab
  • Added support to search in the headers detail view of the Network tab
  • Changed Layers tab sidebar DOM highlight to be by row hover, not row selection
  • Changed Network tab filter resources to be based on URL and text content
  • Changed the Network tab to show initially loaded resources even if network info was not logged
  • Fixed jitter in timeline ruler labels
  • Fixed an issue where clicking in the Web Inspector web view clears the selection in the inspected page
  • Fixed Beacon and Ping grouping issues
  • Fixed Layers tab sidebar popover
  • Fixed a row wrapping issue causing waterfall graphs to display behind the next row’s name
  • Fixed blurry quick open resource dialog icons
  • Fixed misaligned popover when selecting child layers using the keyboard
  • Fixed the table in the Network tab from appearing blank when scrolling it reduces the number of rows
  • Enabled 3D objects to be selectable in the Layers visualization
  • Ensured popovers are not malformed on window resize.
  • Escaped more characters in the command generated by “Copy as cURL”
  • Improved Canvas recording events
  • Improved setting the initial default sorting for tables
  • Improved reliability of selection in a table in the Network tab
  • Improved the quick open dialog to include source mapped files in the search results
  • Included Beacon and Ping requests in Network tab
  • Set initial column widths to allow the waterfall column to expand more by default in the Network tab

Bug Fixes

  • Fixed an issue introduced in Safari Technology Preview 41 where the tab bar could get out of sync with which tab’s content is being displayed when opening links from another app

Release 41

File and Directory Entries API

  • Enabled File and Directory Entries API
  • Added support for min() and max() in calc()
  • Added env() as an alias of constant() to match the evolving specification
  • Made more of the CSS animation system internals element based
  • Prevented fit-content() tracks from stretching
  • Removed CSS Regions support

Bug Fixes

  • Fixed an issue introduced in Safari Technology Preview 40 where websites would log users out immediately after logging in

WebRTC

  • Fixed RTCDataChannel connectivity issues

Drag and Drop

  • Enabled DataTransfer.prototype.items by default
  • Expose text/html and text/uri-list in DataTransfer.prototype.items
  • Fixed DataTransfer to stop exposing local file paths when dropping files

Web API

  • Changed history.pushState() and history.replaceState() to align more closely to the HTML standard
  • Changed to use a high resolution timestamp for event time

JavaScript

  • Added a small optimization for async generators

WebCrypto

  • Added support for Elliptic Curve P-521

WebGL

  • Added bindings for optional arguments to some WebGL2 methods
  • Enabled passing sequences to various WebGL2 methods
  • Fixed accelerated texImage2D for video to respect flipY in WebGL
  • Fixed VideoTextureCopierCV to correctly restore vertex attribute state
  • Updated some WebGL2 return types to match the specification

Media

  • Aligned Media Source Extension IDL with spec

Rendering

  • Changed to avoid style recomputation when forwarding a focus event to a text field’s input type
  • Changed to avoid style resolution when clearing focused element
  • Fixed computing animated style to not require renderers
  • Fixed partial frame rendering that can occur even after loading all of the encoded data
  • Fixed the width of a child’s margin box to always be equal to that of its containing block in regular block layout
  • Fixed the spelling, grammar, and correction dots that were being painted upside down

Accessibility

  • Fixed ARIA grids that claim to be multiselectable even with aria-multiselectable is set to false

Storage

  • Added Cache API support of records persistency
  • Changed IDBRequest and IDBTransaction error properties to be DOMExceptions

Web Driver

  • Fixed an issue that prevented clicking on overflow: hidden elements without children
  • Fixed an issue that prevented clicking on <option> elements
  • Fixed an issue that prevented the top-level frame from being re-focused automatically when the main frame navigates

Web Inspector

  • Added auto-completion suggestions for CSS attr based on the selected element’s attributes
  • Added auto-completion suggestions for CSS functions such as constant(), env(), linear-gradient(), etc.
  • Changed pressing the Escape key in the global search field to clear the field
  • Changed the keyboard shortcut for “Reload page from origin” to match Safari
  • Fixed updating the Event Listeners section when listeners are added or removed
  • Fixed “Sort by size” issues with Cookies and ApplicationCache DataGrids
  • Updated user agent strings and iPhone 8 / iPhone 8 Plus models in Responsive Design Mode

Release 40

JavaScript

  • Added support for regular expression named capture groups
  • Fixed semicolon tokens becoming interpreted as an = assignment operator
  • Implemented async iteration statement for-await-of
  • Optimized Object.keys using careful array allocation

FileSystem Entry API

  • Added support for input.webkitEntries
  • Implemented FileSystemDirectoryEntry.getDirectory()
  • Implemented FileSystemEntry.getParent()
  • Implemented FileSystemFileEntry.file()
  • Fixed the FileSystemEntry API to ignore hidden files
  • Finished the DOMFormData implementation

Fetch API

  • Added support for FetchRequest.body
  • Added support for Request body stream cloning
  • Added support for consuming a Request ReadableStream body
  • Added support for caching Response with a ReadableStream body
  • Aligned FetchResponse and FetchRequest body handling
  • Fixed Response.statusText unexpectedly using the full HTTP status line for HTTP/2 responses
  • Fixed Request ReadableStream body to throw an exception when keep alive is true

Accessibility

  • Distinguished between title attribute tooltips and aria-label attribute labels

Web API

  • Fixed validation for DOMMatrix and DOMMatrixReadOnly NaN values
  • Implemented DOMMatrix2DInit for setTransform() and addPath()
  • Removed support for >> descendant combinator syntax
  • Fixed wrong getComputedStyle result for pseudo-elements in display:none subtrees.
  • Updated the font selection algorithm to match latest CSS specifications

CSS Grid

  • Fixed grid shorthand to not reset the gutter properties
  • Changed stretching auto tracks to be done as part of the track sizing algorithm
  • Changed to use transferred size over content size for automatic minimum size

Web Inspector

  • Fixed an issue that caused toolbar buttons to be hidden at narrow widths
  • Prevented the split console in the Settings tab
  • Use the same Timeline icon in the dashboard and Timeline tab
  • Increased the maximum width allowed for sidebars
  • Fixed an issue that prevented ⌘E and ⌘G from working in the main content area when quick console drawer is open

Media

  • Prevented increasing the reported totalFrameDelay for non-displayed frames, or frames coming in while paused
  • Fixed MSE-to-Canvas painting that can become “stuck” during heavy workloads

Rendering

  • Implemented the HTMLImageElement.async attribute
  • Implemented HTMLImageElement.decode() method
  • Fixed respecting the SVG fragment identifier if it is a part of an HTTP URL
  • Enabled previous elements with lang= to affect fonts selected for subsequent elements

WebGL

  • Implemented getActiveUniforms() for WebGL 2
  • Accelerated texImage2D for video doesn’t respect flipY
  • Fixed VideoTextureCopierCV to correctly restore vertex attribute state

Release 39a

Beacon API

  • Added support for quota limitation
  • Enabled content extensions to be able to intercept Beacon and Ping redirects
  • Improved error reporting
  • Prevented cross origin Beacon requests with an ArrayBuffer or ArrayBufferView payload from doing a CORS preflight

Directory Upload

  • Added basic support for input.webkitdirectory behind an experimental feature flag
  • Added stub File and Directory Entries API interfaces

Fetch API

  • Added support for FetchRequest.body
  • Added support for a callback-based fetch

Input Events

  • Renamed inputType “formatForeColor” to “formatFontColor”
  • Fixed an issue where picking an emoji via the emoji dialog using Control-Command-Space (⌃⌘Space) fires inconsistent beforeinput events.
  • Fixed an issue where using align left or align justify on the Touchbar both send a beforeinput event with the “formatJustifyLeft” inputType.

JavaScript

  • Implemented async generator runtime for async iteration
  • Optimized map iteration for faster performance
  • Added support for the “dotAll” flag for regular expressions

WebAssembly

  • Fixed const in unreachable code getting decoded incorrectly, erroneously rejecting the binary as invalid

WebRTC

  • Fixed a MediaStream created without tracks to correctly update the active state after tracks are added

Web Inspector

  • Fixed copying text from the “View variable value” popover in the Styles sidebar
  • Added async stack trace capture when workers or the main context posts a message
  • Replaced “Enter Class Name” input label with “Add New Class” for clarity

Media

  • Implemented HTMLMediaElement dispatch of the onencrypted event
  • Fixed autoplay muted videos not playing when outside the viewport
  • Fixed HTMLTrackElement behavior to match standards

Release 38

Beacon API

  • Enabled the Beacon API by default as an experimental feature
  • Added support for CORS-preflighting
  • Added support for CORS-preflighting on redirects
  • Added support for connect-src CSP checks on redirects
  • Updated sendBeacon() to rely on FetchBody instead of the whole FetchRequest
  • Changed to use “application/octet-stream” content-type for payloads of ArrayBuffer and ArrayBufferView types

Fetch API

  • Added support for Request keepalive getter
  • Changed Response to keep all ResourceResponse information
  • Implemented quota limitation for keepalive Fetch requests

Web Payments

  • Enabled Payment Requests as an experimental feature
  • Added support for parsing of the font-display property
  • Implement caret-color support
  • Added a fast path for rotate() and rotateZ() transform parsing
  • Fixed parsing of <meta http-equiv=refresh> to allow time starting with a ‘.’ without a leading 0
  • Fixed a hit testing issue occurring when an SVG rect element with a non-default stroke style applied

Web API

  • Added support for considering file extensions in the accept attribute of HTML file input elements
  • Improved support for referrer policies
  • Fixed the Promise resolve and reject function to have a length of 1
  • Fixed an early error on an ANY operator before new.target
  • Fixed removing an empty <li> element when inside a table cell
  • Fixed XHR to only fire an abort event if the cancellation was requested by the client

Media

  • Fixed deleting the old subtitle track on src attribute change event

Apple Pay

  • Added support for phonetic contact names

Web Inspector

  • Added Canvas path preview when viewing a recording
  • Changed clicking on an autocomplete suggestion to apply it, not dismiss it
  • Removed text-shadow and gradient backgrounds
  • Updated the filter icon in the styles sidebar

WebDriver

  • Added support for interacting with <option> and <select> elements using the element click command
  • Added support for uploading files via <input type=file>
  • Fixed a timeout when a JavaScript alert is shown in onload handler
  • Implemented “normal” and “eager” page load strategies from the W3C specification
  • Updated code to use in-view center points for clicks and other automation logic

Release 37

Web API

  • Added initial support for navigator.sendBeacon behind an experimental feature flag
  • Implemented document.elementsFromPoint
  • Made cross-origin properties enumerable
  • Fixed dispatching the click event to the parent when the child target stops hit testing after mouseDown
  • Moved DOMException properties to the prototype and changed to use Error.prototype.toString()

JavaScript

  • Added finally method support to Promise
  • Added support for optional catch binding

WebAssembly

  • Reduced the size of generated binaries

Apple Pay

  • Added "carteBancaire" as a supported payment network
  • Aligned quirky number parsing with other browsers

Web Inspector

  • Added a context menu item to the Elements tab for taking a screenshot of a node
  • The debugger now captures async stack traces when web content calls addEventListener
  • Prevented outputting “No message” for multi-value logs like console.log(x, y)
  • Fixed warnings about console.assert lines without semicolons
  • Inlined multiple console log values if they are simple
  • Fixed inspect(aFunction) to jump to the function definition
  • Fixed the page overlay highlight to fade out when a page is constantly updating
  • Fixed some controls overlaying the header in the Settings tab

WebDriver

  • Fixed an issue where implicit navigations didn’t cause a browsing context switch
  • Fixed link and partial link queries if the text link contains trailing or leading whitespaces
  • Fixed an issue that caused some script evaluations to be attributed to the wrong frame

Rendering

  • Changed to disable async image decoding for large images after the first time a tile is painted
  • Fixed the minimum font size preference to affect absolute line-height values and prevent text lines from overlapping
  • Fixed getting round-trip stroke-width styles causing text to gain a stroke
  • Fixed Reeder’s default font to correctly use San Francisco

Accessibility

  • Fixed zoom to follow the keyboard insertion point
  • Added a background color for the focus state of the icon buttons in the media controls
  • Fixed the incorrect range from index and length on <p> tags with contenteditable
  • Changed to dispatch accessibilityPerformPressAction asynchronously on macOS
  • Fixed silent VoiceOver or skipping over time values on the media player
  • Fixed the web page getting reloaded when a node is labelling multiple child nodes

Media

  • Fixed media controls missing content in fullscreen when the document has a scroll offset
  • Fixed the mouse pointer not hiding during fullscreen playback
  • Fixed pressing the Escape key to not be a valid user gesture to enter fullscreen

Release 36

JavaScript

  • Implemented Object Spread
  • Changed to not resolve auto values of align-self and justify-self matching specification changes
  • Fixed line-height:<number> to not be visually applied twice when text autosizing is in effect

WebRTC

  • Fixed incorrect sdpMLineIndex for video to fix interoperability with Firefox
  • Fixed sending silence data for a disabled audio track
  • Increased the render audio buffer sizes for WebRTC

Web Driver

  • Fixed link and partial link queries when the link contains formatting tags

Rendering

  • Disabled asynchronous image decoding for large images by default
  • Enabled the Viewport Fit experimental feature by default
  • Fixed an element not getting repainted when its background image finishes decoding
  • Fixed an issue to avoid unnecessary copying of the frame buffer into a WebGL Layer
  • Corrected the radix used in Unicode Escape in invalid character error message
  • Fixed the low memory notification to prevent causing style recalculation
  • Fixed GIFs with infinite animation often only playing once

Media

  • Fixed removing user gesture restrictions when adding the autoplay attribute to a media element during a user gesture
  • Fixed reflecting "video" and "audio" when they are not a supported as attribute value
  • Fixed bad behavior caused by removing samples when the presentation order does not match decode order
  • Fixed media controls drawing behind the captions
  • Fixed clicking the edges of media control buttons to execute the action, not just change the visual state of the button

Web Inspector

  • Changed to group Inspector Style Sheets as part of the Stylesheets folder
  • Improved wording for Potential Custom Element that lacks a Custom definition
  • Fixed resources that are sometimes missing from the tree outline right before grouping into folders
  • Fixed WebSocket resource tree elements to show the connection status

WebAssembly

  • Implemented name section’s module name, and skipped unknown sections

Bug Fixes

  • Fixed the “Show My Relationship” link in familysearch.org
  • Fixed an issue where font loads can cause Chinese characters to draw as .notdef
  • Changed AppCache to ignore fallback entries whose namespace is not prefixed with the manifest path

Release 35

Performance

  • Fixed a 50% regression on MotionMark Suites when extended color support was added
  • Fixed the bug that Speedometer’s score worsens by 40% when accessibility features are enabled

Media

  • Changed image decoding so that when an image appears more than once on a page, decoding to paint one instance repaints them all
  • Fixed a frame rate issue that caused getUserMedia to fail on some machines
  • Fixed allowing media element to update its state when Mission Control closes the fullscreen window
  • Made a change to hide volume controls when AirPlay is active
  • Prevented capturing at unconventional resolutions when using the software encoder
  • Prevented clearing capture mute from clearing audio mute

Web Inspector

  • Added a small delay before showing the progress spinner when loading resources
  • Added a toggle button to the left side of the split console navigation bar
  • Fixed initial search sometimes being performed twice, producing duplicate results
  • Fixed slowness when pausing with a deep call stack by avoiding eagerly generating object previews
  • Flipped all go-to-arrow instances in right-to-left mode
  • Fixed script timeline bubbles that sometimes appear to miss large events
  • Fixed a hang when using “break on all exceptions” throws a stack overflow
  • Improved type token background color in the debugger

JavaScript

  • Cleaned up Object.entries implementation
  • Implemented Object Rest Destructuring
  • Made Object.values faster by writing it in C++
  • Removed Reflect.enumerate

Accessibility

  • Fixed calling setValue() on contenteditable for ARIA text controls
  • Fixed role="none" or role="presentation" on an <iframe>

WebAssembly

  • Disabled some WebAssembly APIs under CSP

WebCrypto

  • Fixed a backward compatibility issue with CryptoKey objects stored in the IndexedDB

Web APIs

  • Fixed a TypeError in the Fetch API when called with body === {}
  • Fixed an issue causing Safari to leave a popup window opened during the beforeunload event
  • Included audio/vnd.wave as a valid mime-type for wav files
  • Added support for structured serialization of CSS Geometry types
  • Fixed @font-face rules with invalid primary fonts never downloading their secondary fonts
  • Fixed applying font features only for the particular type of font they are being applied to
  • Fixed CSS text properties affecting <video> shadow root

Release 34

WebRTC

  • Added WebRTC options to the Developer menu
  • Disabled Legacy WebRTC API in the Experimental Features menu by default
  • Changed behavior to close NetworkProcess WebRTC sockets as soon as the Web Process no longer needs them
  • Added support for receive-only SDP offers through addTransceiver
  • Changed handling capture status based on MediaStreamTrack
  • Changed RTCPeerConnection to return RTCSessionDescriptionInit instead of RTCSessionDescription
  • Fixed a cloned MediaStreamTrack to not mute the other tracks using the same source
  • Fixed RTCPeerConnection getReceivers() to return transceivers that have an active receiver but no active sender
  • Fixed the screen going into sleep mode during WebRTC video

Media

  • Fixed high CPU usage when entering fullscreen or seeking during MSE video playback
  • Fixed seeking during MSE video playback where audio would begin playing long before rendering the video
  • Fixed video flashing black when switching back to a tab
  • Improved media controls rendering for long-loading media files
  • Prevented media elements continuing to load media data after navigation

JavaScript

  • Made Object.assign faster by rewriting it in C++
  • Reduced Structure size
  • Updated RegExp.prototype.[@@search]] implementation according to the latest specifications
  • Fixed PreTypedArray constructor with a string to not throw an exception

Security

  • Applied img-src CSP directive to favicon loads
  • Implemented W3C Secure Contexts Draft Specification
  • Restricted filtered painting across cross-origin boundaries with transforms
  • Added allow-popups-to-escape-sandbox attribute support for <iframe> elements
  • Added Subresource Integrity as an experimental feature

Web Inspector

  • Added grid to image previews to clarify transparency and image size
  • Fixed console message icons that overlap the source location
  • Fixed pretty print, type info, and code coverage buttons disappearing after switching tabs
  • Fixed SVG files and favicon files that don’t display properly
  • Fixed the search highlight not showing up in resources when paused
  • Fixed showing non-shadow children of an element with a shadow root (e.g. <video>)

Web API

  • Fixed the meter element not respecting the writing direction
  • Fixed WebGPU contexts to have a back reference to the canvas element
  • Fixed CSS transitions added while page is not visible so they start animating when the page becomes visible
  • Fixed IndexedDB.getAll() use inside a Web Worker

WebCrypto

  • Moved SubtleCrypto from the experiemental features menu
  • Removed unsupported AES_CMAC, DH, and CONCAT

WebAssembly

  • Fixed several miscellaneous bugs found from web platform tests

Rendering

  • Added an experimental feature setting for asynchronous frame scrolling

Accessibility

  • Exposed the inline property as an accessibility attribute

Bug Fixes

  • Fixed mint.com header rendering incorrectly when initially loaded
  • Fixed scrubbing backward on a YouTube video

Release 33

Performance

  • Fixed an issue that could lead to large memory use in the Safari Technology Preview and web content processes when certain Safari Extensions are installed

JavaScript

  • Fixed for-in optimization static analysis in the bytecode generator
  • Improved performance of String.prototype.concat
  • Improved the bytecode and type information provided for toLength
  • Optimized Map and Set constructors

WebRTC

  • Added WebRTC stats logging

Media Streams and Capture

  • Fixed getUserMedia prompting too often
  • Prevented getUserMedia requests from background tabs unless the tab is already capturing
  • Prevented getUserMedia from prompting again if the user denied access

Media

  • Enabled clients to specify a list of codecs that should require hardware decode support
  • Exempted exclusively wall-powered devices from client-required hardware codec support
  • Aligned Web Audio implementation to specifications when clients pass a value of 0 for bufferSize to the createScriptProcessor() method

CSS Grid

  • Added support for orthogonally positioned grid items
  • Fixed the behavior of positioned items without specific dimensions
  • Fixed the logical margin applied in the tracks sizing algorithm of auto tracks
  • Fixed margin applied when stretching an orthogonal item in a fixed size track

Web API

  • Aligned <col span> and <colgroup span> limits with the latest HTML specification
  • Fixed null content-type and content-length when fetching Blob URLs with XHR
  • Fixed getComputedStyle() to return pixel values for left, right, top, and bottom, matching the specifications
  • Implemented fromFloat32Array, fromFloat64Array, toFloat32Array, and toFloat64Array for DOMMatrix
  • Implemented DOMPointReadOnly.matrixTransform()
  • Enabled script modules to be imported via data URLs
  • Updated to slightly stricter rules for custom element names from the recent draft standards
  • Used the parent box style to adjust RenderStyle for alignment
  • Added conditional support for media preloading and aligned media as values
  • Aligned preload implementation to specifications with mandatory as value and other alignments

Rendering

  • Changed behavior to remove backing store for layers that are outside the viewport
  • Fixed an issue where a frame’s composited content is visible when the frame has visibility:hidden
  • Changed behavior to destroy the associated renderer subtree when display:contents node is deleted

Web Inspector

  • Added contextual menu item to log a WebSocket object to the console
  • Added Debug view to the Settings tab for debug settings and experimental features
  • Added the ability for the user to choose stylesheet when creating new rules
  • Changed the Node Details Sidebar to allow editable key and values in the Attributes table
  • Prevented unnecessary layout triggered when a Sidebar is resized while collapsed
  • Fixed performing search on reload for an existing query in the Search tab
  • Fixed images dragged from Web Inspector to Desktop being named “Unknown.png”
  • Fixed an issue where reloading the page after switching from the Resource tab switches back
  • Fixed the CodeMirror instance in the ConsolePrompt getting refreshed each time it is shown
  • Fixed showing active Web Sockets when opening Web Inspector
  • Fixed an issue preventing the go-to arrow to inspect Web Sockets that receive >50 messages per second
  • Improved the reliability of automatically pausing in auto-attach when inspecting a JSContext

Bug Fixes

  • Enabled AirPods to work with Netflix
  • Fixed stuttering audio in YouTube when the page changes visibility

Release 32

New Features

  • The following web-facing Safari 11 features are new to Safari Technology Preview 32:
    • WebRTC and Media Capture
    • WebAssembly
    • Auto-Play Improvements

Release 31

Web API

  • Added media and type attribute support for <link rel="preload">
  • Added support for DOMMatrix and DOMMatrixReadOnly
  • Fixed getElementById to return the correct element when a matching element is removed during beforeload event
  • Fixed skipping <slot> children when collecting content for innerText

JavaScript

  • Fixed a syntax error thrown when declaring a top level for-loop iteration variable the same as a function parameter

Layout & Rendering

  • Added support for transform-box to switch sizing box in SVG
  • Fixed clientX and clientY on mouse events to be relative to the layout viewport
  • Fixed large animated images getting decoded as a large static image before receiving all of the data
  • Fixed screen flickering caused by asynchronous image decoding for large images when interacting with the page
  • Fixed element position when dragging jQuery Draggable elements with position:fixed after pinch zoom
  • Fixed a timing issue causing a hardware-accelerated transform animation to misplace an element 50% of the time

CSS Grid

  • Implemented the place-self shorthand
  • Fixed static position of positioned grid items
  • Ignored collapsed tracks on content-distribution alignment

Font Variations

  • Added support for calc() in font-variation-settings and font-feature-settings
  • Enabled the woff2-variations format identifier for @font-face
  • Updated the font-style implementation in the font selection algorithm

Web Inspector

  • Added a new icon for Web Socket resources
  • Changed adding new CSS rules so that the added rules go into a new Inspector Style Sheet resource that can be viewed, edited, and saved
  • Fixed an issue where changes are not applied in Styles sidebar when switching tabs without blurring editor
  • Fixed content views not getting restored on reload if its tree element is filtered out
  • Fixed an error when trying to delete DOM breakpoints from the Debugger tab
  • Fixed deleting a disabled XHR breakpoint
  • Fixed miscellaneous RTL and localization issues
  • Prevented loading the active recording until a Timeline view needs to be shown

Media

  • Added support for painting MSE video-element to canvas
  • Fixed captions and subtitles not showing up in picture-in-picture for MSE content
  • Fixed media element reporting hidden when in picture-in-picture mode and tab is backgrounded

Web Driver

  • Fixed characters produced with the shift modifier on a QWERTY keyboard to be delivered as shift-down, char-down, char-up, and shift-up events
  • Fixed navigator.webdriver to return false if the page is not controlled by automation

WebCrypto

  • Replaced CryptoOperationData with BufferSource

Security

  • Improved error message for Access-Control-Allow-Origin violations due to a misconfigured server

Release 30

Web API

  • Implemented Subresource Integrity (SRI)
  • Implemented X-Content-Type-Options:nosniff
  • Added support for Unhandled Promise Rejection events
  • Updated document.cookie to only return cookies if the document URL has a network scheme or is a file URL
  • Removed the non-standard document.implementation.createCSSStyleSheet() API
  • Removed the non-standard Element.scrollByLines() and scrollByPages()
  • Changed to allow a null comparator in Array.prototype.sort
  • Changed to set the Response.blob() type based on the content-type header value
  • Changed Element.slot to be marked as [Unscopable]
  • Implemented HTMLPreloadScanner support for <link preload>
  • Fixed setting Response.blob() type correctly when the body is a ReadableStream
  • Moved offsetParent, offsetLeft, offsetTop, offsetWidth, offsetHeight properties from Element to HTMLElement
  • Moved the style property from Element to HTMLElement and SVGElement, then made it settable

JavaScript

  • Fixed Arrow function access to this after eval('super()') within a constructor
  • Added support for dashed values in unicode locale extensions
  • Fixed the behaviour of the .sort(callback) method to match Firefox and Chrome
  • Fixed space-evenly behavior with Flexbox
  • Fixed font-stretch:normal to select condensed fonts
  • Fixed custom properties used in rgb() with calc()

Accessibility

  • Fixed the behavior of aria-orientation="horizontal" on a list
  • Prevented exposing empty roledescription
  • Propagated aria-readonly to grid descendants
  • Changed to ignore aria-rowspan value if a rowspan value is provided for a <td> or <th>
  • Fixed an issue causing VoiceOver to skip cells after a cell with aria-colspan
  • Changed to treat cells with ARIA table cell properties as cells
  • Updated implementation of aria-orientation to match specifications

Web Inspector

  • Added resource load error reason text in the details sidebar
  • Fixed toggling the Request and Response resource views in certain cases
  • Fixed miscellaneous RTL and localization issues
  • Fixed Option-Click on URL behavior in Styles sidebar
  • Changed 404 Image Loads to appear as a failures in Web Inspector

WebDriver

  • Fixed several issues that prevented cookie-related endpoints from working correctly

Media

  • Removed black background from video layer while in fullscreen

Rendering

  • Fixed problem with the CSS Font Loading API’s load() function erroneously resolving promises when used with preinstalled fonts
  • Fixed flickering on asynchronous image decoding and ensured the image is incrementally displayed as new data is received

Release 29

JavaScript

  • Implemented Intl.DateTimeFormat.prototype.formatToParts
  • Improved Date.parse to accept wider range of date strings
  • Implemented Object.isFrozen() and Object.isSealed() according to ECMA specifications
  • Added support for percentage gaps for CSS Grid
  • Changed :focus-within behavior to match specifications

Rendering

  • Avoided repaints for invisible animations on tumblr.com
  • Fixed rendering flexbox children across columns
  • Fixed text-align:start and text-align:end behavior in table cells
  • Fixed animations with large negative animation-delays that fail depending on machine uptime
  • Reduced redundant text measuring during mid-word breaking
  • Changed memory handling to keep all of the decoded frames for an animated image if the total memory size of the frames is under 30MB (up from 5MB)
  • Fixed <li> content inside <ul> to wrap mid-word when word-break:break-word is set
  • Fixed the location of the “recent searches” popover of <input type="search"> in RTL mode

Web Inspector

  • Added regular expression support to XHR breakpoints
  • Added a pause reason for “All Requests” XHR breakpoint
  • Fixed the enabled state of “All Requests” XHR breakpoint to be correctly restored
  • Fixed a bug where XHR breakpoints would disappear when the inspected page is reloaded
  • Fixed XHR breakpoints restored from settings but not appearing in the sidebar
  • Fixed Network datagrid columns to correctly restore their shown or hidden state
  • Added tooltips to Network grid items for easier reading when text overflows
  • Fixed sorting by Priority column in Network datagrids
  • Fixed the display of Web Socket messages with non-latin letters
  • Prevented showing the Search tab for location links, prefer the Resources tab
  • Changed to treat Uint8ClampedArray as an array, not an object
  • Fixed Command-G (⌘G) shortcut to allow Find next to work in the console
  • Implemented autocompletion for CSS variables
  • Updated the icon for the Ignore resource cache button in the Network Tab

WebCrypto

  • Added support for ECDSA
  • Improved converting an ECDSA signature binary into DER format

Accessibility

  • Changed the role description of <hr> from “separator” to “rule”

Media

  • Restricted WebKit image formats to a known whitelist. WebKit now only loads images of the following formats:
    • PNG (.png)
    • GIF (.gif)
    • JPEG (.jpg), (.jpeg), (.jpe), (.jif), (.jfif), (.jfi)
    • JPEG 2000 (.jp2), (.j2k), (.jpf), (.jpx), (.jpm), (.mj2)
    • TIFF (.tiff), (.tif)
    • MPO (.mpo)
    • Microsoft Bitmap (.bmp), (.dib)
    • Microsoft Cursor (.cur)
    • Microsoft Icon (.ico)

Bug Fixes

  • Fixed an issue where the status bar would not display modifier key information (e.g. “Open * in new tab” when holding the Command key)
  • Improved performance of typing on pages with many <input> elements
  • Fixed an issue where a hardware “enter” key would not dismiss JavaScript alert, confirm, or prompt; previously, only the “return” key would dismiss a dialog
  • Fixed QuotaExceededError when saving to localStorage in private browsing mode or WebDriver sessions
  • Fixed an issue where the Content-Disposition header filename was ignored when the download attribute is specified
  • Fixed escaping ‘<’ and ‘>’ in attribute values when using XMLSerializer.serializeToString() API
  • Fixed issues causing beforeunload dialog to be shown even though the user did not interact with the page
  • Changed all CORS requests and cross origin access from file:// to be blocked unless Disable Local File Restrictions is selected from the Develop menu

Release 28

Power and Performance

  • Changed to pause silent WebAudio rendering in background tabs
  • Changed to pause animated SVG images on pages loaded in the background
  • Changed to make inaudible background tabs become eligible for memory kill after 8 minutes
  • Changed to kill any WebContent process using over 16 GB of memory
  • Throttled DOM Timers to 30fps in cross-origin iframes that the user did not interact with
  • Throttled requestAnimationFrame callbacks to 30fps in cross-origin iframes the user did not interact with
  • Adapted content-alignment properties to the new baseline syntax
  • Adapted place-content alignment shorthand to the new baseline syntax
  • Adapted self-alignment properties to the new baseline syntax
  • Fixed scroll offset jumps after a programmatic scroll in an overflow container with scroll snapping
  • Implemented the place-items shorthand
  • Implemented stroke-color CSS property
  • Implemented stroke-miterlimit CSS property
  • Unprefixed CSS cursor values grab and grabbing

JavaScript

  • Fixed objects with gaps between numerical keys getting filled by NaN values
  • Fixed Object.seal() and Object.freeze() on global this
  • Fixed String.prototype.replace to correctly apply special replacement parameters when passed a function

Web API

  • Changed _blank, _self, _parent, and _top browsing context names to be case-insensitive
  • Cleaned up touch event handler registration when moving nodes between documents
  • Fixed <input type="range"> to prevent breaking all mouse events when changing to disabled while active
  • Prevented double downloads of preloaded content from <link preload> when the content is in MemoryCache
  • Fixed WebSocket.send

Web Inspector

  • Added a preference for Auto Showing Scope Chain sidebar on pause
  • Changed the order of Debugger tab sidebar panels: Scope Chain, Resource, Probes
  • Changed XHR breakpoints to be global
  • Changed hierarchical path component labels to guess directionality based on content for RTL layout
  • Fixed RTL alignment of close button shown while docked
  • Fixed RTL layout issues in call frame tree elements and async call stacks
  • Fixed RTL layout issues in the debugger dashboard putting arrows on the wrong side
  • Fixed RTL layout issues in Type Profiler popovers
  • Fixed misplaced highlights in Search results of the Search navigation sidebar for RTL layout
  • Fixed disappearing section when clicking on the body of a CSS rule after editing
  • Fixed showing indicators for hidden DOM element breakpoints in the Elements tab
  • Fixed blank Network tab content view after reload
  • Made “Enter Class Name” text field wider so the placeholder text doesn’t clip
  • Fixed probe values not showing in the Debugger tab sidebar
  • Fixed focusing the Find banner immediately after showing it
  • Fixed showing Source Map Resources in the Debugger Sources list
  • Fixed Styles sidebar warning icon appearing inside property value text
  • Fixed broken tabbing in Styles sidebar when additional “:” and “;” are in the property value
  • Fixed clipped data in WebSockets data grid
  • Fixed staying scrolled to the bottom as new WebSocket log messages get added
  • Included additional pause reason details for DOM “subtree modified” breakpoint
  • Included more Network information in Resource Details Sidebar
  • Included all headers in the Request Headers section of the Resource details sidebar

WebDriver

  • Fixed an issue that prevented non-popup windows from being maximized or resized
  • Fixed an issue that caused previously opened tabs to reopen when Safari was launched in order to run a WebDriver test

Accessibility

  • Exposed a new AXSubrole for the explicit ARIA “group” role
  • Fixed VoiceOver web article navigation with an article rotor for sites like Facebook and Twitter

Media

  • Fixed seeks to currentTime=0 if currentTime is already 0

Rendering

  • Fixed clipping across page breaks when including <caption>, <thead> or <tbody> in a <table>
  • Fixed Japanese fonts in vertical text to support synthesized italics
  • Fixed long Arabic text in ContentEditable with CSS white-space=pre to prevent hangs
  • Fixed overly heavy fonts on facebook.com by attempting to normalize variation ranges

WebCrypto

  • Added support for AES-CTR

Security

  • Changed private browsing sessions to not look in keychain for client certificates

AppleScript

  • Fixed an issue where Safari would throw an exception when evaluating JavaScript ending with an implied return value, where the final statement doesn’t include the return keyword

Release 27

Browser Changes

  • Added a “Reload Page From Origin” alternate menu item to the View menu. This action reloads a page without using cached resources.
  • Removed the Option-Command-R (⌥⌘R) keyboard shortcut from “Enter/Exit Responsive Design Mode” and mapped it to “Reload Page From Origin” instead.
  • Removed the Disable Caches menu item in the Develop menu. The equivalent functionality is now available through Web Inspector’s Network tab.

JavaScript

  • Implemented ESNext Object Spread proposal
  • Changed to allow labels named let when parsing a statement in non-strict mode
  • Fixed const location = "foo" in a worker to not throw a SyntaxError

Web API

  • Aligned initEvent, initCustomEvent, initMessageEvent with the latest specification
  • Aligned Document.elementFromPoint() with the CSSOM specification
  • Changed XMLHttpRequest getAllResponseHeaders() to transform header names to lowercase before sorting
  • Fixed sending an empty "Access-Control-Request-Headers" in preflight requests
  • Implemented self.origin
  • Implemented the “noopener” feature for window.open()
  • Improved index validation when using uint index values in WebGL
  • Prevented beforeunload alerts when the user hasn’t interacted with the web page
  • Prevented innerText setter from inserting an empty text node if the value starts with a newline
  • Prevented new navigations during document unload
  • Prevented WebSQL databases from being openable in private browsing
  • Changed serialization of custom properties in longhand to be "", not the value of the shorthand property
  • Changed to tear down descendant renderers when a <slot> display value is set to "contents"

Rendering

  • Fixed pausing animated SVG images when they are outside the viewport, or removed from the document
  • Changed asynchronous image decoding to consider when the drawing size is smaller than the size of the image
  • Prevented large images from being decoded asynchronously when they are drawn on a canvas
  • Fixed the flow state for positioned inline descendants
  • Fixed initial letter rendering that follows pagination
  • Fixed clipping columns horizontally in multi-column layout
  • Fixed animated GIFs that fail to play in multi-column layout
  • Fixed an issue where a dynamically applied :empty pseudo class with display:none does not get unapplied
  • Unprefixed -webkit-min-content, -webkit-max-content and -webkit-fit-content

Media

  • Fixed loading media files in a <video> tag that are served without a filename extension
  • Suspended silent videos playback in background tabs to save CPU

Web Inspector

  • Added “Disable Caches” toggle in the Networking tab that only applies to the inspected page while Web Inspector is open.
  • Added “Save Selected” context menu item to Console
  • Added RTL support to the Timeline tab
  • Added RTL support for the Find banner
  • Added more accurate Resource Timing data in Web Inspector
  • Added context menu item to log content of WebSocket frame
  • Added icons for SVG Image cluster path components
  • Added keyboard shortcut to clear timeline records
  • Added a connection indicator for when a WebSocket connection is open or close
  • Changed Option-clicking the close tab button to close all other tabs
  • Changed to allow the user to copy locked CSS selectors in Style Rules sidebar
  • Changed to allow users to click links in inline and user-agent styles
  • Changed SVG image content view to allow toggling between the image and source
  • Changed Event Listeners detail section to show listeners by element rather than by event
  • Changed Event Listeners to add missing ‘once’ and ‘passive’ event listener flags
  • Fixed an issue where adding a WebSocket message could change the currently selected resource
  • Fixed clicking DOM breakpoint marker to enable and disable breakpoints
  • Fixed an exception when clicking on Clear Network Items icon with the timing popover visible
  • Fixed local storage keys and values starting with truncated strings
  • Fixed empty attributes added to a DOM tree outline element adding whitespace within the tag
  • Fixed an exception when fetching computed styles that can break future updates of section
  • Fixed syntax highlighting and formatting when inspecting a main resource that is JavaScript or JSON
  • Fixed pseudo-class markers overlapping DOM breakpoints and disclosure triangles
  • Fixed an issue causing the Resource details sidebar to display previous image metrics when viewing resource where content load failed
  • Fixed text selection in the Console to select only message text
  • Fixed formatting JSON request data
  • Fixed the filename used when saving a resource from the resource image content view
  • The file save dialog no longer suggests the top level directory as the default location

Accessibility

  • Fixed VoiceOver for editable text on the web

WebCrypto

  • Added support for SPKI/PKCS8 Elliptic Curve cryptography

Release 26

WebGPU

  • Added WebGPU prototype in the Experimental Features menu

Web API

  • Added support for history.scrollRestoration
  • Aligned Document.elementFromPoint() with the CSSOM specification
  • Changed the parameter to input.setCustomValidity() to not be nullable
  • Fixed transitions and animations of background-position with right-relative and bottom-relative values
  • Fixed an issue where WebSQL directories were not removed when removing website data
  • Made the XMLHttpRequest method setRequestHeader() use “,” (including a space) as the separator
  • Prevented displaying the label of an <option> element in quirks mode
  • Prevented extra downloads of preloaded CSS
  • Dropped support for non-standard document.all.tags()
  • Implemented stroke-width CSS property

Rendering

  • Enabled asynchronous image decoding for large images
  • Fixed memory estimate for layers supporting subpixel-antialised text
  • Fixed columns getting clipped horizontally in CSS Multicolumn

Web Inspector

  • Added XHR breakpoints UI
  • Added DOM breakpoints UI for node and subtree modification events
  • Added a “Create Breakpoint” context menu item for linked source locations
  • Added settings for controlling Styles sidebar intelligence
  • Added cache source information (Memory Cache or Disk Cache) in the Network tab
  • Added protocol, remote address, priority, and connection ID in the Network tab
  • Added individual messages to the content pane for a WebSocket
  • Fixed an issue where the DOM tree is broken if an element has a debounce attribute
  • Fixed an issue in the Resources tab navigation bar allowing the same file from a contextual menu item to be saved more than once
  • Improved the layout of the compositing reasons in the Layers sidebar popover

WebDriver

  • Fixed an issue where automation commands hang making it impossible to navigate back or forward

WebCrypto

  • Implemented ECDH ImportKey and ExportKey operations

Release 25

Resource Timing

  • Added Resource Timing as an experimental feature enabled by default
  • Added Resource Timing support in Workers
  • Improved gathering timing information with reliable responseEnd time
  • Changed loads initiated by media elements to set the initiatorType to their element name

User Timing

  • Enabled User Timing by default as an experimental feature
  • Changed performance.measure in Workers to throw a SyntaxError if provided mark name is not found

WebCrypto

  • Added support for AES-CFB

Web API

  • Added a new webglcontextchanged event that is dispatched when the GraphicsContext3D notices that the active GPU has changed
  • Changed the onbeforeunload event return value coercion to match specification behavior
  • Exposed Symbol.toPrimitive and Symbol.valueOf on Location instances
  • Fixed <input type=color> and <input type=range readonly> to prevent applying the readonly attribute to match specifications
  • Fixed handling of <input>.labels when the input type changes from "text" to "hidden" to "checkbox"
  • Prevented aggressive throttling of DOM timers until they’ve reached their maximum nesting level

Web Inspector

  • Enabled import() for modules in Web Inspector console
  • Changed the zoom level in the Settings tab to use localized formatting
  • Changed Web Inspector to use the Resources tab when showing files instead of the Network tab
  • Changed the split console to be allowed in the Elements, Resources, Debugger, and Storage tabs when Web Inspector is docked to the bottom
  • Changed CSS variable uses that are unresolved to get marked with a warning icon
  • Fixed the Zoom level user interface to match the the setting value
  • Prevented dismissing popovers when dragging a Web Inspector window
  • Improved copy and paste behavior for request headers
  • Included additional detail in the display name of Timeline data elements
  • Fixed centering text inside a button set to display:flex with justify-content:center
  • Unprefixed -webkit-line-break

Rendering

  • Prevented fixed elements from bouncing when scrolling beyond the bottom of the page
  • Improved text wrapping consistency where text might wrap when its preferred logical width is used for sizing the containing block

Media

  • Fixed local audio-only streams to trigger playback to begin

Bug Fixes

  • Changed pending scripts to execute asynchronously after stylesheet loads are completed
  • Fixed an issue where font-weight in @font-face can cause a font to be downloaded even when it’s not used
  • Made special URLs without a host invalid

Release 24

User Timing

  • Added User Timing as an experimental feature
  • Implemented PerformanceObserver for User Timing
  • Added support for Performance API (performance.now(), UserTiming) in Workers

Link Preload

  • Added <link preload> as an experimental feature
  • Added support for speculative resource loading
  • Prevented preloaded resources from being cleared after parsing is done
  • Addressed memory issues related to clearing preloaded resources

Web API

  • Changed Location object to throw a TypeError for Object.preventExtensions()
  • Changed Pointer Lock to require keyboard focus
  • Changed Pointer Lock events to be delivered directly to the target element
  • Changed the HTML Form Validation popover to be dismissed when pressing the Escape key
  • Changed the HTML Form Validation popover to respect the minimum font size setting
  • Fixed an issue causing Fetch to fail when passing undefined as the headers
  • Fixed the <details> element to work correctly when content is changed between closing and opening
  • Implemented toJSON() for URL objects
  • Improved URL specification compliance
  • Prevented a redundant scroll to top-left corner of the page when navigating back to a URL with no fragment
  • Made Symbols configurable when exposed on cross-origin Window or Location objects

JavaScript

  • Implemented dynamic import operator
  • Changed dynamic import through setTimeout() and setInterval() to correctly inherit SourceOrigin
  • Changed scripts load priority to ‘high’
  • Fixed Apple Pay line validation to prevent validating line items that are “pending”
  • Implemented ArrayBuffer.prototype.byteLength and SharedArrayBuffer.prototype.byteLength
  • Implemented lifting template escape sequence restrictions in tagged templates
  • Fixed elements with a backdrop-filter and a mask to correctly mask the backdrop
  • Updated line-break:auto to match the latest version of Unicode

Web Inspector

  • Enabled the console to evaluate dynamic module import()
  • Added CSS color keyword entries for all “grey” and “gray” variations
  • Added stroke-linecap property values to CSS autocompletion
  • Added a horizontal slider for gradient editor angle value where applicable
  • Added a limit on Async Call Stacks for asynchronous loops
  • Added a setting to preserve network data on navigation for the Network tab
  • Added the ability to show the current value of CSS variables in style rules
  • Added a warning that webkitSubtle in WebCrypto is deprecated
  • Changed docking Web Inspector to collapse the split console in the Timeline and Network tabs
  • Fixed jumping from Search tab results to see the resource in other tabs (Resource, Debugger, Network)
  • Fixed a Debugger sidebar panel issue that can cause it to have multiple tree selections
  • Fixed DOM tree view collapsing when switching back to the Elements tab
  • Removed Shift-Command-W (⇧⌘W) shortcut to a close tab

Accessibility

  • Fixed text string range from index and length in text controls when there are newlines

Rendering

  • Fixed column progression after enabling pagination on a right-to-left document

Performance

  • Suspended SVG animations on hidden pages
  • Avoided initially creating a layer backing store for elements outside the visible area

Security

  • Changed CSS data URL resources to be treated as same origin loads when loaded through HTML <link> elements

Release 23

Gamepads

  • Fixed Gamepad support for PS4 controllers
  • Exposed more directional pads for other types of gamepads

Pointer Lock

  • Fixed sending Pointer Lock events directly to the target element
  • Fixed page requests to re-establish Pointer Lock without a user gesture after being released without a user gesture

Media

  • Added client notification when the user plays media otherwise prevented from autoplaying

Accessibility

  • Fixed Speak Selection for <iframe> elements

Web Inspector

  • Added a way to trigger Garbage Collection

Bug Fixes

  • Fixed Flash object placeholder painting when Safari reloads pages with Flash objects after Flash is installed
  • Improved switching between GPUs for WebGL content in order to maximize battery life

Release 22

JavaScript

  • Fixed an error when calling an async arrow function which is in a class’s member function
  • Improved the speed of Array.prototype.slice in DFG/FTL JITs
  • Implemented scroll-snap-type:proximity scroll snapping
  • Fixed updating :active and :hover states across Shadow DOM slots
  • Fixed a CSS Grid issue with very big values for grid lines
  • Implemented baseline positioning for grid containers
  • Made the CSS Grid sizing data persistent through layouts
  • Fixed overflow:scroll scroll position getting restored on back navigation

Form Validation

  • Fixed the validation message to use singular form of “character” when maxLength value is 1
  • Truncated lengthy validation messages with an ellipsis
  • Aligned email validation with the latest HTML specification

Web Inspector

  • Added “Persist Logs on Navigation” to Settings tab
  • Added UI zoom level to the Settings tab
  • Added Command-, (⌘,) keyboard shortcut to open Settings tab
  • Fixed showing application cache details in the Storage tab
  • Improved the cubic-bezier editor for invalid inputs in component fields
  • Fixed an issue clearing pseudo classes toggled on in the Styles sidebar when Web Inspector is closed
  • Fixed resources disappearing from the network tab when an iframe gets removed
  • Fixed restoring Settings tab when reopening Web Inspector
  • Improved the layout of the spring function editor with left-aligned labels and slider tracks

Web API

  • Provided more detailed role descriptions for many new HTML5 input types
  • Aligned the innerText setter with the HTML specification
  • Fixed an issue changing the modified timestamp for a given gamepad when it is updated
  • Changed pointer lock to release when the page state is reset for any reason, not just when the process exits
  • Fixed editing of nested RTL-to-LTR content
  • Support iterating over URLSearchParams objects
  • Changed the first parameter of Event.initEvent() to be mandatory

Media

  • Added support for MediaKeys.generateRequest()
  • Added protection against the MediaPlayer being destroyed in the middle of a load()

Rendering

  • Fixed an issue that caused the highlighting of text using the Yoon Gothic webfont to reflow
  • Fixed reordering text inside a blockquote when un-indenting the text

Security

  • Volume-separated file URLs: disallowed a file URL on one volume from loading a file on another volume in macOS 10.12.4 or later

Release 21

JavaScript

  • Enabled concurrent garbage collection
  • Enabled <script type="module">
  • Added support for the global property on the global object

Fetch API

  • Improved console logging when loading resources

IndexedDB 2.0

  • Improved the speed of IDBIndex.get()
  • Improved the speed of iterating cursors
  • Updated the syntax of the prefers-reduced-motion media query
  • Fixed CSS scroll snap to work when scrollbar is hidden
  • Fixed column overflows when text-align: justify is combined with word-spacing

Rendering

  • Fixed a font variations bug exposed by the Skia font
  • Fixed an issue with multicolumn inside SVG <foreignobject>
  • Fixed a floating element overlapping the marker within an <li>

Accessibility

  • Fixed changing focus to modal dialogs when one appears
  • Changed VoiceOver to read table headers that are not visible onscreen and do not use have an aria-hidden attribute

Web API

  • Fixed firing Input Events with null inputTypes and no data when changing the text direction
  • Fixed handling key generation with an empty challenge string
  • Fixed focus for label elements with a tabindex value of 0 or higher
  • Fixed side effects while resetting form elements
  • Corrected setting the original URL of a download request with target="_blank"
  • Updated HTML form validation bubbles to be dismissed on navigation

Web Inspector

  • Allow simple await expressions to be run in the console
  • Fixed Computed Styles to correctly show the Container Regions section for regions content flows into
  • Fixed jumping to the definition of a custom element
  • Fixed uncommenting to enable CSS rules of pseudo-elements in the Styles sidebar
  • Updated CodeMirror to add support for the async and await keywords along with other ECMAScript 2017 features
  • Fixed repositioning Timeline graph elements when resizing the window
  • Fixed zooming in the Timeline to zoom where the cursor is located
  • Improved console for narrow widths
  • Modernized the find banner UI
  • Updated keyword completions in Web Inspector for the new scroll snapping CSS properties

Security

  • Allowed HTTPS URLs to match HTTP script-src expressions for Content Security Policy

Bug Fixes

  • Fixed a Safari crash that occurs when deleting a Chinese character typed after an image
  • Selecting when zoomed in no longer jumps around

Release 20

Visual Viewport

  • Enabled the new “visual viewports” model for how position: fixed and position: sticky elements are positioned during pinch zooming and while zoomed in

Touch Bar

  • Prevented emoji buttons from displaying in the Touch Bar for password inputs

JavaScript

  • Enabled Shared Array Buffers
  • Added a syntax error to report an unexpected token when async is followed by identifier in contexts where an async arrow function cannot occur

Web API

  • Added Document.onvisibilitychange event handler attribute
  • Added reflected nonce attribute to the HTML Link element
  • Added support for the deprecated dictionary constructors of DOMPointReadOnly and DOMPoint
  • Fixed an issue where Custom Elements from a different document are not customized when created with innerHTML
  • Fixed an issue causing animations followed by a transition to not always fire the transitionend event
  • Prevented document.webkitFullscreenElement and document.webkitCurrentFullScreenElement from exposing a node inside a shadow tree

Security

  • Changed to require preflight for non-standard CORS-safelisted request headers Accept, Accept-Language, and Content-Language
  • Implemented Strict Mixed Content Checking; block-all-mixed-content directive
  • Content Security Policy: Taught preload scanner how to preload <script>s and <link>s with nonce attribute
  • Content Security Policy: Allow ws: and wss: with connect-src * or default-src *
  • Enabled support for a modern CSS parser, ported from Blink, that improves performance, specification compliance, and compatibility with other browsers, while also adding support for scientific notation in all CSS numbers
  • Fixed short columns in elements with the columns property
  • Fixed scrolling without momentum at the end of a scroll snapping container
  • Fixed line selection in flexbox layouts
  • Fixed ::after and ::before on :host
  • Fixed an issue causing keyframes to not work when defined inside a style in a shadow tree

Pointer Lock

  • Prevented document.pointerLockElement from exposing a node inside a shadow tree
  • Changed to exit pointer lock when page goes into page cache
  • Made the cursor visible when exiting pointer lock using the ESC key
  • Changed the API for pointer lock to be hidden when disabled in the Experimental Features menu
  • Changed to exit pointer lock when a JavaScript alert is shown
  • Changed behavior to exit both fullscreen and pointer lock when the ESC key is pressed

Web Inspector

  • Added the ability to distinguish if a script was parsed as a module
  • Changed Heap Snapshot data grids to allow keyboard navigation
  • Fixed Assertion Failures breakpoint to respect the global Breakpoints enabled setting
  • Added support for template literals in the Breakpoint Log action
  • Fixed an issue where some resources fetched via Fetch API would not have data
  • Fixed a bug to allow deleting a breakpoint from a worker script
  • Updated Esprima to support new syntax for ** operators , async, await, and trailing commas

WebCrypto API

  • Added support for SPKI format for SubtleCrypto.importKey and SubtleCrypto.exportKey
  • Added support for PKCS8 format while doing SubtleCrypto.importKey and SubtleCrypto.exportKey
  • Changed to allow importing keys without usages for RSA algorithms

Bug Fixes

  • Fixed an issue that could cause YouTube to pause when switching tabs
  • Fixed an issue where typing certain queries into Safari’s Smart Search Field would crash Safari Technology Preview
  • Fixed an issue where pages loading in background tabs would erroneously appear in the frontmost tab when they finished loading

Release 19

Touch Bar

  • Added support for Touch Bar in WebKit

HTML Form Validation

  • Enabled HTML interactive form validation

Pointer Lock API

  • Enabled Pointer Lock API

Input Events

  • Fixed compositionEnd events to fire after input events when editing in IME
  • Fixed firing an input event with color data when setting the foreground color for selected text

URL Parser

  • Changed URL Parser to prevent treating the first slash after the colon as the path for URLs with no host

Custom Elements

  • Fixed document.createElementNS to construct a custom element

CSS Font Loading

  • Fixed promises failing to fire for FontFace.load() and FontFaceSet.load()

Shadow DOM

  • Fixed triggering style recalculation when toggling a class in .class ::slotted(*)
  • Fixed event.composedPath() to include window
  • Fixed slot to work as a flex container
  • Fixed the slotChange event to bubble and be dispatched once
  • Fixed slot nodes that ignored transition events
  • Fixed document.currentScript to be null when running a script inside a shadow tree
  • Fixed the hover state when hovering over a slotted Text node

Web Inspector

  • Added support to shift-click on a named color value to cycle through different color formats
  • Added support for the Type Profiler and the Code Coverage Profiler in Workers
  • Changed selecting folders to display content in the Resources sidebar
  • Disabled Warning Filter in Debugger Tab by default
  • Improved name sorting in HeapSnapshot data grids
  • Improved Worker debugging to pause all targets and view call frames in all targets
  • Improved Debugger stack traces to display names for Generator functions
  • Improved Debugger to show execution lines for background threads
  • Improved Debugger to include showing asynchronous call stacks
  • Fixed URL Breakpoints that resolve in multiple workers to only appear in the UI once
  • Fixed layout and display issues in the Settings tab
  • Made checkbox labels clickable in the Settings tab

Rendering

  • Fixed an issue where elements with a negative z-index could sometimes render behind the document body
  • Changed the way unsupported emoji are drawn from being invisible to being the empty box
  • Changed flex element wrapping to consider when the width is less than min-width

Indexed Database 2.0

  • Implemented IDBCursor.continuePrimaryKey()
  • Implemented IDBObjectStore.getKey()
  • De-duplicated the names returned by IDBDatabase.objectStoreNames()
  • Added support for the IDBDatabase.onclose event
  • Fixed some issues with the firing of IDBRequest.onblocked events
  • Improved the performance of key
  • Improved SQLiteStatement performance throughout the SQLite backend
  • Aggressively flush the client’s request queue to the server

Accessibility

  • Changed the inverted-colors media query to match on state change instead of page reload
  • Fixed the implicit value for aria-level on headings to match the ARIA 1.1 specification
  • Exposed aria-busy attribute for authors to indicate when an area of the page is finished updating

WebDriver

  • Exposed navigator.webdriver if the page is controlled by automation
  • Changed the automation session to terminate if the web process crashes

Media

  • Fixed an issue where some animated images would not animate after reseting their animations

Security

  • Changed the keygen element to require 2048 or higher RSA key lengths
  • Changed window.name to be cleared after a cross-origin navigation

Bug Fixes

  • Fixed an issue causing copied text to include the text of CDATA sections and comments
  • Improved the performance of setting attributes on input elements of type text
  • Fixed a crash when interacting with Issues and Pull Requests on github.com
  • Fixed broken tab-focus navigation on some sites
  • Fixed a JS bindings generation issue that erroneously caused IntersectionObserver to be exposed, which broke Pinterest, Strava and Netflix

Release 18

Input Events

  • Turned on the Input Events experimental feature by default

JavaScript

  • Fixed an issue where exception descriptions didn’t know how to handle Symbol values

Shadow DOM

  • Added support for loading stylesheets for link elements that are inside Shadow DOM trees

Web Inspector

  • Added support for pausing, stepping and debugging Web Workers in the Debugger tab
  • Fixed creating a new pseudo-selector in the Styles sidebar when it doesn’t work on the first attempt
  • Fixed a stack overflow when searching a timeline recording for JavaScript function names
  • Changed how minmax(auto, <flex>) should be serialized per the CSS Grid spec
  • Fixed CSS.supports("font-variation-settings", "'wght' 500") so it does not erroneously return false
  • Fixed filter functions grayscale(), invert(), opacity(), and sepia() so they clamp values over 100%
  • Fixed the slotted() pseudo selector so that it works with id selectors

Rendering

  • Fixed a bug where Safari does not emit compositionend if blurred for dead key or Japanese IME

Indexed Database 2.0

  • Changed IDBIndex to handle rename behavior properly when version change transaction aborts
  • Changed IDBObjectStore to handle rename behavior properly when version change transaction aborts
  • Renamed IDBKeyRange.contains() to IDBKeyRange.includes()
  • Added support for binary keys
  • Added support for IDBIndex.getAll() and IDBIndex.getAllKeys()
  • Corrected what exceptions are thrown during IDBObjectStore and IDBIndex renaming
  • Switched to using IndexedDB exceptions in places where generic exceptions were being used

Accessibility

  • Fixed a crash that would happen when attempting to clear selection on ARIA listboxes

Printing

  • Made printing to PDF produce internal links when the HTML has internal links

HTTP Authentication

  • Changed Safari’s HTTP authentication UI to not block switching tabs, navigating to other websites, or closing tabs

Web APIs

  • Changed resizeTo, resizeBy, moveTo, or moveBy to do nothing in windows that weren’t created by window.open
  • Implemented new user interface for HTML interactive form validation behind an experimental flag

Release 17

Safari Extensions

  • Removed NPAPI Plug-in support from .safariextz Safari Extensions

Custom Elements

  • Enabled Custom Elements everywhere by default
  • Changed Custom Elements reactions to have a queue per element
  • Enqueued attributeChanged and connected callbacks when upgrading a custom element
  • Custom Elements reactions are now enqueued for HTML API and CSS OM APIs

Web APIs

  • Implemented rel=noopener
  • Enabled stylesheets loading via a link element inside Shadow DOM subtrees
  • Added support for HTML formatted content from event.dataTransfer.getData(‘text/html’) and event.clipboardData.getData(‘text/html’) in onpaste or ondrop events

Input Events

  • Added support to fire insertReplacementText input events when holding down a key to choose an accented character
  • Implemented InputEvent.getTargetRanges()
  • Implemented support for insertFromDrop and deleteByDrag
  • Implemented support for insertFromComposition, deleteByComposition, insertCompositionText, and deleteCompositionText input types for Input Events
  • Implemented support for InputEvent.dataTransfer

URL Parser

  • Matched the behavior of the old URL parser when %2E is in the URL path
  • Prevented interpreting host of URLs with unrecognized schemes as an IPv4 address

Fetch API

  • Ensured the redirection count is no more than 20 in case of cross origin requests
  • Ensured redirections are upgraded only if declared by CSP policy
  • Changed ReadableStream to only clone the second branch

JavaScript

  • Fixed arrow functions with concise bodies to be able to return regular expressions
  • Fixed String.prototype.replace() to throw an OutOfMemoryError when using too much memory
  • Enabled JSON.stringify to handle an ES6 Proxy that has an array element context

Web Inspector

  • Added support for Custom Elements in Web Inspector
  • Enabled showing Shadow DOM scoped styles in Web Inspector
  • Added a pinned tab for settings with various text editor preferences
  • Breakpoints not working in scripts with unicode characters
  • Fixed the alignment for arrows in the Styles scope bar item
  • Fixed the ⌘+ shortcut not increasing the size of Web Inspector’s user interface
  • Fixed Open Resource Dialog to jump to the last line when entering :*n* where n is greater than the number of lines in the file
  • Improved the debugger highlight in some exception cases
  • Improved Quick Open sorting algorithm
  • Improved console.log support in Web Workers
  • Included parameter strings for native CustomElementRegistry methods in the console
  • Prevented showing empty Closure sections in the Scope chain
  • Avoided unnecessary full style resolution in getComputedStyle for non-inherited properties
  • Fixed backdrop-filter to render properly when removed and then re-added
  • Fixed rendering dynamically-added backdrop-filter to a clip-path’d element with 3D transform
  • Changed behavior to create a stacking context while an animation is running when the animation keyframes affect stacking context properties
  • Prevented painting text selection within an SVG mask
  • Corrected the blur radius for filter: drop-shadow()
  • Changed style resolver to be updated lazily

Media

  • Allowed multiple playing videos on a page with autoplay and playsinline attributes
  • Fixed WebAudio to resume when moving from background to foreground tab
  • Fixed video playback stalls when seeking beyond the buffered range for some video sites
  • Added support for wide gamut in Quick Look image popovers

Networking

  • Changed the preloading behavior to match the behavior on iOS, where resources like images are loaded at a lower priority

Indexed Database 2.0

  • Support renaming IDBObjectStores and IDBIndexes
  • Implemented IDBTransaction.objectStoreNames()
  • Implemented IDBObjectStore.openKeyCursor()
  • Implemented IDBObjectStore.getAll() and IDBObjectStore.getAllKeys()
  • Implemented IDBIndex.getAll() and IDBIndex.getAllKeys()

Bug Fixes

  • Fixed an issue where JavaScript dialogs (alert, confirm, prompt) and Safari’s external navigation confirmation prompt showed empty messages

Release 16

URL Parser

  • Enabled a faster and more standards-compliant URL parser

Gamepad API

  • Enabled the Gamepad API by default, allowing gamepads already configured for use with macOS to work on web pages using the Gamepad API
  • Supported CSS Shapes Level 1 without a -webkit- prefix
  • Fixed an issue where CSS font-variation-settings did not handle uppercase axis names in variable fonts

Media

  • Made full access to the keyboard available when content is fullscreen
  • Made setting HTMLMediaElement.volume to NaN or Infinity throw a TypeError
  • Allowed throttling of background tabs that have media elements with no audible audio

Fetch API

  • Added support for Request cache mode
  • Forbid redirection to non-HTTP(s) URL when in non-navigation mode
  • Ensured memory cache does not bypass redirect mode
  • Improved network data transfer to stream when the application needs it

JavaScript

  • Implemented Intl.getCanonicalLocales
  • Changed ES6 method functions to not have a prototype property
  • Forbid "use strict" directive in generator functions with non-simple parameters
  • Prevented Array.prototype.concat from modifying frozen objects
  • Prevented Array.prototype.slice from modifying frozen objects
  • Prevented JSON.parse from modifying frozen objects
  • Handled non-function, non-undefined comparator in Array.prototype.sort

Web APIs

  • Changed MouseEvent coordinates to be set to 0 for simulated clicks
  • Fixed an issue where select.options could incorrectly return too many option elements
  • Made table.deleteRow(–1) do nothing when there are no rows
  • Fixed event listener order when overwriting an attribute event listener
  • Implemented DOMPoint and DOMPointReadOnly
  • Implemented DOMRect and DOMRectReadOnly
  • Added support for "CapsLock" modifier in KeyboardEvent.getModifierState()
  • Added support for window.navigator.languages attribute
  • Updated window.navigator.language to no longer return an all lowercase string
  • Updated HTMLSelectElement to ignore nested optgroup elements when recalculating
  • Ensured a toggle event is fired whenever details.open is changed

Web Inspector

  • Fixed Timeline UI updating while recording in remote Web Inspector
  • Exposed computed tree node and heading level for accessibility
  • Added toggles for debugger pauses at console.assert failures
  • Prevented changing content view when dragging to delete a breakpoint
  • Improved debugger highlight when inside of getter and setter calls
  • Improved debugger highlight when pausing on the first statement of a program
  • Improved debugger highlight for dot- and bracket-expressions in if statements
  • Removed line flash while stepping to prevent distraction
  • Prevented CSS autocompletion from adding extra unexpected characters
  • Corrected syntax highlighting for mixed case CSS values like translateX
  • Fixed an issue when pasting into a CSS rule selector

Accessibility

  • Implemented prefers-reduced-motion media query
  • Set <figcaption> to provide the accessible name for other content inside the <figure>
  • Exposed the invalid status for input types with an invalid input value
  • Exposed the placeholder attribute when both the placeholder and aria-placeholder attributes are set
  • Improved accessibility support for <summary> elements
  • Mapped the <output> element to status role and exposed its text content as a title
  • Added a new role for the <mark> element and exposed the role description
  • Improved the <meter> element to describe the status of the value
  • Provided more detailed role description for input types exposed as standard text fields

Shadow DOM

  • Fixed updating styles for stylesheets that change in a shadow tree

Bug Fixes

  • Fixed an issue where Safari Technology Preview would hang when waking from sleep
  • Fixed an issue where the contents of a tab would remain onscreen briefly after automatically switching to a new tab when opening a target=_blank link
  • Changed “Download Linked File” context menu action to use the value of the download attribute as the filename
  • Changed “Download Linked File As…” context menu action to use the value of the download attribute as the suggested filename
  • Fixed a bug where a keyframe animation on body could trigger high CPU usage
  • Fixed an issue that caused the keyboard to remain visible when swiping back on twitter.com

Release 15

Fetch API

  • Made ReadableStream throw TypeError values instead of strings
  • Changed Fetch to prevent redirection to non-HTTP URLs
  • Made FetchBody use UTF8 to encode text data
  • Added support for URLSearchParams as the body of a Fetch

JavaScript

  • Sped up String.prototype.toLowerCase() by 7–8% on benchmarks
  • Fixed cases where class, function, and arrow function names were not inferred during assignment
  • Fixed arrow functions so they don’t allow duplicate parameter names
  • Updated Generator and GeneratorFunction property descriptors to match the ES6 spec
  • Fixed a bug where String.prototype.padStart() and padEnd() would insert null in rare cases
  • Fixed a bug with Function.prototype.length when there are parameters with default values
  • Implemented rendering of font-variation-settings and enabled it by default
  • Implemented animation of font-variation-settings
  • Added mapping for font-family: cursive to KaiTi fonts in Chinese
  • Sped up the computation of CSS Grid row sizes with indefinite heights by 2×
  • Fixed setting a style element’s textContent or cssText so it properly triggers a style recalculation
  • Fixed toggling display: none on a parent element of a Shadow DOM slot to work in more cases

Web APIs

  • Enabled support for the download attribute on anchor and area elements — including Blob URLs
  • Exposed CryptoKey to Web Workers
  • Implemented Node.prototype.getRootNode()
  • Implemented ShadowRoot.prototype.elementFromPoint()
  • Implemented DOMTokenList.prototype.supports()
  • Implemented ImageData.prototype.data from the HTML spec
  • Implemented KeyboardEvent.prototype.code from the UI Event spec
  • Implemented KeyboardEvent.prototype.isComposing from the UI Event spec
  • Implemented KeyboardEvent.prototype.key from the UI Event spec
  • Implemented KeyboardEvent.prototype.repeat from the UI Event spec
  • Implemented KeyboardEvent.prototype.getModifierState() from the UI Event spec
  • Changed ReadableStream to match the Steams API spec
  • Changed DOMTokenList.prototype.value and toString() to match the DOM spec
  • Changed td.scope to only return known values
  • Changed HTMLLabelElement.prototype.form to match the HTML spec
  • Changed Element.insertAdjacentHTML() to match the HTML spec
  • Changed window.open() so it returns null when it is blocked by Safari
  • Changed HTMLSlotElement.prototype.assignedNodes() to include fallback contents when flatten option is set
  • Changed Object.prototype.getOwnPropertyDescriptor() so it works correctly across origins
  • Changed HTML serialization to always add xml: prefix for attributes in the XML namespace
  • Changed properties on Window and Location to be non-enumerable when accessing them cross origin
  • Fixed a bug where text nodes assigned to a linked slot were not clickable
  • Fixed the assignment of non-numeric values to input.minlength by setting it to 0
  • Fixed input elements so they work inside Shadow DOM trees
  • Fixed the document.title getter by stripping and collapsing the right whitespace characters
  • Fixed going into fullscreen from Silverlight a second time would hide the menu bar and dock for Safari
  • Fixed the serialization of HTML element attributes to match the HTML spec
  • Fixed the serialization of HTML void elements to ignore any child elements
  • Fixed the serialization of bgsound, keygen, and track elements
  • Fixed a bug where setting attributes on HTMLMeterElement to non-finite values would throw the wrong exception type
  • Fixed a bug where IDBIndex.prototype.openCursor() would match indices on multiple object stores
  • Fixed a bug preventing structured clones of WebCrypto keys under Safari 10

Web Inspector

  • Added line range highlighting to show where the debugger is paused — good for lines with multiple expressions or multiple function calls
  • Made breakpoints on blank lines or comments break on the next possible line
  • Fixed stepping out of a function so it always takes you to the caller instead of sometimes resuming
  • Fixed stepping to a line in the debugger with an “auto continue” breakpoint so it still pauses
  • Fixed refreshing while in the Timelines tab would cause negative timestamps in the Network tab
  • Fixed a bug where Box Model values were not updated when DOM node styles changed
  • Fixed a bug where the DOM would not update when editing Box Model values (border, margin, etc.)
  • Added a console message when an anchor download attribute is ignored
  • Made clicking a second time on the color swatch square hide the CSS color picker

Media

  • Fixed Picture in Picture playback so it always shows the correct state of the play button

Accessibility

  • Exposed a label element’s text content as the description for meter elements
  • Exposed a label element’s text content as the description for progress elements

URL Handling

  • Navigations to tel: and mailto: links now require a user gesture; navigations without a user gesture will show a confirmation prompt
  • Users are now prompted when navigating to URLs that open other applications

Security

  • Fixed an issue where a CSP violation report may be sent to the wrong domain when the frame-ancestors directive is violated

Safari Extensions

  • Fixed an issue where Safari Technology Preview would consume excess memory when certain Safari Extensions were installed

Release 14

Safari Extensions

  • Fixed an issue where content blocker extensions delivered with apps wouldn’t be applied in Safari Technology Preview

Custom Elements

  • Enabled Custom Elements API

Fetch API

  • Changed combining Access-Control-Request-Headers with ',' instead of ', '
  • Added unsafe request header checks for the Referrer and Origin headers

JavaScript

  • Changed ES6 classes to allow the creation of a static method with name “arguments”
  • Improved performance for Map and Set
  • Improved performance of Function.prototype.bind
  • Fixed language tag parsing in Intl constructors

Web APIs

  • Implemented URLSearchParams
  • Added support for HTMLIFrameElement.allowFullscreen, input.minLength, and textArea.minLength attributes
  • Added support for HTMLSourceElement.prototype.sizes and HTMLSourceElement.prototype.srcset
  • Fixed an issue to allow setting input.type to file after being set to another type
  • Fixed attribute reflection as a URL for frame.longDesc, iframe.longDesc and HTMLObjectElement.codebase
  • Fixed ol.start to return the correct value for reversed lists when it is not explicitly set
  • Changed hspace, vspace, width, height attributes of HTMLImageElement along with the hspace and vspace attributes of HTMLObjectElement to be unsigned
  • Changed pageXOffset and pageYOffset attributes of Window to be replaceable
  • Changed the window.performance object wrapper to stay alive as long as the associated frame
  • Changed the invalid default value of HTMLTrackElement.kind to the metadata state
  • Fixed handling a negative radius in the coords attribute of an HTMLAreaElement in a circle shape
  • Moved HTMLButtonElement.prototype.click to HTMLElement.prototype.click
  • Updated HTMLAppletElement and HTMLAreaElement shape parsing to align with specifications
  • Exposed the WebCrypto algorithms via KeyAlgorithm dictionary
  • Dropped legacy canvas.probablySupportsContext()
  • Dropped support for <isindex>

Apple Pay

  • Added a new -webkit-appearance CSS property for Apple Pay buttons
  • Fixed presenting a payment sheet when a sheet is already active in another window

Web Inspector

  • Added a button to the navigation bar to toggle the Control Flow Profiler
  • Added support for drag-and-drop of CSS classes and ids onto DOM nodes
  • Added JavaScript completion for ES6 keywords and global variables
  • Added a popover to show Resource Timing details in Network waterfall displays
  • Added a warning message in the Debugger sidebar when breakpoints are disabled
  • Changed the Debugger Scope sidebar to show “Local” instead of “Closure” when paused in an anonymous function
  • Fixed selecting the call frame in the Debugger sidebar on initial pause and added an indicator next to active call frame
  • Fixed debugger popover title and code horizontal alignment
  • Fixed Command-Z (⌘Z) behavior when editing CSS selectors in the Styles sidebar
  • Improved Element Search (⇧⌘C) to bring the inspector page’s window forward and highlight elements without requiring mouse movement
  • Fixed Properties section layout when clicking the “Show All” checkbox of the Computed Styles section
  • Fixed a bug causing the color picker to stop working in the Styles sidebar after the first color change
  • Fixed a bug where reloading unexpectedly switches to the Storage tab
  • Implemented Copy CSS Selector and Copy Xpath Selector context menus
  • Improved element search to bring the inspected page’s window forward
  • Made console session dividers more pronounced

Rendering

  • Added support for new emoji group candidates

WebDriver

Starting in Release 14, Safari Technology Preview now includes regular updates and bug fixes to Safari’s WebDriver implementation. You can run your WebDriver tests with the updated driver by using the safaridriver executable that is included in the Safari Technology Preview application bundle. By default, this is located at /Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver. The driver executable located at /usr/bin/safaridriver will continue to launch Safari 10 on macOS Sierra and OS X El Capitan.

For more information about using WebDriver with Safari, check out the blog post WebDriver Support in Safari 10.

Release 13

Fetch API

  • Added support for BufferSource bodies
  • Fixed blob resource handling to raise a network error when the URL is not found
  • Set the blob type correctly for an empty body
  • Set the blob type from Response/Request contentType header
  • Made the body mix-in text() decode data as UTF–8
  • Ensured response cloning works when data is loading
  • Enabled the Fetch API to load the data URL in same-origin mode
  • Prevented any body for opaque responses
  • Changed opaqueredirect responses to have their URL set to the original URL
  • Prevented setting bodyUsed when request construction fails
  • Set Response bodyUsed to check for its body-disturbed state
  • Changed response cloning to use structureClone when teeing a Response stream
  • Aligned the internal structure of ReadableStream with the specifications
  • Aligned data:// URL behavior of XHR to match specifications

Custom Elements

  • Added adopted callback for custom elements on appendChild()
  • Enabled reaction callbacks for adopted custom elements
  • Updated the semantics of :defined to re-align with specification changes
  • Added validations for a synchronously constructed custom element
  • Added support for the whenDefined() method on the CustomElementRegistry
  • Added a CustomElementRegistry check for reentrancy

JavaScript

  • Enabled assignments in for…in head in non-strict mode
  • Changed newPromiseCapabilities to check that the given argument is a constructor
  • Fixed toString() to return the correct tag when called on proxy objects

Web APIs

  • Added event support for <link preload>
  • Implemented x, y and ScrollToOptions arguments for Element.scroll(), Element.scrollTo(), and Element.scrollBy()
  • Updated location.toString to make it enumerable
  • Updated location.toString in Web Workers to make it enumerable
  • Changed Object.preventExtensions(window) to throw a TypeError exception
  • Aligned coords and srcset attribute parsing with the HTML specification
  • Added support for CanvasRenderingContext2D.prototype.resetTransform
  • Aligned cross-origin Object.getOwnPropertyNames() with the HTML specification

Web Inspector

  • Added IndexedDB Database, ObjectStore, and Index data to the details sidebar
  • Added support for Shift-Command-D (⇧⌘D) to switch to the last used dock configuration
  • Added support for Shift-Tab (⇧⇥) to un-indent the selected line
  • Changed Command-D (⌘D) to select the next occurrence instead of deleting the line
  • Added a visual indicator for shadow content in the DOM tree
  • Allowed hiding of CSS variables in the Computed styles panel
  • Fixed an issue that prevented using an Undo action in the breakpoint editor
  • Prevented the resource content view from showing “CR” characters
  • Fixed an issue preventing re-inspecting the page after a Web Inspector process crash
  • Improved the minification detection heuristic for small resources
  • Fixed an issue causing network record bars to be positioned on unexpected rows
  • Provided a way to clear an IndexedDB object store
  • Improved the debugger popover to pretty print functions
  • Corrected unexpected cursor changes while dragging ruler handle in the rendering frames timeline
  • Corrected the display of a plain text XHR response with responseType="blob"
  • Implemented CSS.escape according to the CSSOM specification
  • Improved CSS stylesheet checks to ensure clean stylesheets are accessible from JavaScript
  • Improved :enabled and :disabled selectors to only match elements that can be disabled

Rendering

  • Fixed scrollbars for a <table> with overflow content inside <div align="right">
  • Added support for non-BMP MathML operators U+1EEF0 and U+1EEF1
  • Fixed getting font bounding rect for MathML

Security

  • Changed the Image Loader to set the fetch mode according its crossOrigin attribute
  • Added a SecurityError when trying to access cross-origin Location properties
  • Updated Object.defineProperty() and Object.preventExtensions() to throw an error for a cross-origin Window or Location object
  • Updated Object.setPrototypeOf() to throw an error and return null when used on a cross-origin Window or Location object

Plugins

  • Replaced YouTube Flash embeds with HTML5 equivalents on macOS

Release 12

JavaScript

  • Added checks for TypedArray.prototype.slice to ensure the source and destination have not been detached
  • Added exception handling for const variables used in a for-in or for-of loop
  • Improved the performance of Array.prototype.map when used with Arrays
  • Implemented Object.entries and Object.values from the ES2017 specifications
  • Changed the line, column and sourceURL properties of Error to be configurable and writable

Web APIs

  • Fetch API is enabled by default
  • Updated Resource Timing implementation
  • Aligned Range.surroundContents() with the latest DOM specification
  • Added support for HTMLAreaElement.toString()
  • Changed the prefix properties of Attr and Element to be read-only
  • Changed <command> to an HTMLUnknownElement and <basefont> to an HTMLElement
  • Moved the prefix, namespaceURI, and localName attributes from Node to Attr and Element
  • Aligned text encoding labels with the Encoding specification
  • Added Animatable, AnimationEffect, KeyframeEffect and Animation interfaces for Web Animations
  • Aligned isDefaultNamespace(), lookupPrefix(), and lookupNamespaceURI() with the specification
  • Changed querySelector() and querySelectorAll() to always throw a SyntaxError when failing to parse a selector string
  • Moved embeds, plugins, and scripts attributes from HTMLDocument to Document
  • Moved the compatMode and designMode properties from HTMLDocument to Document
  • Updated getElementsByTagName() to take a qualified name parameter
  • Exposed crypto.getRandomValues to Web Workers
  • Added application/vnd.api+json as a valid JSON MIME-type

Web Inspector

  • Added Open in New Tab, Reveal in Resources Tab and Copy Link Address to the context menu of link attributes
  • Added Download File context menu item for resource tree elements
  • Added Copy Selected context menu item to the Console
  • Added a visual editor for the spring() timing-function
  • Fixed an issue where “NaN x NaN” was shown for invisible elements in the Styles → Computed → Box Model section
  • Set Open Resource Dialog to jump to the last line when the specified line number (“:n”) is more than the total line count of the resource
  • Added an icon for selectors that only affect pseudo-elements
  • Fixed DOM nodes shifting when hovering over them in the Console
  • Fixed the alignment of the Close button of the selected item in the Network tab
  • Changed the Visual Styles Sidebar behavior for SVGs to show SVG specific sections
  • Changed the Visual Styles Sidebar TextContent section to only be visible for a pseudo-element
  • Escaped Text → Content in the Visual Styles Sidebar
  • Addressed status icons flickering from rapid updates in the Visual Styles Sidebar
  • Fixed the placement of Error and Warning icons in the Visual Styles Sidebar
  • Fixed a hang when using Command-Shift-O (⌘⇧O) when the loaded web page has frames
  • Enabled editing node attributes, content, and styles for shadow DOM nodes
  • Improved the display of large numbers in the console log counter on the dashboard
  • Improved the display of large class lists and made the quick-toggle easier to discover

MathML

  • Improved the extraction of operator and token elements’ characters
  • Introduced a MathMLRowElement class for mrow-like elements
  • Introduced a MathMLAnnotationElement class for the <annotation> and <annotation-xml> elements
  • Enabled the :host pseudo-class to style elements in the shadow tree
  • Corrected the namespace prefix handling in front of element name CSS selectors

Rendering

  • Fixed SVG clip-path to work on a root SVG element
  • Fixed ctx.drawImage to clip the source rectangle if it is outside the source image

Accessibility

  • Labelled audio description tracks correctly to prevent user confusion
  • Added a percentage value description for the media control’s timeline slider

Security

  • Improved URLParser parsing IPv4 addresses and URLs without credentials
  • Added support to handle cross-origin redirect requests while in CORS mode
  • Corrected the Upgrade-Insecure-Request state handling between navigations
  • Added a sandbox for the Adobe Flash Player ESR plug-in used in enterprise environments
  • Changed instantiation of WebKit plug-ins to happen at layout time, instead of at style resolution time

Release 11

JavaScript

  • Updated behavior for a class that extends null to follow ECMAScript 2016 specifications
  • Made the second argument for Function.prototype.apply allow null, undefined or array-like data

Web APIs

  • Add support for DOMTokenList.replace()
  • Add support for Element.getAttributeNames()
  • Made the first parameter mandatory for canvas.getContext() and probablySupportsContext()
  • Made the first two parameters mandatory for window.postMessage()
  • Made the first parameter mandatory for Document.execCommand() and queryCommand*()
  • Made the first parameter mandatory for HTMLMediaElement.canPlayType()
  • Made the first parameter mandatory for indexed property getters
  • Made the first parameter mandatory for Range.createContextualFragment()
  • Made the first parameter mandatory for setTimeout() and setInterval()
  • Made the first parameter mandatory for SVGDocument.createEvent()
  • Made the parameter mandatory for a named property getter mandatory
  • Made the parameter mandatory for table.deleteRow() and body.deleteRow()
  • Made the parameter mandatory for tr.deleteCell()
  • Made the parameters mandatory for CanvasGradient.addColorStop()
  • Made the parameters mandatory for DOMParser.parseFromString()
  • Made the parameters mandatory for Event.initEvent()
  • Made the parameters mandatory for insertAdjacentText() and insertAdjacentHTML()
  • Enabled strict type checking for nullable attribute setters for wrapper types
  • Enabled strict type checking for operations’ nullable parameters for wrapper types

ApplePay

  • Stopped accepting the deprecated requiredShippingAddressFields and requiredBillingAddressFields properties

Web Inspector

  • Improved the appearance of the Timeline tab when editing the enabled timelines
  • Changed the Jump to Line keyboard shortcut to Control-G (⌃G)
  • Fixed the grid column resizing element positions
  • Added waterfall view to the Network tab and Network Timeline
  • Fixed positioning of popovers when the window resizes
  • Fixed popover drawing
  • Polished UI for the Edit Breakpoint, Open Quickly, and Goto Line dialogs
  • Update the Visual Styles Sidebar to use a one column layout when narrow
  • Fixed the behavior of Home and End keys to match system behavior

MathML

  • Polished MathML parsing
  • Aligned the CSS supports rule with the specification
  • Addressed incorrect results for the color-gamut media query

Rendering

  • Fixed performance issues with <marquee> with the truespeed attribute

Media

  • Fixed captions not rendering in the PiP window for a hidden video element
  • Addressed media controls not displaying for some autoplaying videos at certain browser dimensions
  • Fixed media stream video element to show black when all video tracks disabled

Accessibility

  • Added localizable strings when inserting list types
  • Improved the accessibility of media controls

Content Blockers

  • Enabled Content Blockers to block WebSocket connections

Release 10

JavaScript

  • Introduced exponentiation expressions (x ** y) from ECMAScript 2016
  • Improved specification compatibility of use strict in functions

Web APIs

  • Moved dir attribute from HTMLDocument to Document
  • Aligned Node.isEqualNode() with the specification
  • Made DOMTokenList iterable
  • Moved properties for ClientRect to the prototype
  • Made the parameters of DOMImplementation.createDocumentType() mandatory and non-nullable
  • Made the first parameter of Window.getComputedStyle() mandatory and non-nullable
  • Fixed null handling of SVGAngle.valueAsString and SVGLength.valueAsString
  • Fixed null handling of HTMLFontElement.color
  • Fixed null handling for several HTMLTableElement attributes
  • Fixed null handling for HTMLObjectElement.border
  • Fixed null handling for td.bgColor and tr.bgColor
  • Fixed null handling for several HTMLBodyElement attributes
  • Fixed null handling of the marginWidth and marginHeight attributes for HTMLFrameElement and HTMLIFrameElement
  • Fixed null handling for HTMLImageElement.border
  • Fixed null handling of several Document attributes
  • Fixed null handling of HTMLMediaElement.mediaGroup
  • Fixed null handling of HTMLSelectElement.value attribute
  • Fixed null handling of SVGScriptElement.type attribute
  • Fixed null handling of several HTMLDocument attributes
  • Fixed null handling of HTMLScriptElement.text attribute
  • Fixed null handling of the enctype, encoding and method properties of the form element
  • Fixed null handling of formEnctype and formMethod properties for input and button elements
  • Changed the letter-case for the playsInline IDL attribute
  • Dropped the SVGElement.xmlbase attribute
  • Aligned CSSStyleDeclaration.setProperty() with the specification
  • Made the EventTarget.dispatchEvent() parameter non-nullable

Apple Pay

  • Fixed deprecated errors thrown when using requiredBillingAddressFields
  • Fixed onPaymentAuthorized callback not received when authorizing a second time
  • Fixed ending the payment session if the user closes all windows

Web Inspector

  • Fixed slowdowns when switching away from the Console tab with a lot of messages
  • Fixed filtering in the Overview timeline view
  • Fixed maintaining the selected function when switching between different profile representations
  • Improved styles for the Open Quickly and Goto Line dialogs

MathML

  • Changed the CSS display property of many MathML elements to allow page authors to override
  • Mapped “combining” to “non-combining” character equivalents
  • Improved alignment inside vertically stretched operators
  • Removed the padding and margin around the <math> element
  • Reset the font-style property on the <math> element

Rendering

  • Added support for new emoji group candidates
  • Fixed moving scrollbars to the right when the text direction changes to right-to-left
  • Fixed image zoom animations that were broken on medium.com
  • Fixed computing elements-based snap points for containers with large maximum scroll offset values
  • Fixed a rendering issue causing theguardian.co.uk crossword puzzles to sometimes not display text

Accessibility

  • Fixed an issue causing duplicate children when first-letter is being used in CSS
  • Fixed name calculation of headings from the aria-label attribute for VoiceOver
  • Added a new attribute to expose the auto-fill button type to VoiceOver
  • Fixed volume adjustments using VoiceOver and improved spoken feedback

Security

  • Changed behavior to block insecure scripts running in a data: frame when the top-level page is HTTPS
  • Changed URL handling to remove credentials when accessed through location.href
  • Changed behavior to block mixed-content synchronous XHRs
  • Improved support for multiple policies to more closely conform to the CSP Level 2 specifications
  • Applied the Content Security Policy object-src and plugin-types directives for plugin replacements
  • Changed the behavior to prevent history.pushState and history.replaceState where a username is in the URL
  • Changed behavior to allow LocalStorage access for file URLs by default

Release 9

JavaScript

  • Improved spec compliance for Array and %TypedArray%
  • Improved the performance of %TypedArray%.prototype.subarray
  • Fixed Date.setYear() to be more spec compliant
  • Fixed Date.toGMTString() to be the Date.toUTCString() function
  • Fixed a successful RegExp.compile to properly return the regular expression
  • Improved String to better match specs
  • Fixed cyclic prototypes to throw the right error type according to specs
  • Implemented HasRestrictedGlobalProperty when checking for global lexical tier conflicts
  • Fixed an unexpected “Out of memory” error for String.prototype.repeat() with a negative value argument
  • Fixed use strict handling when parsing functions that include use strict after other non-strict statements

Web APIs

  • Changed FontFaceSet.load and FontFaceSet.check to honor the second argument
  • Moved assignedSlot from CharacterData to Text to match the latest Shadow DOM specs
  • Replaced Event.prototype.scoped by Event.prototype.composed to reflect the latest Shadow DOM spec
  • Aligned document.body setter with the HTML specification
  • Fixed document.body to return the first child of the HTML element that is either a body or frameset element
  • Fixed document.title setter for SVG documents
  • Fixed an issue that prevented calling the document.fonts.ready callback
  • Added support for unprefixed version of the CSS image-set() function
  • Setting table.tFoot or calling table.createTFoot() should append HTML <tfoot> element to the end of the table
  • Exposed <td> and <th> elements as HTMLTableCellElement objects
  • Prevented tbody.deleteRow(–1) and tr.deleteCell(–1) from throwing an error when there are no rows or cells

MathML

  • Added support for href attribute in MathML
  • Improved the layout of <munderover> using parameters from the OpenType MATH table
  • Added support for mathvariants that cannot be emulated via CSS.
  • Refactored MathML layout functions to avoid using flexbox

Apple Pay

  • Fixed a bug allowing multiple payment sheets in Safari to be open at the same time
  • Renamed addressFields tocontactFields
  • Added type and paymentPass properties in PaymentMethod

Web Inspector

  • Added “Copy as cURL” feature for resource requests in the timeline
  • Fixed an issue causing Top Functions data to show even when disabled
  • Improved JSON pretty printing in more scenarios
  • Added spring to transition-timing-function value auto-completion
  • Added pixel area column to the Layout timeline view
  • Improved the API view of native DOM APIs
  • Fixed ⌘⇧S in the Styles sidebar to always show the save dialog
  • Fixed an issue causing a scrolled JavaScript Snapshot list to be drawn blank when switching back from a comparison view
  • Fixed an issue that caused a UTF8-encoded XHR to show garbled data in the Resource sidebar
  • Added Shadow Content type to DOM tree in the Elements tab
  • Fixed an issue preventing the last normal tab from being closed with the “Close Tab” context menu item
  • Fixed an issue causing the wrong function name to show in the Scope Chain sidebar of the Debugger tab

Media

  • Pause small video elements when returning to inline when they are too small
  • Changed the picture-in-picture control glyph
  • Changed fullscreen and picture-in-picture to not animate when navigating away from the host page
  • Fixed WebAudio convolver channels to throw exceptions for an invalid number of channels
  • Fixed clearing of MSE buffers by switching to MediaTime
  • Fixed an issue where Facebook videos without audio tracks will sometimes cause playback controls to appear

Rendering

  • Fixed rendering an <img> element with a wide gamut PDF
  • Fixed drawing an SVG image into a <canvas> that is not in the DOM

Bug Fixes

  • Fixed database process crashes when deleting a corrupt SQLite database file
  • Fixed blob content type when retrieving blobs from IndexedDB
  • Prevented a crash when attempting to copy an image

Release 8

JavaScript

  • Achieved 100% ECMAScript 2015 (ES6) support by adding back Symbol.isConcatSpreadable
  • Unified the handling of regular expression character escapes \w and \W and word assertions \b and \B
  • Implemented isFinite and isNaN in JavaScript for a performance benefit
  • Fixed a crash when a finally clause is used inside a for-in loop
  • Updated :default CSS pseudo-class to match checkbox and radio inputs with a checked attribute
  • Fixed an issue where the :hover CSS pseudo-class would match after the cursor left the element
  • Prevented :in-range and :out-of-range CSS pseudo-classes to not match on inputs that do not have range limitations
  • Changed :in-range and :out-of-range CSS pseudo-classes to not match disabled or readonly inputs
  • Fixed border rendering for elements with min-width: -webkit-fill-available and zero available width
  • Fixed style updates applied by :host() when changing the CSS class name of a shadow-host element

Web APIs

  • Added fallback mechanisms for stretching and mirroring radical symbols in MathML
  • Used the MathOperator to handle some non-stretchy operators in MathML
  • Set the upper limit for the size or number of pieces of stretchy operators in MathML
  • Allowed phrasing content to be accepted in <mo> elements
  • Fixed a bug retrieving Blobs from IndexedDB using cursors in WebKit2 sandboxing
  • Changed synchronous event tracking to each event type instead of each event sequence

Apple Pay

  • Moved Apple Pay code to the open source repository
  • Moved WebKit2 Apple Pay code to the open source repository
  • Moved the WebKit1 Apple Pay code to the open source repository
  • Added a logged error message when passing an invalid API version to ApplePaySession constructor
  • Moved the user gesture requirement to the ApplePaySession constructor
  • Fixed the Apple Pay total amount error message to trigger for the correct limits
  • Added shippingType to the list of valid Apple Pay payment request properties
  • Added an exception to Apple Pay when the shipping method has an invalid amount
  • Fixed discounted Apple Pay line items to display positive amounts

Web Inspector

  • Changed console.profile to use the new Sampling Profiler
  • Fixed an infrequent but persistent crash that could occur when closing Web Inspector
  • Prevented automatic timeline recording when Web Inspector is not visible
  • Delayed the first auto-capture heap snapshot during page reloads until after the page performs its first navigation
  • Fixed showing impossible values for underflowed bmalloc sizes in the Memory Timeline
  • Uncoupled the Quick Console selection updates from the UI to improve testing
  • Fixed selectElement.options entries in console for named indexes beyond the collection length
  • Fixed the Snapshot List to show the total size and the total live size
  • Improved JavaScript Heap Snapshot clean up handling
  • Ensured localStorage is updated when modifying sessionStorage
  • Fixed broken text search in resources with <CR>

Media

  • Fixed picture-in-picture placeholder visibility when the controls attribute is removed
  • Fixed the volume slider for web video playback controls for right-to-left content
  • Implemented support for “replacement” codec
  • Fixed an issue where media controls stop working after exiting picture-in-picture mode
  • Fixed media elements to not lose playback controls when muted by a user gesture
  • Fixed the playback controls element used when playing multiple items in a page

Rendering

  • Fixed the position for composition underlines in right-to-left content
  • Fixed <attachment> elements jumping around when subtitle text changes slightly
  • Fixed style invalidation for :active when the activated node has no renderer
  • Flipped the behavior for the Forward and Back keyboard shortcuts in right-to-left content
  • Fixed the placement of <select> popup menus in right-to-left content
  • Corrected the behavior of the :active state of elements when focus changes

Accessibility

  • Added support for CSS4 :focus-within pseudo-class
  • Exposed anonymous RenderMathMLOperators to the accessibility tree
  • Fixed the ARIA role attribute for label elements

Security

  • Prevent file scheme access to a resource on a different volume
  • Set CORS preflight with a non–200 response to be a preflight failure
  • Allowed * to match the originating page’s scheme for Content Security Policy
  • Changed security origin inheritance check to ignore case

Bug Fixes

  • Fixed parent document scrolling when a focus event is dispatched in an <iframe>
  • Fixed an issue causing Google Maps transit schedule explorer to initially load blank
  • Changed HTMLElement and SVGElement to implement GlobalEventHandlers
  • Implemented a constructor for TouchEvent
  • Fixed double-tap to zoom on Yahoo Finance
  • Implemented support for Vary:Cookie validation in private browsing
  • Fixed playback controls on Vimeo.com videos
  • Improved resource handling when navigating by discarding decoded image that is only “in use” due to page cache not actual pages

Release 7

JavaScript

  • Implemented options argument to addEventListener
  • Updated JSON.stringify to correctly transform numeric array indices
  • Improved the performance of Encode operations
  • Addressed issues with Date setters for years outside of 1900-2100
  • Fixed an issue where reusing a function name as a parameter name threw a syntax error
  • Added the error argument for window.onerror event handlers
  • Improved performance for accessing dictionary properties
  • Updated Proxy.ownKeys to match recent changes to the spec
  • Prevented RegExp unicode parsing from reading an extra character before failing
  • Updated SVGs to report their memory cost to the JavaScript garbage collector
  • Improved the sampling profiler to protect itself against certain forms of sampling bias that arise due to the sampling interval being in sync with some other system process
  • Fixed global lexical environment variables scope for functions created using the Function constructor
  • Fixed parsing super when the default parameter is an arrow function
  • Added support for trailing commas in function parameters and arguments
  • Added the unprefixed version of the pseudo element ::placeholder
  • Fixed a crash when computing the style of a grid with only absolute-positioned children
  • Fixed computing a grid container’s height by accounting for the horizontal scrollbar
  • Fixed placing positioned items on the implicit grid
  • Fixed rendering for the text-decoration-style values: dashed and dotted
  • Fixed support for using border-radius and backdrop-filter properties together
  • Fixed clipping for border-radius with different width and height
  • Fixed CSS reflections for elements with WebGL
  • Fixed CSS reflections for elements with a backdrop-filter property
  • Improved the Document’s font selection lifetime in preparation for the CSS Font Loading API
  • Improved memory management for CSS value parsing
  • Improved font face rule handling for style change calculations
  • Fixed multiple selector rule behavior for keyframe animations
  • Fixed applying CSS variables correctly for writing-mode properties
  • Added experimental support for spring() based CSS animations
  • Changed the initial value of background-color to transparent per specs

Web APIs

  • Changed CanvasRenderingContext2D.createPattern() and CanvasRenderingContext2D.putImageData() to throw the correct exception type and align with the specification
  • Fixed a number of issues with Web Workers

Web Inspector

  • Added ⌘T keyboard shortcut to open the New Tab tab
  • Added the ability to show and hide columns in data grid tables
  • Fixed an error when trying to delete nodes with children
  • Added a Top Functions view for Call Trees in the JavaScript & Events timeline
  • Added gaps to the overview and category graphs in the Memory timeline where discontinuities exist in the recording
  • Improved the performance of DOM tree views
  • Fixed filtering to apply to new records added to the data grid
  • Improved snapshot comparisons to always compare the later snapshot to the earlier snapshot no matter what order they were selected
  • Improved performance when processing many DOM.attributeModified messages
  • Fixed the 60fps guideline for the Rendering Frames timeline when switching timeline modes
  • Included the exception stack when showing internal errors in Web Inspector
  • Added ⌘P keyboard shortcut for quick open
  • Removed Text → Content subsection from the Visual Styles Sidebar when not necessary
  • Show <template> content that should not be hidden as Shadow Content
  • Fixed elements in the Elements tab losing focus when selected by the up or down key
  • Enabled combining diacritic marks in input fields in Web Inspector

Media

  • Prevented double-painting the outline of a replaced video element
  • Properly prevented video.play() for video.src="file" with audio user gesture restrictions in place
  • Prevented showing the caption menu if the video has no selectable text or audio tracks
  • Improved performance of HTMLMediaElement.prototype.canPlayType that was accounting for 250–750ms first loading theverge.com
  • Fixed inline media controls to show PiP and fullscreen buttons

Rendering

  • Fixed a repaint issue with vertical text in an out-of-flow container
  • Show text in a placeholder font while downloading the specified font
  • Fixed rendering an SVG in the correct vertical position when no vertical padding is applied, and in the correct horizontal position when no horizontal padding is applied
  • Fixed blending of inline SVG elements with transparency layers
  • Fixed display of hairline borders on 3x displays
  • Prevented flickering and rendering artifacts when resizing the web view
  • Fixed logic to trigger new layout after changing canvas height immediately after page load

Bug Fixes

  • Fixed an issue where Find on Page would show too many matches
  • Exposed static text if form label text only contains static text
  • Added Origin header for CORS requests on preloaded cross-origin resources
  • Added support for the upgrade-insecure-requests (UIR) directive of Content Security Policy
  • Added proper element focus and caret destination for keyboard users activating a fragment URL
  • Increased disk cache capacity when there is lots of free space
  • Prevented hangs during synchronous XHR requests if a network session doesn't exist
  • Fixed the response for a POST request on a blob resource to return a “network error” instead of HTTP 500 response
  • Restricted HTTP/0.9 responses to default ports and cancelled HTTP/0.9 resource loads if the document was loaded with another HTTP protocol
  • Fixed parsing URLs containing tabs or newlines
  • Fixed cookie validation in private browsing
  • Provided memory cache support for the Vary header

Release 6

JavaScript

  • Added support for trailing commas in function parameters per draft ECMAScript spec
  • Improved RegExp matching when the result array becomes large
  • Made RegExp throw an exception instead of a crash when matching deeply nested subexpressions
  • Made TypedArray.prototype.slice no longer throw an exception if no arguments are provided
  • Improved performance of TypedArray access by 30% in the 64-bit low-level interpreter
  • Fixed a regression where String.prototype.replace would fail after being used many times with different replace values
  • Improved integer to float conversion code generation in the B3 JIT Compiler
  • Fixed arrow functions as default parameter values so they capture this properly
  • Added support for normal keyword value per draft CSS Box Alignment Module Level 3 spec
  • Updated the parsing of CSS Grid’s fixed-size per the draft spec
  • Made elements with backdrop-filter clip when used with clip-path or mask
  • Made changing border-color and border-width on table cells with border-collapse: collapse repaint properly
  • Fixed overflow: hidden so it always repaints clipped content when overflow changes

Web APIs

  • Started allowing empty strings in the FontFace constructor and parse them as if they are omitted
  • Stopped firing a popstate event with a null state when navigating back to a stateless cached page
  • Started allowing custom drag-and-drop even without placing data in the pasteboard

Web Inspector

  • Made the split console stay closed when using Inspect Element context menu item
  • Fixed a regression where CSS properties modified via JavaScript didn’t update in the DOM tree or Styles sidebar
  • Improved garbage collection time by 2x when recording heap snapshots
  • Made heap snapshot views remove objects that have been garbage collected
  • Corrected how transitively dominated objects in heap snapshots display their retained size
  • Made ShadowChicken properly handle when the entry stack frame is a tail deleted frame
  • Added indicators to show nesting levels for DOM elements in the Elements tab
  • Fixed a regression where WebSQL databases were no longer shown in the Storage tab on first open
  • Improved load time of Web Inspector by profiling with Web Inspector
  • Fixed resuming the debugger after breaking on an exception inside a Promise callback
  • Fixed the main resource not showing up in the Debugger tab sidebar after a reload

Media

  • Reduced flicker and jumpiness when entering and exiting fullscreen presentation mode

Bug Fixes

  • Fixed scrolling on App Store Connect pages
  • Fixed autocorrection so it is easier to type contractions and email addresses
  • Fixed a crash during font download failure after garbage collection
  • Reverted the change to ignore clicks inside button elements when the mouse moves, due to a regression
  • Fixed a regression that broke Zoom In (⌘+) on pages

Release 5

JavaScript

  • Corrected the entropy of Math.random() for the first two invocations
  • Corrected sticky RegExp handling when backtracking alternatives with dissimilar match lengths
  • Fixed ES6 site compatibility when Function.name is inferred from property names
  • Sped up ES6 Array iterators between 4x to 6x
  • Made the Object constructor be aware of new.target by storing the target’s prototype to the newly created object’s prototype
  • Fixed calls to getters and setters on super being called with wrong this object
  • Improved error messages for accessing arguments.callee and similar getters in strict mode
  • Made TypedArray.prototype.slice use the byteLength of passed array for memmove
  • Fixed the cascading order for !important properties in ::slotted and ::host rules correctly
  • Added color-gamut media query support for wide gamut displays
  • Made Web Fonts only download when characters are used in its unicode-range
  • Restored legacy parsing of color attributes with 4 and 8 digits
  • Corrected how transitions behave when auto values are used
  • Unprefixed -webkit-cross-fade()
  • Corrected cross-fade() rendering to match expectations
  • Corrected how prefixed and unprefixed variants in CSSStyleDeclaration are handled
  • Stopped attempting to compute min/max width for replaced elements with no intrinsic size
  • Unprefixed CSS Grid Layout properties
  • Fixed static position for positioned CSS Grid items
  • Corrected parsing when just using span as a grid-line value
  • Implemented CSS Grid auto-repeat computation

Web APIs

  • Started blocking Geolocation API calls on pages served over insecure connections
  • Made NodeList iterable
  • Added support for title attribute tooltips inside Shadow DOM content
  • Stopped retargeting event.target when an event bubbles up from an assigned node to its assigned slot
  • Enabled IndexedDB in Web Worker scripts
  • Fixed IndexedDB transactions so they can’t be committed or aborted twice
  • Started propagating user gesture state across postMessage boundaries
  • Aligned window.scroll(), scrollTo(), and scrollBy() with the CSSOM spec with support for the options argument
  • Made all scrolling height and width values be integral rounded
  • Added support for ArrayBufferView in the CSS Font Loading API

Web Inspector

  • Hook up ShadowChicken in the Debugger tab to properly show tail call deleted frames
  • Made let and const work as expected in Console evaluations
  • Improved organization of the Debugger tab sidebar
  • Added Object Graph view to heap snapshots and removed the Summary view
  • Fixed sites that relied on putting custom properties on console.prototype
  • Improved performance of filtering large timeline recordings
  • Made Inspect Element and element selection work with Shadow DOM nodes
  • Fixed the start times in the Frames timeline data grid
  • Started persisting breakpoints in scripts named via //# sourceURL
  • Fixed the scrollbar covering the last column in data grids when always showing scrollbars
  • Fixed Computed Style so it no longer shows both prefixed and unprefixed variants of properties
  • Made the Call Trees view in the Timelines tab filterable and hide it from views that are not filterable
  • Started showing in-progress message in timeline views that do not show data until the recording finishes
  • Improved performance of the Console when it tries to render thousands of messages at once
  • Fixed filtering by duration in the Frames timeline view
  • Fixed loading of //# sourceMappingURL with a relative URL
  • Improved console.count() to better match other browsers
  • Improved performance of the Timelines tab by profiling Web Inspector with Web Inspector

Media

  • Made media elements not pause right away when removed from the document
  • Started returning a Promise from HTMLMediaElement.prototype.play()
  • Stopped updating media duration at playback end while seeking

Security

  • Fixed case matching against the path portion of CSP source expression URLs that ends in a forward-slash
  • Corrected a CORS check what was sometimes incorrectly failing for media loads

Networking

  • Stopped restarting a resource preload if there is already one pending for the same URL

Accessibility

  • Media controls are now keyboard accessible along with other Shadow DOM elements

Bug Fixes

  • Fixed large animated GIFs not animating until the last frame on slow networks
  • Fixed Zoom In and Zoom Out on PDF documents

Release 4

Networking

  • Allow non-standard HTTP headers in WebSocket handshakes, which makes the 1Password extension work again

Media

  • Fixed Netflix video playback

JavaScript

  • Disabled Symbol.isConcatSpreadable due to performance concerns; is expected to return in the next release
  • Made super() available to object literals, not just ES6 classes
  • Sped up calling bound functions with no bound arguments by 4x
  • Implemented String.prototype.localeCompare from ECMA-402
  • Optimized JSON.parse for a 1–2.5% improvement in Kraken json-parse-financial
  • Implemented RegExp.prototype.@@replace and use it for String.prototype.replace
  • Implemented spec changes for String.prototype.padStart and String.prototype.padEnd
  • Unified how Math.pow() is optimized across all JIT tiers
  • Made Reflect.toString() be [object Object] not [object Reflect]
  • Made -webkit-image-set work inside CSS variables
  • Changed transitions to no longer animate to/from auto values
  • Implemented proper handling of animation-delay with a negative delay
  • Started parsing play-state as part of the animation shorthand
  • Made toggling animation-play-state not restart a finished animation
  • Fixed a regression which caused position: absolute pseudo elements to inherit text-decoration
  • Moved CSS Grid behind a runtime switch that is currently enabled by default
  • Started implementation of auto-fill and auto-fit for CSS Grid
  • Fixed computed style of grid-template-columns and grid-template-rows properties
  • Fixed a bug with positioned grid items in vertical writing mode
  • Fixed alignment with CSS Grid content distribution
  • Improved user agent styles for <math> elements

Web APIs

  • Fixed wheel events so they fire with body, html { height: 100% }
  • Marked IndexedDB constructors as hidden on the worker global object until it is supported
  • Made ping attribute for anchor elements only work for http/https URLs
  • Renamed Shadow DOM’s getAssignedNodes to assignedNodes and support flattened option
  • Removed Shadow DOM’s Node.prototype.rootNode because it was not compatible with existing websites
  • Made document.currentScript return null when executing a script inside a shadow tree
  • Fixed clicks sometimes being ignored inside button elements when the mouse moves

Web Inspector

  • Made console a namespace object (like Math and JSON), allowing functions to be called unbound
  • Fixed an issue where scripts would not load due to Esprima.js not being found
  • Started showing dynamically added <script> elements added to a frame as resources
  • Made sourceURL and sourceMappingURL always work when using the Function constructor
  • Restored filtering to the Timelines tab
  • Added column number info to event listener locations
  • Fixed profiles missing from records in JavaScript & Events timeline
  • Fixed selecting a bar in the Frames timeline mode
  • Made sorting by name or location columns work as expected
  • Fixed the line error widget showing up on the wrong resource
  • Clarified Retained Size in heap snapshots by hiding retained size of non-dominated children
  • Made the debugger statements evaluated in the console properly show the source code
  • Made jump to line work correctly the first time in pretty-printed JavaScript
  • Improved scrolling performance in Timelines tab
  • Improved performance of rendering many console messages
  • Changed console.assert and console.trace to allow format specifiers
  • Improved performance of console.assert by 10x when the assertion is true
  • Changed console.time and console.timeEnd to use a default label when none if specified, and warn when attempting to start an already started timer
  • Added CSS autocompletion suggestions for -webkit-user-select

Rendering

  • Made non-accelerated CSS and SVG animations run at 60fps
  • Made <select multiple> padding consistent with other browsers
  • Fixed blur filter escaping an enclosing overflow: hidden
  • Fixed a regression with min-content and box-sizing: border-box that affected Facebook’s messenger.com

Accessibility

  • Made VoiceOver properly speak superscript content
  • Fixed navigation around composed emoji characters and content with multiple whitespace sequences
  • Made aria-label attribute work on <label> elements
  • Made region a landmark and <section> elements have a role of region if there is an author provided accessible name via the aria-label or aria-labelledby attributes

Bug Fixes

  • Corrected how WebKit determines the user’s preferred region from the system language setting.

Release 3

JavaScript

  • Added support for Symbol.isConcatSpreadable per the ES6 spec
  • Made RegExp constructor get the Symbol.match property to decide if an object should be constructed like a RegExp object per the ES6 spec
  • Changed String.match and String.search to use RegExp constructor per the ES6 spec
  • Corrected how function declarations are hoisted per the ES6 spec
  • Improved parsing of ES6 arrow functions
  • Added RegExp.prototype[@@split] and made String.prototype.split use it per the ES6 spec
  • Added RegExp.prototype[@@search]
  • Updated the treatment of invoking methods on RegExp.prototype per the ES6 spec
  • Made more test cases pass with ES6 RegExp unicode flag
  • Added support for caching accesses to arguments.length for a performance speed-up
  • Corrected the behavior of throw() for generators yielding to an inner generator per draft ECMAScript spec
  • Implemented the functional :host() pseudo class
  • Improved support for SVG cursor images
  • Started using OpenType math fonts by default for MathML
  • Fixed measurement of hanging punctuation
  • Improved hyphenation when the last line in a paragraph only contains one syllable of a word
  • Fixed a layout problem affecting CSS Grid items without a static inline position in RTL languages
  • Fixed positioned items with gaps for CSS Grid
  • Added support for CSS Grid grid-template-columns repeat(auto-fill, …) and repeat(auto-fit, …)
  • Fixed positioned items with content alignment in CSS Grids
  • Started using grid-template-areas to determine the explicit grid
  • Corrected CSS Grid layout by using the margin box for non-auto minimum sizes

Web APIs

  • Added support setting and retrieving Blob values in IndexedDB
  • Corrected MessageEvent.source result once window has been fully created
  • Improved stability when the first child of a shadow root is a comment node
  • Made CSS be a proper constructor on the window object with static functions
  • Exposed the Crypto constructor on the window object
  • Added support for display: contents on <slot> elements
  • Fixed FontFace so it will be properly reject the returned promise if Content Security Policy blocks all the URLs
  • Made FontFaceSet handle null correctly
  • Corrected DOMTokenList.contains() so it does not throw an exception
  • Made Selection.deleteFromDocument not delete a character when the selection is a caret per the spec
  • Improved the IndexedDB bindings to better match the spec
  • Made AudioBufferSourceNode.buffer nullable
  • Improved stability handling a wheel event that closes a frame

Web Inspector

  • Made it possible to expand objects in the Instances heap snapshot view to see what it retains
  • Improved performance dramatically in the Timelines tab when recording pages with a lot of rapid activity and for long recordings
  • Improved JavaScript pretty printing performance by using Esprima and by no longer blocking the main thread
  • Improved the profiler’s sampling rate to get closer to a 1ms sample frequency
  • Improved filtering in Open Quickly dialog
  • Made the Open Quickly dialog keep its resource list up to date
  • Stopped trying to match color patterns in JavaScript source code to improve performance of large resources
  • Changed take snapshot navigation button to a camera glyph
  • Corrected source code location links in the JavaScript profile Call Trees view
  • Made XHRs and Web Workers full-text searchable
  • Improved the appearance of DOM nodes in object previews
  • Improved the tab bar rendering when the tabs are small
  • Corrected dock controls disappearing from the toolbar after leaving fullscreen
  • Started remembering the zoom factor as a persistent setting across sessions
  • Corrected sourceMappingURL not being used when sourceURL was also set
  • Started localizing sizes and times by using Number.prototype.toLocaleString
  • Made sourceMappingURL work more reliably across reloads

Rendering

  • Improved the time to display for some pages — allowing a short page header to render immediately before other content populates later
  • Fixed page tile layers disappearing when graphics acceleration is unavailable
  • Made font-size: 0 render as 0 width when text-rendering: optimizeLegibility is used
  • Corrected focus ring drawing at incorrect location on image map with a CSS transform
  • Made negative letter-spacing affect the right edge of the content’s visual overflow
  • Corrected compositing for WebGL based canvases after they changed size
  • Started clearing the rendered icon on <input type=file> when an empty files list is set
  • Improved performance of border-collapse: collapse on tables
  • Improved rendering of select[multiple] to better match other browsers
  • Fixed backdrop filter so it honors visibility: hidden

Security

  • Made nested browsing context created for <object> or <embed> respect Content Security Policy’s object-src directive
  • Started ignoring Content Security Policy meta tags if it is not a descendent of <head> per the spec
  • Started ignoring report-only Content Security Policy directives delivered via meta tag per the spec
  • Started ignoring paths in Content Security Policy URL matching after redirects per spec
  • Removed support for X-Frame-Options in <meta> per the spec

Networking

  • Stopped speculatively revalidating cached redirects
  • Stopped cacheing responses with Content-Range headers to avoid serving incorrect results
  • Fixed clearing the application cache when removing website data in Privacy preferences

Accessibility

  • Changed the application role description to "web application" to avoid confusion with the top-level system application description
  • Made presentation role be preferred over child <title> and <desc> elements in SVG content

Release 2

Browser Differences

  • Changed the CFBundleSignature to allow Apple Events, like those sent from AppleScript, to correctly distinguish between Safari and Safari Technology Preview

JavaScript

  • Added ES6 support for Symbol.isConcatSpreadable
  • Disallowed var assignments in for-in loops according to ES6 specs
  • Improved stability for ES6 classes when invoking a method of the parent class before calling super() in a constructor
  • Allowed undefined or null for Symbol.search and Symbol.match
  • Enabled Array.prototype native functions' species constructors to work with proxies
  • Implemented the proposal for String.prototype.padStart() and String.prototype.padEnd()
  • Implemented ES6 spec for String.prototype.match and RegExp.prototype[@@match]
  • Included a workaround for web compatibility on ES6 TypeErrors when accessing RegExp.prototype flag properties
  • Corrected quantified unicode regular expressions
  • Ensured greedy unicode regular expressions properly backtrack past non-BMP characters
  • Implemented the allow-end value of the hanging-punctuation CSS property
  • Improved web compatibility by resetting CSS spacing rules on <math> elements
  • Added the new color-gamut CSS media query
  • Updated screen queries to check the capabilities of the current screen instead of the deepest available screen

Web APIs

  • Restricted WebSockets header parsing according to RFC6455 and RFC7230
  • Improved performance of certain draw calls in WebGL with a non-power-of-two texture optimization
  • Disabled the Fetch API until the implementation is ready to be enabled by default
  • Enhanced Shadow DOM support to compute styles for the style attribute of <slot> elements
  • Softened pushState and replaceState frequency restrictions

Web Inspector

  • Timelines tab performance and bug fixes
  • Disabled debugger statements while profiling a page to ensure maximum performance accuracy
  • Added the ability to configure timeline instruments to use for recordings
  • Added a paint count indicator in the top left corner of non-opaque layers
  • Added font-variant-numeric to CSS autocompletions
  • Added the console.takeHeapSnapshot method for capturing heap snapshots
  • Changed details sidebar shortcuts to Command-Option-0 and Command-Shift-0
  • Double-quotes and backslashes in strings are now displayed correctly in the console
  • Improved the consistency of CSP directive violation messages reported in the console

Accessibility

  • Corrected new lines in content editable elements to notify accessibility
  • Updated the handling of SVG elements with a presentational role to be the same as other host language elements
  • Limited the numbered list announcement for a list item number to the first line of text in the list item
  • Changed the accessibility role descriptions for JavaScript alerts to "web dialog" and "web alert dialog" to make them more understandable to screen reader users

Rendering

  • Updated backdrop filter to repaint when changed in JavaScript
  • Corrected drawing SVG stroke patterns for objects with empty bounding box elements

Media

  • Improved stability when an audio source is changed while being processed
  • Fixed audio track listings

Networking

  • Improved the reliability of speculative disk cache validation requests with the HTTP Referer header

Bug Fixes

  • Fixed autoscrolling in a drag selection when a window is against the screen edge, including while in full screen mode

Release 1

This release of Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies.

Browser Differences

  • Safari Technology Preview can be run side-by-side with Safari and set as the default browser
  • Separate local data stores are used for history, bookmarks, cookies, and cache
  • Browsing history and bookmarks are synced over iCloud when iCloud sync is enabled
  • The Develop menu is enabled by default
  • Receives regular updates through the Updates tab of the Mac App Store
  • Bug reports made on bugreport.apple.com should specify Safari Technology Preview

JavaScript Improvements

  • ECMAScript 6 support including lexical scoping, iterators, generators, arrow functions, default parameter values and many new built-in APIs
  • Better standards compliant IndexedDB support with more stability
  • Included the B3 JavaScript JIT compiler with low-latency, high-throughput that boosts performance
  • Added the ability to use document.execCommand('copy') and document.execCommand('cut') in response to a user gesture to copy and cut text programmatically

HTML Enhancements

  • The latest implementation of the Shadow DOM specification
  • Added support for Content Security Policy Level 2

Web Inspector Changes

  • Added memory summary and JavaScript allocations timelines
  • Added a fast JavaScript sampling profiler
  • Improved JavaScript profiling timeline view

Behavior Changes

  • Included many web compatibility fixes and bug fixes

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK