Why Firefox Disables Custom CSS Stylesheets by Default

In Mozilla Firefox, customizing the browser's interface or web page appearances using userChrome.css and userContent.css requires manually setting the toolkit.legacyUserProfileCustomizations.stylesheets preference to true. Introduced in Firefox 69, this requirement was implemented primarily to improve browser startup performance for the vast majority of users who do not use custom stylesheets, while also reducing technical support overhead and preventing broken interfaces after routine browser updates.

1. Faster Startup Performance

The primary reason Mozilla disabled custom CSS loading by default is to speed up how fast Firefox launches. Prior to version 69, Firefox had to search the hard drive for a chrome directory and check for the existence of userChrome.css and userContent.css every single time the browser started.

Checking the file system (Disk I/O) during startup creates a performance bottleneck, especially on older mechanical hard drives. Because telemetry data showed that less than 1% of Firefox users actually utilized custom stylesheets, Mozilla decided to bypass this check by default. By requiring the about:config toggle, Firefox avoids unnecessary file system checks for the vast majority of its user base, resulting in a faster startup time.

2. Preventing Broken User Interfaces

Firefox undergoes rapid development, with new versions releasing every few weeks. The browser’s user interface is built using standard web technologies (HTML, CSS, and JavaScript), and Mozilla engineers frequently change the internal structure, class names, and IDs of interface elements to add features or improve performance.

userChrome.css relies on targeting these specific internal elements. When Mozilla updates the browser's underlying code, custom stylesheets often become incompatible. This can lead to severe visual glitches, missing buttons, or a completely unusable browser window. By hiding the feature behind a configuration flag, Mozilla ensures that only advanced users—who understand how to troubleshoot and update their own CSS—enable it.

3. Reducing Technical Support Overhead

Before this toggle existed, users would frequently follow online tutorials to alter their browser's appearance, copy and paste CSS code into their profile folder, and eventually forget they had done so. Months or years later, a Firefox update would clash with that forgotten CSS file and break the browser's layout.

Users would then report these visual issues to Mozilla as Firefox bugs, flooding support forums and bug trackers. Requiring users to explicitly flip a preference containing the word "legacy" serves as a clear warning that the feature is not officially supported and is used at their own risk.

4. Mitigating UI Spoofing Risks

While performance and maintenance are the main drivers, disabling stylesheets by default also provides a minor security benefit. userChrome.css has the power to completely alter the appearance of the browser, including hiding security indicators, the address bar, or warning messages. Requiring a preference change in about:config adds an extra layer of protection against malicious scripts or third-party programs attempting to silently drop a modified CSS file into a user's profile folder to spoof the browser interface.