Pale Moon: Release notes
General notes:
DiD This means that
a fix is "Defense-in-Depth": It is a fix that does not apply to a
(potentially) actively exploitable vulnerability in Pale Moon, but
prevents future vulnerabilities caused by the same code, e.g. when
surrounding code changes, exposing the problem, or when new attack
vectors are discovered.
v34.0.1 (2026-01-22)
This is a minor release to address some critical issues in the new
milestone.
Changes/fixes:
- Backed out the expat library update for causing memory
inflation and browser hang issues on XUL/XML and SVG files with
particularly large attributes.
- Backed out the change of the Javascript PRNG for causing
intermittent issues and crashes on 32-bit platforms.
Both of these issues are being investigated and can hopefully re-land
with the next development release.
v34.0.0 (2026-01-20)
This is a new milestone release! There are many changes in this
milestone; the most important ones are highlighted here.
New features:
- Our default theme on Windows received a refresh and update.
It should integrate better with Windows 11 now, and be more responsive
to dark accent colors, among other things.
- Implemented
WeakRef. See implementation notes.
- Implemented
URL.canParse().
- Implemented the
inset-block and inset-inline
CSS shorthands.
- Added a preference (
privacy.forgetaboutsite.clearPasswords)
to control clearing of passwords when
using "forget about this site" in the permissions manager, and disabled
clearing of passwords by default, since it was considered unexpected
behavior by the community.
- Changed our JavaScript PRNG to Xoroshiro128++ to make it
more robust while keeping high performance.
Important updates and fixes:
- Re-landed CSS Cascade Layers support after the previous
back-out.
- Re-landed CSS
color-mix support after the
previous back-out. RGB and HSL color spaces only, like previous.
- Implemented viewport overflow propagation logic. See
implementation notes.
- Unprefixed CSS
-moz-appearance; Pale Moon now
accepts the unprefixed CSS appearance keyword. For
compatibility, -moz-appearance and -webkit-appearance
(if enabled) have been retained, although the long-term plan is to
eventually remove the -moz prefixed one, so if you are an extension or
theme developer, please consider switching your CSS to use appearance
without a prefix.
- Fixed an intermittent but fairly prominent crash-to-desktop
due to JavaScript garbage collection on certain modern sites.
- Fixed a crash on sites with certain types of CSP handling.
- Fixed a crash in WASM.
- Updated NSS to 3.90.9 (custom) to pick up several security
and stability fixes.
- Updated ICU to v78.1. This is a major uplift for our
internationalization subsystem, allowing further future developments
for the Internationalization API.
- Updated Emoji support to Unicode 17.
- Updated our expat parser code to a more recent version
(2.7.3), fixing various issues.
- Improved handling and rendering of emoji clusters.
Other changes:
- Added support for building on Sparc64 hardware.
- Added support for building for NetBSD on Alpha.
- Added basic support for building on Mac PowerPC (still a
work in progress).
- Added basic support for building on LoongArch64 hardware (龍芯 CPUs).
- Added support for running on FreeBSD 15.
- Removed automatic coloring of auto-filled login fields as
it would interfere with various browser and system color schemes.
If preferred, this can be reinstated by users with a userContent.css
document or e.g. the Stylem extension by leveraging the :autofill
CSS pseudo-class.
- Restored support for in-process NPAPI plugins, allowing
plugin use on systems where out-of-process is undesirable.
- Improved JavaScript IonMonkey stability on ARM and Mac SoC
hardware.
- Linux GTK builds now always build with gio, and gconf
support has been removed.
- Security issues addressed: CVE-2025-13015, CVE-2026-0879 (DiD), CVE-2026-0880 (DiD), CVE-2026-0889 (DiD), CVE-2026-0883,
CVE-2026-0886 (DiD), and
several others without a CVE designation.
Implementation notes:
- This milestone implements
WeakRef in the
platform in 2 modes, controlled by a new preference javascript.options.weakrefs.
In the default mode (false), WeakRef does not allow page
content to reach into the JavaScript engine to coerce garbage
collection, while still offering the front-end API to web content
(effectively creating a stub). The other mode (true)
allows this coersion and gives potentially malicious web scripting some* control over the JavaScript
garbage collector. It is not
recommended to set this to true for general use.
Only enable this if your situation is running trusted code and
explicitly requires nudging the JavaScript engine to dereference
objects. We resisted having this strongly discouraged and potentially
dangerous API at all, but some sites started to use WeakRef
unconditionally and breaking without the API front-end, so this
compromise was implemented, leaving control in the hands of the user.
* The spec only allows for code to hint/coerce and does not guarantee
if or when dereferencing happens.
- A number of sites (including some top Internet sites) have
started using
overflow-x: clip without overflow-y
on full-document elements (document root/<html> or <body>).
While doing this makes little to no logical sense, our strict
implementation of clip (since 33.9.0, also see the
implementation notes there) would, as a result, create unscrollable
pages.There is some special logic for this (viewport overflow
propagation) described in the relevant drafts which we have now
implemented, updating our overflow: clip implementation
to avoid the previously problematic strict behaviour in these
particular cases.
v33.9.1 (2025-10-21)
This is a bugfix and security update.
Changes/fixes:
- Temporarily backed out the implementation of CSS Cascade
Layers for causing layout issues on websites. This will re-land when
fixed.
- Temporarily backed out the implementation of CSS
color-mix
for causing crashes. This will re-land when fixed.
- Per request from our user base, the blank page with the
Pale Moon logo (default for new tabs) will now have an appropriate
title (for e.g. identification in tab and window title).
- Further improved the "copy as cURL" devtools function.
(CVE-2025-11713)
Implementation notes:
- There was one reported security issue (CVE-2025-11712) that
was investigated but rejected, as adoption of the mitigation for a
non-critical sec issue that requires very specific environments to be
exploited (with considerable blame for the webmaster) would, in fact,
require us to go against some very clear specifications in the HTML
standard. Mozilla adopted this primarily for behavioral parity with
Chrome. Security impact in the real world was considered to be
negligible, and this would have negatively impacted some NPAPI
functionality as well.
- The vast majority of this release cycle's Mozilla security
issues
centered around vulnerabilities due to its multi-process nature and
inter-process communication, which are (of course) not applicable to
Pale Moon (or any other UXP browser). Multi-process remains mainstream
browsers' Achilles' heel, security wise, even years after moving to
that application model. It's ironic that the supposed "big security
advantages" of multi-process have been more than undermined by the
technology itself.
v33.9.0.1 (2025-09-24)
This is a small, critical update to address issues with the browser's
stability and usability due to the 33.9.0 changes to X-Content-Type-Options:
nosniff header parsing.
v33.9.0 (2025-09-23)
This is a major development, bugfix and security release, focusing
primarily on improving web compatibility.
Special thanks to the students from the University of the Philippines
Los Baños for their work on improving CSS in the platform over the
summer!
New features:
- Implemented the CSS4
revert keyword.
- Implemented the
clip keyword for overflow.
See implementation notes.
- Implemented axis-shorthand parsing of
overflow.
This should fix some issues with areas being unscrollable on the web.
- Implemented CSS
color-mix (RGB and HSL color
spaces only).
- Implemented CSS
@supports(selector(<complex
selector>)) syntax.
- Implemented CSS Cascade Layers
@layer support.
- Implemented support for CSS
clip-path:<geometry-box>
without actually supplying a clip path to use. See implementation notes.
- Implemented
overflow-inline and overflow-block
CSS properties.
- Implemented the
:autofill CSS pseudo-class.
Auto-filled fields will now also be styled by default to indicate
autofilling/password manager recall has occurred.
- Implemented the
:focus-visible CSS
pseudo-class.
- Implemented the
prefers-reduced-motion CSS
media query. See implementation notes.
- Implemented a minimal version of the
visualViewport
web API. See implementation notes.
Changes/fixes:
- Un-prefixed CSS
-moz-user-select and aligned
with the user-select CSS4 spec.
- Un-prefixed CSS
-moz-read-only and -moz-read-write
pseudo-classes.
- Improved the handling of
X-Content-Type-Options:
nosniff to align more with the spec and expected behavior on the
web.
- Added support for FFmpeg 7.0/libavcodec 61.
- Fixed a bug where sub-properties of CSS
border-image
would not update when the value they inherit from changes.
- Fixed a bug where
scrollbar-width was
incorrectly treated as an inherited property.
- Fixed an issue where screen/pixel color depth could
potentially be mis-reported on Linux.
- Fixed a potential issue with fontconfig on Linux. We now
explicitly initialize fontconfig on startup.
- Fixed various issues with vpx on PowerPC architectures.
- Fixed issues when building ffvpx on architectures without
assembly support.
- Fixed a memory safety issue in two-position gradient
color-stops code.
- Changed the way
@import rules are processed.
They will now be processed in the order of appearance in the importing
stylesheet.
- Changed how
TypedArray constructors handle
initialization values, aligning with the ECMAScript spec. See
implementation notes.
- Changed how
Cache-control HTTP headers are
parsed if multiple headers are present in a response.
- Made additional improvements to "Copy as cURL" devtools
command.
- Security issues addressed: CVE-2025-10536 and
CVE-2025-10533 DiD.
Implementation notes:
- The
clip keyword allows you to specify
overflow behavior that acts like a "passe-partout". This means any
overflow will be hidden and content unscrollable.
Important note: we have
strictly followed the standard specification here which may result in
issues on some websites if they do not explicitly specify overflow
behavior in both axes when using clip as a keyword. clip,
per the specification, results in unscrollable
hidden content. If the other axis is unset, it will result in visible
overflow that is also unscrollable (no scrollbar or mousewheel
scrolling). Other browsers may
default to scrollable visible overflow, instead. If you are a
webmaster, please double-check if you are specifying overflow correctly
when you are using clip. Because some of clip's
behavior may be unintuitive at first glance, it serves well to always be explicit in both directions what kind of
overflow behavior is desired.
- Pale Moon now supports specifying a CSS
clip-path
with just a geometry box (e.g. border-box) without
defining a path. This should fix some websites displaying fully blank
pages due to webmasters relying on implied "border-following" clipping
when specifying a clip-path this way. Previously, this would result in everything being clipped (which
used to be the explicit behaviour when no path definition was provided).
- The CSS media query
prefers-reduced-motion
can be used by webmasters to provide alternative styling of web pages
when users indicate that they prefer web pages with less visual motion
(e.g. for accessibility considerations for people with vestibular
motion disorders). Pale Moon users can indicate this preference with a
new option in the browser (Preferences -> Advanced -> tab
"General" -> "Prefer reduced visual motion" under Accessibility).
Please note that this option doesn't change how the browser itself
handles e.g. animations or CSS; it is up to the webmaster to make use
of this CSS feature to cater to visitors with this preference indicator.
- We now support a minimal implementation of the
visualViewport
web API. This API provides webmasters with indicators how much of the
visible web pages should be considered "fully visible" to users. This
API is primarily designed to cater to mobile traffic where browsers may
be impaired by e.g. a camera notch in the screen. Since this isn't a
concern on desktop, we always return a fixed (0,0) value for origin and
offset. For other parts of the API, we give back the width/height of
the root scrollframe of web content, while for scale we pass forward
our dpp resolution (usually 1.0).
TypedArray constructors can be passed
initialization values to indicate the initial size of the array to
create. According to the specced behavior, we should accept most values
(anything accepted by ToIndex), even those that make no
sense (e.g. a string or undefined). This has now been
changed to align with that spec and we no longer throw an error in
those cases, and simply return a 0-length typed array instead.
v33.8.2 (2025-08-26)
This is a minor development, security and bugfix release.
Changes/fixes:
- Changed the way the address bar focus is handled when
navigating to a fragment (#hash or anchor) within an existing URL. It
will now re-focus the page the same way a normal address navigation
would (resetting the "editing" state, unless the user is actively
typing).
- Implemented support for the
:focus-visible
CSS pseudo-class.
- Fixed a potential race condition in font tables. DiD
- Fixed potential issues with pthread allocations. DiD
- Fixed an issue in NSS related to the PKCS12 decoder.
- Security issues addressed: CVE-2025-9181 and several others
that do not have a CVE number.
v33.8.1.2 (2025-08-04)
This is a bugfix update addressing issues with NPAPI plugins not
working in v33.8.1.1.
For safety reasons, plugins are now also by default set to "ask to
activate". It is recommended you keep this default setting and only
allow plugins to be activated specifically on the websites you intend
to use them.
v33.8.1.1 (2025-07-30)
This is an important bugfix update.
Changes/fixes:
- Fixed a browser crash in the new code introduced in 33.8.1
around
<object> restrictions.
- Fixed a regression in the styling of the address bar
drop-down making links unreadable when highlighted.
v33.8.1 (2025-07-29)
This is a bugfix and security release.
Changes/fixes:
- Pale Moon no longer accepts nameless cookies. See
implementation notes.
- Improved the "copy as curl" command in devtools further,
partially rolling back the DiD changes in previous versions since we
aren't offering cross-platform commands and it caused potential issues
with overzealous escaping.
- Fixed a potential use-after-free scenario in the CSS parser.
- Fixed uninitialized use of fontconfig scenarios for
Linux/GTK.
- Adjusted CSP URI reporting to more closely match the
current spec and common browser behavior.
- Fixed a potential crash in font handling.
- Adjusted the size of WASM compiled table size limits to
match V8/Gecko.
- Increased restrictions on the types of data loads
<object>
elements are allowed to trigger, to match the fetch spec more closely.
- Fixed build issues for PPC architectures.
- Security issues addressed: CVE-2025-8031, CVE-2025-8028 (DiD), CVE-2025-8037 (and
related), CVE-2025-8029, and several others that do not have a CVE
number.
Implementation notes:
- From this version forward we no longer accept nameless
cookies. If a cookie has no name and starts with an equal sign, it is
outright rejected. If a cookie consists only of a string with no equal
sign, it is interpreted as a valueless cookie with the name set to the string. This
departs from our inherited Mozilla behavior where this was previously
treated as a nameless cookie with the string as the value.
RFC 6265 forbids cookies without an equal sign (§5.2 step 2), but
browsers accept them anyway for web compatibility reasons (poor web
design). Moreover, §5.2 step 5 explicitly
forbids nameless cookies.
Valueless names also make more sense in web context: Set-cookie:
itself supports secure and httponly as
valueless attributes, and HTML supports valueless attributes as well.
Our new behavior therefore makes more logical sense, is closer to the
spec and general principles, aligns with webkit/Safari and solves a
whole class of potential sec bugs like CVE-2025-8037. Apologies if this
causes web compat issues, but it's the sane thing to do when
encountering non-compliant cookies.
v33.8.0 (2025-07-01)
This is a major development, bugfix and security release.
Changes/fixes:
- Pale Moon now includes all non-ubiquitous image and media
types in the navigation
Accept: header, as discussed in
the relevant
whatwg fetch spec issue.
- Implemented
.toJSON() for DOMRect,
DOMPoint and DOMMatrix.
- Added a base implementation of the
SVGGeometryElement
API. This is currently limited to .pathLength, getTotalLength()
and getPointAtLength(distance)for SVG paths.
- Added a base-64/character validity grammar check for CSP
nonces.
- Enabled JPEG-XL support unconditionally.
- Improved desktop ARM media capabilities.
- Improved our handling of CSP checks (multiple improvements
surrounding loading principal checks).
- Added several Mac-specific file types to be treated as
executables.
- Updated the emoji font to Unicode 16.0.0. We can now
finally have the "tired dev" emoji !
- Updated SQLite library to 3.50.1.
- Updated NSS to 3.90.7.1 to fix some issues with some sites
due to prior root certificate updates.
- Updated code dealing with internal URL rewrites for Youtube.
- Changed the Firefox compatibility mode version to 128.
- Changed how
.click() on <A>
elements is handled. See implementation notes.
- Changed DOMMatrix's
rotate() and rotateSelf()
functions to accept 3D rotation instead of 2D, per spec.
- Changed CSS parameter animation to round values instead of
truncating them, per spec.
This affects all integer properties (e.g. z-order) and
font-stretching.
- Changed HTML element attribute parsing to additionally
escape
< and > characters, per spec.
- Fixed a regression in XUL
<tree>
elements
where column selection would omit the first-defined column.
- Fixed a minor issue in
DOMSVGPoint finity
checks.
- Fixed some minor platform issues and updated Mac SDK checks.
- Fixed an issue when device contrast values would be unset
in Mac or Windows+DirectWrite.
- Fixed an issue in 33.7.2's updated "Copy as curl" feature
which could potentially mangle URLs.
- Fixed an issue with FontFaceSet loading.
- Removed support for very old libavcodec versions (before
v58).
- Removed the CSP
referrer
directive as it's no longer in the spec.
- Removed preloading of a number of media libraries on
Windows. See implementation notes.
- Removed the allowance of
<A> in image
maps. Only <area> is now supported.
- Removed several obsolete and unused preferences from
about:config.
- Removed obsolete NPN preferences and calls. NPN has long
since been replaced by ALPN.
- Removed obsolete
SVGZoomEvent interface and
handlers.
- Security issues addressed: CVE-2025-6429, CVE-2025-6424 (DiD) and CVE-2025-6426.
Implementation notes:
- Normally, when a script issues a simulated click on an
element, that click is issued on the document the element is in.
Unfortunately there has been a perceived bug in mainstream browsers
where this didn't happen on anchors (
<A>,
hyperlinks) and the browser would navigate even if that anchor was not
actually in a web page document (i.e. just created as a reference in
scripting). This was eventually made an accepted behaviour in the
specification as an exception,
describing this bug as expected behavior. Pale Moon has now changed how
it handles .click() events on anchors to follow this
behavior. This primarily impacts some select "download button" behavior
on the web where this behavior quirk for anchors is relied on.
- Previously, Pale Moon would preload a number of media .dll
files into the browser, causing resource use even if there was no media
to be decoded or played back in the browsing session yet. This was
primarily done in inherited Mozilla code for EME to work. Since we
don't support in-browser DRM, this preloading is wholly unnecessary and
has been removed.
You can find the release notes for previous
releases of Pale Moon on
the Archived Release
Notes page.
|