files/en-us/mozilla/firefox/releases/132/index.md
This article provides information about the changes in Firefox 132 that affect developers. Firefox 132 was released on October 29, 2024.
No notable changes
auto value to bring it inline with {{CSSXRef("text-underline-position")}} (Firefox bug 1919658).-moz-user-modify CSS property has been removed. This property has been deprecated in favor of the contenteditable global attribute. (Firefox bug 1920118).(?ims-ims:...) regular expression modifiers allow you to make changes to only take effect in a specific part of a regex pattern. (Firefox bug 1913752 & Firefox bug 1899813).text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8.
This removes image MIME types that sometimes caused compatibility issues, and aligns with the fetch specification and Safari. (Firefox bug 1917177).network.http.http2.allow-push now set to false.
This feature is no longer supported by any other major browser, and the implementation may be completely removed in a future release. (Firefox bug 1915848).silent: true is specified in the {{domxref("Notification.Notification", "Notification()")}} constructor, the resulting system notification is issued without accompanying sounds or vibrations, regardless of device settings (Firefox bug 1809028).fetchpriority attribute of the {{htmlelement("link")}}, {{htmlelement("script")}}, and {{htmlelement("img")}} elements, the fetchPriority property of the {{domxref("HTMLLinkElement")}}, {{domxref("HTMLScriptElement")}}, and {{domxref("HTMLImageElement")}} interfaces, the options.priority parameter passed to the Request() constructor, and the fetchpriority directive in the HTTP {{httpheader("Link")}} header, are now supported. These allow developers to provide a hint about the relative priority for fetching a particular resource compared to other resources of the same type, and can be used alongside other ways of setting the priority, such as preloading. (Firefox bug 1854077).microphone and camera permissions can now be used in the {{domxref("Permissions.query()")}} method to test whether access to the corresponding hardware has been granted, denied, or still requires user approval. (Firefox bug 1609427 and Firefox bug 1915222).requestVideoFrameCallback() registers a callback function that runs when a new video frame is sent to the compositor. Developers can use this function to perform operations on each video frame, enabling more efficient painting to a canvas, video analysis, synchronization with external audio sources, and so on. The method returns a callback handle that can be passed to cancelVideoFrameCallback() in order to cancel the outstanding callback request. (Firefox bug 1919367, Firefox bug 1800882).browsingContext.setViewport were likely to fail due to an AbortError, they will now be retried a few times to avoid such issues. (Firefox bug 1854942, Firefox bug 1918287, Firefox bug 1918672, Firefox bug 1921756)browsingContext.contextCreated event is now correctly emitted for lazy-loaded frames. Previously the event would only be emitted when the iframe actually started loading its content. (Firefox bug 1878166)requestTime from network event timings should now be more accurate and really match the time where the request actually started. (Firefox bug 1922390)These features are newly shipped in Firefox 132 but are disabled by default. To experiment with them, search for the appropriate preference on the about:config page and set it to true. You can find more such features on the Experimental features page.
Cookie Store API: dom.cookieStore.enabled.
The Cookie Store API is a modern, {{jsxref("Promise")}}-based method of managing cookies that does not block the event loop and does not rely on {{domxref("Document")}} (it can therefore be made available to service workers). As of Firefox 132, a subset of the Cookie Store API has been implemented. (Firefox bug 1800882). This includes:
CookieStore interface, but partitioned is not included in return values.CookieChangeEvent interface, excluding partitioned properties.Window.cookieStore property.ServiceWorkerGlobalScope.cookieStore property.The fetch() keepalive option: dom.fetchKeepalive.enabled.
The global {{domxref('Window.fetch','fetch()')}} method has a keepalive initialization option. When keepalive is set to true, the browser will not abort the associated request if the page that initiated it is unloaded before the request is complete.
This enables a fetch request to function as an alternative to {{domxref("Navigator.sendBeacon()")}} when sending analytics at the end of a session, which has some advantages (you can use HTTP methods other than POST, customize request properties, and access the server response via the fetch {{jsxref("Promise")}} fulfillment). It is also available in service workers. (Firefox bug 1906952).
CloseWatcher: <code>dom.closewatcher.enabled</code>.
The {{domxref("CloseWatcher")}} interface enables developers to implement components that can be closed using device-native mechanisms, in the same way as built-in components. For example, on Android you can close a dialog using the back button: this interface allows you to similarly close a custom sidebar. (Firefox bug 1888729).
Promise.try(): <code>javascript.options.experimental.promise_try</code>. {{jsxref("Promise.try()")}} is a convenience method that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a {{jsxref("Promise")}} so that promise semantics (e.g., {{jsxref("Promise.then", ".then()")}}, {{jsxref("Promise.catch", ".catch()")}}) can be used to handle it (Firefox bug 1905364).
JSON.parse with source: <code>javascript.options.experimental.json_parse_with_source</code>. The JSON.parse source text access proposal extends JSON.parse behavior to provide features to mitigate issues around loss of precision when converting values such as large floats and date values between JavaScript values and JSON text (Firefox bug 1913085, Firefox bug 1925334). Specifically, the following features are now available:
JSON.parse() reviver parameter context argument: Provides access to the original JSON source text that was parsed.JSON.isRawJSON(): Tests whether a value is an object returned by JSON.rawJSON().JSON.rawJSON(): Creates a "raw JSON" object containing a piece of JSON text, which can then be included in an object to preserve the specified value when that object is stringified.