• Skip to main content
  • Select language
  • Skip to search
MDN Web Docs
  • Technologies
    • HTML
    • CSS
    • JavaScript
    • Graphics
    • HTTP
    • APIs / DOM
    • WebExtensions
    • MathML
  • References & Guides
    • Learn web development
    • Tutorials
    • References
    • Developer Guides
    • Accessibility
    • Game development
    • ...more docs
Firefox
  1. MDN
  2. Mozilla
  3. Firefox
  4. Firefox developer release notes
  5. Firefox 52 for developers

Firefox 52 for developers

In This Article
  1. Changes for Web developers
    1. Developer Tools
    2. HTML
    3. CSS
      1. New features
      2. CSS Grids
      3. Changes and removals
    4. JavaScript
      1. New features
      2. Changes and removals
    5. WebAssembly
    6. DOM
      1. Changes and removals
    7. Service Workers and Fetch
    8. Web Audio API
    9. WebRTC
    10. Audio/Video/Media
    11. Other APIs
    12. HTTP
    13. SVG
    14. Security
  2. Plugins
  3. Changes for add-on and Mozilla developers
    1. WebExtensions
    2. Interfaces
    3. XUL
  4. See also
  5. Older versions

Firefox 52 was released on March 7, 2017. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.

Changes for Web developers

Developer Tools

  • Completely revamped Responsive Design Mode, including UA selection and network throttling.
  • The Animation Inspector now displays timing functions.
  • The Page Inspector now includes a CSS grid inspector.
  • about:debugging now shows service worker state.
  • The Page Inspector includes an easy way to highlight the selected element.
  • The Page Inspector displays whitespace-only text nodes.

All devtools bugs fixed between Firefox 51 and Firefox 52.

HTML

  • The rel="noopener" Link type has been implemented (see bug 1222516).

CSS

New features

  • Added :focus-within pseudo-class (bug 1176997).
  • Added support for display:flex/grid and columnset layout inside <button> elements (bug 984869).
  • Implemented interpolation between numeric color and currentcolor (bug 1299741).
  • Implemented flexbox layout for justify-content: space-evenly and align-content: space-evenly (bug 1235922).
  • Added support for subpixel antialiasing in CSS mask / clip-path (bug 1305259).
  • Implemented CSS Text 3 segment break transformation rules (bug 1081858).
  • Basic shape clipping (as applied via the clip-path property) can now be applied to SVG content (bug 1246741).
  • Implemented Flexbox layout for align-self|justify-self: [ first | last ]? baseline (bug 1221524).
  • The touch-action property is now enabled by default on all platforms. (For the full story, see intent to ship mail #1 and intent to ship mail #2.)
  • Flexbox align-content handling & single-line-sizing should depend on flex-wrap, not number of lines (bug 1090031).
  • CSS Animations can now be used to animate non-interpolable properties (see bug 1064937).
  • Changed baseline|last-baseline to [ first | last ]? baseline (bug 1313254).
  • The used value for left/right is start for the block-axis (bug 1221565).
  • Stretching flexible tracks with an indefinite containing block length now respects the min/max size(bug 1309407).
  • The initial values of mask-position and mask-repeat have been changed to 0% 0% and repeat, respectively (bug 1308963).
  • There have been a number of changes to CSS <color> values (see bug 1295456):
    • rgba() and hsla() have now been redefined as aliases of rgb() and hsl(); both accept the same parameter syntax.
    • rgb() and hsl() now accept an optional alpha value, e.g. rgb(255, 0, 0, 0.5).
    • Color functions now accept space-separated parameters rather than commas, e.g. rgb(255 0 0 / 0.5).
    • Alpha values can now be specified as percentages as well as numbers, e.g. rgb(255 0 0 / 50%).
    • The hue component in hsl() colors can now be specified as an angle, as well as a number, e.g. hsl(120deg, 60%, 70%).

CSS Grids

  • CSS Grids are implemented.

Changes and removals

  • Unprefixed multi-column properties (and added back -moz prefixed versions as aliases, for now) (bug 1300895).
  • Stopped wrapping abspos children of flex container in anonymous flex items(bug 1269045).
  • Implemented grid container baselines (bug 1151204).
  • Removed <flex> min-sizing from the style system (bug 1305244).
  • Remove preference layout.css.masking.enabled (bug 1308239).
  • The proprietary -moz-images-in-menus and -moz-images-in-buttons media types have been removed (see bug 1302157).
  • Removed -moz-use-text-color value from color properties; use currentcolor instead (bug 1306214).
  • [css-grid] 'max-width' set on grid item causes text to overflow (bug 1330380).

JavaScript

New features

  • Support for the async functions has been added. This adds async function, async function expression, and the await keyword (bug 1185106).
  • Implemented ES2017 trailing commas in functions (bug 1303788).
  • Implemented rest parameter destructuring (bug 1243717).
  • The exponentiation operator (**) is now enabled by default (bug 1291212).
  • You can now use IANA time zone names in the timeZone option of date related APIs like DateTimeFormat or Date.toLocaleString() (bug 837961).

Changes and removals

  • Array destructuring now throws a SyntaxError when using destructuring rest with trailing comma (bug 1041341).
  • Duplicate __proto__ properties are now allowed in object destructuring (bug 1204024).
  • Array.prototype.toLocaleString() has been re-implemented to support the Intl API parameters "locales" and "options" (bug 1130636).
  • TypedArray constructors now accept iterables to create new typed arrays (bug 1232266).
  • TypedArray.from(), TypedArray.of(), TypedArray.prototype.filter(), TypedArray.prototype.map(), TypedArray.prototype.slice(), TypedArray.prototype.subarray() now require that their this values are valid Typed Array constructors (bug 1122396).
  • The non-standard ArrayBuffer.slice() method (not ArrayBuffer.prototype.slice()) is deprecated and now presents a warning when used (bug 1316913).
  • Unicode code point escapes can now also be used as identifiers (e.g. "let \u{61} = 123", see bug 1314037).
  • To conform with ES2015, \u2e2f and ⸯ now throw when used as identifier, for details see bug 917436 and bug 1197230.

WebAssembly

  • Support for WebAssembly has been added to Gecko.

DOM

  • The Selection API has fully shipped, including the new selectstart and selectionchange events (see also GlobalEventHandlers.onselectstart and GlobalEventHandlers.onselectionchange) (bug 1309612).
  • The property Event.composed is now supported; this Boolean value indicates whether or not the event can bubble through the shadow root into the standard DOM (bug 1292063).
  • Only HTML elements, plus the <svg> and <math> elements, can be put into full-screen mode by calling Element.requestFullScreen() (bug 1305928).
  • Touch events have been reenabled on Windows desktop platforms — see bug 1244402. (They were disabled in Firefox 24 because they broke a number of major sites; see bug 888304.)
  • The focusin and focusout events are now implemented (bug 687787).
  • The WindowOrWorkerGlobalScope.isSecureContext property has been implemented (see bug 1269052).
  • The Web App Manifest install event has been renamed appinstalled (see Window.onappinstalled, appinstalled) to avoid confusion with the service worker install event (see ServiceWorkerGlobalScope.oninstall). See bug 1309099 for more details about this update.
  • The DataTransfer.types property of the Drag and drop API now returns a frozen array of DOMStrings rather than a DOMStringList (see bug 1298243).
  • The loadstart and loadend events are now fired on <img> elements (see bug 1264769, and also see GlobalEventHandlers.onloadstart and GlobalEventHandlers.onloadend). 
  • The Notification.requireInteraction of the Notifications API has been implemented (see bug 862395.)
  • The Window.open() method now has a noopener window feature available (see bug 1267339), which mirrors the functionality of the rel="noopener" Link type.
  • The CustomElementRegistry.get() method of the Web Components API has been implemented (see bug 1275838).
  • Pointer Event width and height properties now default to a value of 1 (see bug 1304315).
  • The File and Directory Entries API has been updated to include changes in the latest spec (see bug 1284987 for the exact details).
  • The cancelBubble property, which was defined on UIEvent, is now defined on the Event interface instead. See bug 1298970 for more details.

Changes and removals

  • The Firefox OS APIs that deal with managing phone calls (Contacts, MobileConnection, Icc, etc.) have been removed (bug 1311206).
  • The Firefox OS Identity interface has been removed (bug 1309030).
  • The Firefox OS Voicemail API MozVoicemail, MozVoicemailEvent, MozVoicemailStatus, Navigator.mozVoicemail) has been removed (bug 1309723).
  • The Firefox OS Cell Broadcast API (MozCellBroadcast, MozCellBroadcastEvent, MozCellBroadcastMessage, Navigator.mozCellBroadcast) has been removed (bug 1306772).
  • The Firefox OS TV broadcast-related APIs have been removed (bug 1306778).
  • The Firefox OS FM Radio API (FMRadio, Navigator.mozFMRadio) has been removed (bug 1306779).

Service Workers and Fetch

  • The Headers.getAll() method has been removed, and Headers.get() now retrieves all values of the specified header, not just the first one (see bug 1278275). This is in accordance with the latest Fetch API spec updates.

Web Audio API

  • The ConstantSourceNode interface has been added; it represents an audio source which always outputs a stream of samples which all have the same value. See Controlling multiple parameters with ConstantSourceNode for an example showing how this can be used to simplify some complex audio flows.

WebRTC

  • When an ICE connection is temporarily disrupted, the RTCPeerConnection.iceConnectionState property now gets set to "disconnected"; this indicates a transitory failure that may resolve itself shortly, with the connection returning to the "connected" state afterward (bug 852665).
  • The MediaDevices.ondevicechange event handler and corresponding devicechange event, which were implemented but disabled by default on Mac only in Firefox 51, have been implemented on Windows and Linux and are now enabled by default on all platforms.
  • The MediaStream.active property is now supported. This read-only Boolean property indicates whether or not at least one track on the stream is currently playing.
  • Prior to Firefox 52, the MediaStreamTrack.stop() method could only stop local tracks (that is, tracks obtained through getUserMedia()). Now a variety of tracks can be stopped, including those on a MediaStream associated with a WebRTC connection, Web Audio API stream, or CanvasCaptureMediaStream.
  • Previously, changing a TextTrack's mode repeatedly during a single pass through the Firefox event loop would result in multiple change events being delivered to the TextTrackList specified by the parent media element's textTracks property. Now these changes are consolidated into one event (bug 882674).

Audio/Video/Media

  • The MediaError objects specified in HTMLMediaElement.error when an error occurs handling an <audio> or <video> element now include a message property, which provides a specific description of the error which occurred. This string offers details particular to this exact error occurrence, offering insight into why things went wrong (bug 1299072). This field has been included in Firefox nightly builds since Firefox 51, but is now available in all builds, up to and including release.

Other APIs

  • The method FileSystemFileEntry.createWriter(), which was added (but always returned an error) in Firefox 50 has been removed (bug 1315185.
  • The proprietary Firefox OS Apps installation/management APIs have been removed from the platform (see bug 1261019).
  • The proprietary Firefox OS Web Telephony API has been removed from the platform (see bug 1309719).
  • The proprietary Firefox OS Web Bluetooth API has been removed from the platform (see bug 1310020).
  • The Battery Status API is now available only to chrome/privileged code (see bug 1313580).
  • ImageBitmapRenderingContext.transferImageBitmap() has been renamed to ImageBitmapRenderingContext.transferFromImageBitmap() (see bug 1304767).
  • The mozDash and mozDashOffset members have been removed from CanvasRenderingContext2D (see bug 931389).

HTTP

  • The Referrer-Policy header now supports the directives same-origin, strict-origin, and strict-origin-when-cross-origin (bug 1276836).
  • The 'strict-dynamic' source expression is now supported for Content-Security-Policy directives, such as script-src (bug 1299483).
  • Insecure sites (http:) can't set cookies with the "secure" directive anymore as per the Strict Secure Cookies specification (bug 976073).
  • The maximum table size format of the HTTP/2 header compression format HPACK has been increased from 4 KB to 64 KB (bug 1296280).
  • The Large-Allocation header has been added (bug 1304140).

SVG

  • SVG documents are now represented using the XMLDocument interface instead of SVGDocument. This is a change made in the SVG 2 specification.

Security

  • When login pages (i.e those containing an <input type="password"> field) are created so that they would be submitted insecurely, Firefox displays an in-context warning message below the password field to warn users (bug 1319119). Autofill is also disabled on insecure login forms (bug 1217152). See Insecure passwords for more details.
  • Support for SHA-1 SSL certificates has been removed; navigating to a secure page that uses a SHA-1 certificate will now result in an Untrusted Connection error (bug 1330043).

Plugins

All NPAPI plugin support except Flash has been dropped (see Plug-in support has been dropped other than Flash for more details). Flash usage is also set to be phased out in the future.

Changes for add-on and Mozilla developers

WebExtensions

New APIs:

  • sessions API
  • topSites API
  • omnibox API
  • runtime.onInstalled and runtime.onStartup events
  • asynchronous event listeners in webRequest
  • bookmarks.onMoved, bookmarks.onCreated, bookmarks.onChanged events
  • _execute_browser_action and _execute_page_action in the commands manifest key
  • match_about_blank in the content_scripts manifest key

Interfaces

  • nsIDroppedLinkHandler.dropLinks method and nsIDroppedLinkItem interface have been added to handle dropping multiple items (bug 92737).

XUL

  • tabbrowser.loadTabs(uris, params) method overload has been added (bug 92737).
  • browser.droppedLinkHandler function signature has been changed (bug 92737).

See also

  • Site Compatibility for Firefox 52

Older versions

  • Firefox 51 for developers
  • Firefox 50 for developers
  • Firefox 49 for developers
  • Firefox 48 for developers
  • Firefox 47 for developers
  • Firefox 46 for developers
  • Firefox 45 for developers
  • Firefox 44 for developers
  • Firefox 43 for developers
  • Firefox 42 for developers
  • Firefox 41 for developers
  • Firefox 40 for developers
  • Firefox 39 for developers
  • Firefox 38 for developers
  • Firefox 37 for developers
  • Firefox 36 for developers
  • Firefox 35 for developers
  • Firefox 34 for developers
  • Firefox 33 for developers
  • Firefox 32 for developers
  • Firefox 31 for developers
  • Firefox 30 for developers
  • Firefox 29 for developers
  • Firefox 28 for developers
  • Firefox 27 for developers
  • Firefox 26 for developers
  • Firefox 25 for developers
  • Firefox 24 for developers
  • Firefox 23 for developers
  • Firefox 22 for developers
  • Firefox 21 for developers

Document Tags and Contributors

Tags: 
  • Firefox
  • Mozilla
  • Release Notes
 Contributors to this page: chrisdavidmills, yisibl, dvincent, Sheppy, Callahad, fscholz, Sebastianz, wbamberg, Ehsan, cpeterson, arai
 Last updated by: chrisdavidmills, Jun 5, 2017, 9:57:28 AM
  1. Add-ons
    1. Firefox developer release notes
    2. Add-ons
    3. Add-on guidelines
    4. Add-on Manager
    5. Extensions
    6. OpenSearch plug-ins
    7. Plugins
    8. Themes
  2. Firefox internals
    1. Firefox developer release notes
    2. Mozilla project
    3. Gecko
    4. JavaScript code modules
    5. JS-ctypes
    6. MathML project
    7. MFBT
    8. Mozilla projects
    9. Preference system
    10. WebIDL bindings
    11. XPCOM
    12. XUL
  3. Building and contributing
    1. Build instructions
    2. Configuring build options
    3. How the build system works
    4. Mozilla source code
    5. Localization
    6. Mercurial
    7. Quality assurance
    8. Using Mozilla code in other projects