npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

ff-diff

v0.2.17

Published

Compare changes in user preference files between two versions of Firefox

Readme

ff-diff

ff-diff is a CLI to compare changes in user preference between two versions of Firefox without messing with your firefox instance.

Features:

  • Compares user.js files from two specified Firefox versions
  • Automatically downloads official Firefox binaries
  • Highlights differences without requiring a local Firefox installation
  • Detect and identify changes required in your user.js

Requirements:

  • Internet connection (for downloading Firefox binaries, only for the diff command)
  • node >= 20 and pnpm
  • tar (only for the diff command)

Installation (pnpm)

pnpm i -g ff-diff

Usage

$ ff-diff
Usage:
  ff-diff clean [--keep version1,version2] [--keep-archives] [--keep-sources]
  ff-diff diff <old-version> <new-version> [--clean-archives] [--clean-sources] [--do-not-print-in-console] [--save-output-in-file] [--compare-userjs path] [--hide-common-changed-values]
  ff-diff default-prefs [--do-not-print-in-console] [--save-output-in-file] [--firefox-path path]
  ff-diff unused-prefs-userjs path [--firefox-path path] [--force-default-profile] [--profile-path] [--firefox-version version]
  ff-diff default-prefs-userjs path [--firefox-path path] [--do-not-print-in-console] [--save-output-in-file] [--force-default-profile] [--profile-path] [--firefox-version version]

Options:
  -v, --version    Print version info and exit
  -h, --help       Print help

Example:

ff-diff diff 137.0 138.0

Develop

Clone this repository:

git clone https://github.com/martabal/ff-diff.git
cd ff-diff
pnpm install --frozen-lockfile

Commands

diff

Run the comparison command:

pnpm run ff-diff diff <old-version> <new-version>

for example:

pnpm run ff-diff diff 137.0 138.0

If you use a custom user.js. You can check if some of the keys are removed/changed with the argument --compare-userjs <path_to_your_userjs>.

[!NOTE]
The script may take some time to run depending on your connection speed.

Example of a generated diffs:

Image of the example

clean

When running the script in development mode with pnpm run dev, Firefox sources and binaries are saved in the current directory. In production mode (i.e., when the script is installed globally using pnpm i -g ff-diff), these files are stored in ~/.ff-diff.

By default, the script keep both the downloaded archives and the extracted source files. To remove them, you can run the script with the --remove-archives and/or --remove-sources arguments. If you want to use specific version you can use:

pnpm run ff-diff clean --keep <version1>,<version2>

If you want to only keep archives you can use pnpm run clean -- --keep <version1>,<version2> --keep-archives or pnpm run clean -- --keep <version1>,<version2> --keep-sources if you want to keep the sources

default-prefs

Get all the default prefs from your firefox instance. You can specify the executable path with --firefox-path path and save the output in .ff-diff/default/<version>-user.js if you add the argument --save-output-in-file.

unused-prefs-userjs

The first argument is the path to your user.js. It will detect all prefs set in your firefox instance which are not used anymore. You can specify the executable path with --firefox-path path. If you add a comment next to your user_pref() entry like // [CUSTOM PREF] or the version the pref has been removed like // [FF136-], ff-diff won't identify that entry as a default entry.

default-prefs-userjs

The first argument is the path to your user.js. It will detect all prefs set in your firefox instance which are already the defaults. You can specify the executable path with --firefox-path path. If you add a comment next to your user_pref() entry like // [DEFAULT: false] or // [DEFAULT: true FF141+] (with or without the version), ff-diff won't identify that entry as a default entry.