Firefox 155 note de version pour les développeurs
Cet article présente les informations concernant les changements de Firefox 155 qui concernent les développeur·euse·s. Firefox 155 est sorti le 1er septembre 2026 (angl.).
Changements pour les développeur·euse·s web
>Outils de développement
- Les boutons d'émulation des fonctionnalités média dans la vue Règles (angl.) sont désormais regroupés dans un panneau d'émulation dédié, qui s'ouvre en utilisant le bouton
@. Le panneau ajoute également l'émulation de la fonctionnalité médiaprefers-reduced-motion. (bogue Firefox 1692434 (angl.) et bogue Firefox 1477920 (angl.)). - L'observateur JSON (angl.) ouvre désormais les documents JSON Lines (angl.) (NDJSON), qui sont servis en tant que
application/jsonlines,application/x-ndjsonoutext/jsonl, ou qui ont une extension de fichier.jsonl. Chaque ligne est analysée séparément dans sa propre entrée repliable, étiquetée avec le numéro de ligne dont elle provient, et une ligne qui échoue à être analysée est signalée en incise sans affecter le reste du document. (bogue Firefox 2055774 (angl.), bogue Firefox 2060972 (angl.) et bogue Firefox 2060529 (angl.)). - Un raccourci clavier a été ajouté pour désactiver les points d'arrêt dans le Débogueur. (bogue Firefox 1642578 (angl.)).
HTML
Pas de changements notables.
CSS
- La fonction CSS
attr()peut désormais être utilisée dans n'importe quelle propriété CSS, et pas seulement danscontent. Cela permet de piloter le style à partir des attributs HTML, par exemplewidth: attr(data-size px), sans utiliser JavaScript. Les valeurs<attr-type>(y compris les identificateurs d'unités tels quepxets), les valeurs de repli et les attributs avec espace de noms sont désormais pris en charge. Vous pouvez également utiliserattr()dans les requêtes de style de conteneur. (bogue Firefox 2038940 (angl.)). - La fonction CSS
progress()est désormais prise en charge. Elle retourne un nombre (<number>) représentant l'avancement d'une valeur entre une valeur de départ et une valeur de fin. Le résultat peut ensuite être utilisé pour calculer d'autres valeurs, par exempleopacity: calc(0.4 + progress(100cqw, 300px, 900px) * 0.6). (bogue Firefox 2047345 (angl.)). - La fonction CSS
alpha()est désormais prise en charge. Elle permet de passer une couleur et d'obtenir la couleur avec une valeur alpha (transparence) différente, en laissant les autres composants de la couleur inchangés. À l'intérieur de la fonction, vous pouvez utiliser le mot-cléalphapour faire référence au canal alpha de la couleur d'origine, par exemplealpha(from var(--brand) / calc(alpha * 0.5)). (bogue Firefox 2059738 (angl.) et bogue Firefox 2059988 (angl.)). - La propriété CSS
font-widthest désormais prise en charge, ainsi que le descripteurfont-widthde@font-faceet la propriétéCSSStyleDeclaration.fontWidth. Il s'agit du nouveau nom de la propriétéfont-stretch, qui continue de fonctionner comme alias hérité. Notez que l'énumération des styles calculés retourne désormaisfont-widthplutôt quefont-stretch. (bogue Firefox 1911075 (angl.)).
JavaScript
- Les méthodes statiques
Promise.allKeyed()etPromise.allSettledKeyed()sont désormais prises en charge, comme défini dans la proposition du dictionnaire TC39 await (angl.). Elles se comportent commePromise.all()etPromise.allSettled(), respectivement, sauf qu'elles prennent un objet de promesses au lieu d'un itérable. Elles se complètent avec un objet ayant les mêmes clés, de sorte que les résultats peuvent être lus par nom plutôt que par position. (bogue Firefox 2057270 (angl.)). - Un module qui ne parvient pas à se charger en raison d'une erreur réseau ou d'un type MIME incorrect n'est plus mis en cache comme échec, de sorte que l'importation du même spécificateur de module peut réussir une fois que le serveur se rétablit.
Cela s'applique aux modules JavaScript, JSON, CSS et texte, chargés soit statiquement, soit avec import dynamique, à la fois dans les fenêtres et les travailleurs (workers en anglais).
De même,
<link rel="modulepreload">déclenche désormais l'évènementloadplutôt queerrorpour les modules qui ont déjà été récupérés ou qui sont en cours de récupération, et un script de module se charge désormais même si unmodulepreloadprécédent du même URL a échoué à sa vérification d'intégrité. (bogue Firefox 2055211 (angl.) et bogue Firefox 2052949 (angl.)).
HTTP
- Firefox utilise désormais Happy Eyeballs version 3 (angl.) lors de l'établissement de connexions, en mettant en concurrence les adresses IPv6 et IPv4 afin que la configuration de la connexion ne soit pas retardée par une famille d'adresses inaccessible. Notez que cela n'est actuellement pris en charge que sur certaines plateformes. (bogue Firefox 2062892 (angl.)).
- La négociation de version de QUIC est désormais prise en charge, permettant aux connexions HTTP/3 de négocier la version 2 de QUIC. (bogue Firefox 2059947 (angl.)).
APIs
- Diverses fonctionnalités de l'API WebTransport sont désormais prises en charge :
- Les groupes d'envoi permettent de regrouper les flux qui doivent partager la bande passante et de prioriser les flux les uns par rapport aux autres au sein d'un groupe.
Vous pouvez en créer un en utilisant
WebTransport.createSendGroup(). Passez ensuite leWebTransportSendGroupretourné dans l'optionsendGroupdeWebTransport.createBidirectionalStream()ouWebTransport.createUnidirectionalStream(). (bogue Firefox 2007165 (angl.)). - La méthode
WebTransport.exportKeyingMaterial()dérive le matériel de clé à partir de la connexion TLS sous-jacente pour un label et un contexte donnés, de sorte que les deux points de terminaison peuvent obtenir le même secret partagé. Cela permet, par exemple, à une poignée de main au niveau de l'application de détecter les attaques MITM dans le cas où une application se connecte à un pair qui ne possède qu'un certificat auto-signé. (bogue Firefox 2007200 (angl.)). - La méthode
WebTransportDatagramDuplexStream.createWritable()retourne un fluxWebTransportDatagramsWritablepour l'envoi de datagrammes, avec les propriétéssendGroupetsendOrderpour le prioriser par rapport aux autres émetteurs. (bogue Firefox 2007174 (angl.)). - Le constructeur
WebTransport()accepte une optionprotocolslistant les protocoles d'application pris en charge par le client. Le protocole sélectionné par le serveur, le cas échéant, est retourné dans la propriétéWebTransport.protocollorsque la connexion est établie et que le protocoleWebTransport.readyest rempli. (bogue Firefox 2007150 (angl.)). - La propriété
WebTransport.drainingindique lorsque le serveur a demandé au client de commencer une fermeture en douceur de la session. (bogue Firefox 2007160 (angl.)).
- Les groupes d'envoi permettent de regrouper les flux qui doivent partager la bande passante et de prioriser les flux les uns par rapport aux autres au sein d'un groupe.
Vous pouvez en créer un en utilisant
- L'API WebGPU prend désormais en charge la fonctionnalité
dual-source-blendingsur le bureau, qui peut être demandée dansGPUAdapter.requestDevice(). Cela permet de définirsrc1,one-minus-src1,src1-alphaetone-minus-src1-alphadans les propriétéssrcFactoretdstFactordecreateRenderPipeline()etcreateRenderPipelineAsync(). L'extension WGSLdual_source_blendingest également prise en charge. (bogue Firefox 1924328 (angl.)).
DOM
- L'interface
SVGAElementimplémente désormais la composanteHyperlinkElementUtils(angl.). En conséquence, les éléments SVG<a>exposent les mêmes propriétés de composant URL que les éléments HTML<a> ,:protocol,username,password,host,hostname,port,pathname,searchethash. La propriété en lecture seuleoriginest également exposée. (bogue Firefox 2058578 (angl.)). - Les interfaces
SVGNumberList,SVGPointList,SVGStringListetSVGTransformListprennent désormais en charge les accesseurs indexés. Cela signifie que vous pouvez remplacer un élément de la liste en utilisant la notation entre crochets, par exempletransformList[0] = newTransform, au lieu d'appelerreplaceItem(). L'interfaceSVGLengthListprend déjà en charge les accesseurs indexés. (bogue Firefox 2059426 (angl.)). - La méthode
SVGGraphicsElement.getBBox()prend désormais en compte son argumentoptions, avec les propriétésfill,stroke,markersetclipped. Cela permet d'obtenir une boîte englobante qui tient compte du trait, des marqueurs et du découpage appliqués à un élément, plutôt que seulement de sa géométrie de remplissage. (bogue Firefox 2060873 (angl.)). - Les éléments qui ne sont pas rendus, tels que ceux à l'intérieur de
<mask>,<clipPath>,<marker>,<symbol>et<defs>, retournent désormais un rectangle vide depuisElement.getBoundingClientRect()et une liste vide depuisElement.getClientRects(), au lieu de signaler une boîte qui n'a jamais été peinte. (bogue Firefox 2061646 (angl.)).
Média, WebRTC et Web Audio
- L'évènement
errordéclenché sur un objetRTCDataChannelpeut désormais signalersctp-failuredans sa propriétéerror.errorDetailsi le transport est fermé en raison d'une erreur. De plus,RTCErroretRTCErrorEventsont désormais disponibles dans les travailleurs dédiés (cette exposition n'est pas encore dans la spécification). (bogue Firefox 1814460 (angl.)). - La propriété
RTCPeerConnection.sctpretourne désormais unRTCSctpTransportaux moments requis par la spécification, y compris dans l'état de signalisationhave-remote-offer, où elle était auparavantnull. Le transport atteint désormais également les étatsconnectedetclosed, et ses propriétésmaxChannelsetmaxMessageSizesont correctement renseignées. (bogue Firefox 2019361 (angl.) et bogue Firefox 2056412 (angl.)). - Les extensions d'en-tête RTP sur deux octets sont désormais prises en charge, de sorte que les extensions d'en-tête avec un identifiant de 15 ou plus peuvent être négociées au lieu de provoquer une
OperationError. (bogue Firefox 2014357 (angl.)). - La propriété
selectedCandidatePairChangesest désormais signalée dansRTCTransportStats. (bogue Firefox 2055911 (angl.)). - Les statistiques
transportretournées parRTCPeerConnection.getStats()sont désormais correctes avant la négociation, c'est-à-dire aprèssetLocalDescription()mais avant qu'une description distante n'ait été définie. La propriétédtlsRoleest désormais signalée commeunknownjusqu'à ce que la poignée de main DTLS sélectionne un rôle, alors qu'auparavant elle n'était pas signalée du tout (bogue Firefox 2053296 (angl.)), et la propriétéiceStatecommence désormais parnewplutôt quechecking, ce qui indiquait à tort que les vérifications de connectivité étaient déjà en cours (bogue Firefox 2053297 (angl.)).
WebAssembly
- La section d'importation compacte (angl.) du format binaire est désormais prise en charge, ce qui réduit la taille des modules ayant de nombreux imports. (bogue Firefox 2062344 (angl.)).
- La proposition d'arithmétique large (angl.) est désormais prise en charge, ajoutant les instructions
i64.add128,i64.sub128,i64.mul_wide_seti64.mul_wide_u. Celles-ci produisent des résultats sur 128 bits à partir d'opérandes sur 64 bits, ce qui devait auparavant être émulé dans le code compilé en WebAssembly, comme dans les bibliothèques de grands nombres et de cryptographie. (bogue Firefox 2062374 (angl.)).
Conformité WebDriver (WebDriver BiDi, Marionette)
Général
- Désactivation du panneau de téléchargement pour empêcher le document actuel de perdre la sélection lorsqu'un téléchargement commence. (bogue Firefox 2035439 (angl.)).
- Correction de l'API Actions afin que l'évènement
dblclicksoit déclenché lors d'un double-clic tout en maintenant la toucheCtrlenfoncée sur les plateformes non macOS. (bogue Firefox 2058556 (angl.)).
WebDriver BiDi
- Mise à jour du module spécifique à Mozilla
moz:debuggingpour ne plus dépendre de la même API de boucle d'évènements imbriquée que les outils de développement, ce qui empêche les conflits lorsque WebDriver BiDi et DevTools sont utilisés en parallèle. (bogue Firefox 2041335 (angl.)). - Correction de la commande
browsingContext.reloadqui échouait lorsqu'elle était utilisée pour des cadres. (bogue Firefox 2030909 (angl.)). - Suppression de la prise en charge de l'argument
contextsdans la commandesession.unsubscribe. Désormais, les clients ne peuvent se désabonner que par nom d'évènement ou par ID d'abonnement. (bogue Firefox 1988723 (angl.)).
Changements pour les développeur·euse·s d'extensions
>Fonctionnalités web expérimentales
Ces fonctionnalités sont disponibles dans Firefox 155 mais sont désactivées par défaut.
Pour les tester, recherchez la préférence appropriée dans la page about:config et définissez-la sur true.
Vous pouvez en trouver d'autres sur la page Fonctionnalités expérimentales.
-
Animations pilotées par le défilement :
layout.css.scroll-driven-animations.enabledLes animations pilotées par le défilement permettent à une animation de progresser en fonction de la position de défilement d'un conteneur de défilement, ou de la position d'un élément à l'intérieur de son conteneur de défilement, plutôt qu'en fonction du temps. Cette préférence couvre les propriétés
scroll-timelineetview-timelineainsi que leurs formes longues, y compris la propriétéview-timeline-inset, ainsi que les notations fonctionnellesscroll()etview(). Dans cette version, la forme longueview-timeline-inseta été ajoutée au raccourciview-timeline. (bogue Firefox 2046602 (angl.)). -
Modèle d'objets typés CSS Niveau 1 :
layout.css.typed-om.enabledL'API de modèle d'objets typés CSS expose les valeurs CSS sous forme d'objets JavaScript typés plutôt que de chaînes de caractères, ce qui simplifie la manipulation du CSS depuis le script. (bogue Firefox 1278697 (angl.)).
-
Prise en charge des requêtes
at-rule():layout.css.supports.at-rule.enabledLa fonction
at-rule()dans la règle@supportspermet de tester si le navigateur prend en charge une règle CSS donnée, par exemple@supports at-rule(@scope). (bogue Firefox 2060754 (angl.)). -
L'API Audio Session :
dom.audio_session.enabledL'API Audio Session permet à un site de déclarer comment son audio doit se comporter par rapport à d'autres audios en cours de lecture sur l'appareil, par exemple s'il doit se mélanger avec, s'atténuer ou interrompre les autres audios. (bogue Firefox 2055710 (angl.)).
-
Les formes de base CSS autorisent les mots-clés
farthest-corneretclosest-corner:layout.css.ellipse-corners.enabledLes mots-clés
farthest-corneretclosest-cornerpeuvent être utilisés pour définir les valeurs des rayons desellipse()etcircle()formes de base CSS. (bogue Firefox 2037673 (angl.)). -
Tronquer le contenu avec
line-clamp:layout.css.line-clamp.enabledLa propriété CSS
line-clampfonctionne sans le préfixe fournisseur-webkit-, et prend désormais également en charge le mot-cléno-ellipsiset les valeurs<string>pour choisir ce qui est affiché là où le texte est tronqué. (bogue Firefox 2042999 (angl.) et bogue Firefox 2043000 (angl.)). -
Registres d'éléments personnalisés à portée limitée :
dom.scoped-custom-element-registries.enabledUn
CustomElementRegistrypeut être construit et passé àElement.attachShadow(), de sorte qu'une racine d'ombre puisse définir des éléments personnalisés qui ne sont pas en conflit avec ceux définis dans le registre global. (bogue Firefox 2018900 (angl.)). Cette version ajoute également l'attribut globalcustomelementregistry, pour sélectionner le registre auquel un élément est associé à partir du balisage. (bogue Firefox 2029965 (angl.)). -
Assertions de limite de tampon dans les expressions rationnelles : (Nightly seulement)
javascript.options.experimental.regexp_buffer_boundariesLa proposition TC39 sur les limites de tampon des expressions rationnelles (angl.) ajoute les assertions
\A,\zet\Zaux expressions rationnelles. Celles-ci correspondent au début ou à la fin de l'ensemble de l'entrée, que le drapeaumsoit défini ou non. (bogue Firefox 2047706 (angl.)). -
Valeur
border-areapourbackground-clip:layout.css.background-clip.border-area.enabledLa valeur
border-areade la propriété CSSbackground-clipdécoupe l'arrière-plan jusqu'à la zone peinte par la bordure de l'élément, ce qui permet d'utiliser un dégradé ou une image comme bordure. (bogue Firefox 2045230 (angl.)).