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 🙏

© 2026 – Pkg Stats / Ryan Hefner

toggle-kit

v2.0.1

Published

A feature flag library which runs fully on the service itself, without any dependencies.

Readme

Toggle Kit

A customizable feature flag library, which allows you to define properties and flags. Everything runs "locally" on the service (application or API), without any dependencies.

Table of contents

Getting Started

These instructions will help you install the package itself and set the library up. It's gonna guide you through how to add properties, and how to create flags with different conditions.

Installation

This project requires NodeJS (version 20 or later) and NPM. Node and NPM are really easy to install. To make sure you have them available on your machine, try running the following command.

$ npm -v && node -v
10.x.x
v20.x.x

To install the package using NPM, PNPM or yarn, run:

$ npm install toggle-kit
$ pnpm install toggle-kit
$ yarn install toggle-kit

Usage

Setting up feature flag client

First of all we want to create an instance of the feature flag client. We can do this by using the createFeatureFlagClient method, which is gonna return an instance of the feature flag class.

import { createFeatureFlagClient } from "toggle-kit";

const client = createFeatureFlagClient({
  property: {
    // TODO: Add properties
  },
  flags: [
    // TODO: Create flags
  ],
});

Add properties to client

Secondly we want add some attributes we can use in the condition(s) in each of the feature flags we are creating later. You are allowed to use string, number or boolean types as a property

import { createFeatureFlagClient } from "toggle-kit";

const client = createFeatureFlagClient({
  property: {
    userId: "eb10e5c2-e3f4-46fc-a6fd-f2ddba0973fb",
    email: "[email protected]",
    age: 21,
    isAdmin: false,
  },
  flags: [
    // TODO: Create flags
  ],
});

Create feature flag

Last but not least, we want to create our first flag. Here we specify a name for the feature flag and select the type of condition(s) we want to evaluate upon. Then we select the property we want to evaluate, and an expected value.

import { createFeatureFlagClient } from "toggle-kit";

const client = createFeatureFlagClient({
  property: {
    userId: "eb10e5c2-e3f4-46fc-a6fd-f2ddba0973fb",
    email: "[email protected]",
    age: 21,
    isAdmin: false,
  },
  flags: [
    {
      name: "secret-page",
      conditions: [
        {
          type: "equal",
          attribute: "email",
          expectedValue: "[email protected]",
        },
      ],
    },
  ],
});

Evaluate feature flag

When you have finished setting up the feature flag client, and created your flags, you start evaluating flags across your codebase.

import { createFeatureFlagClient } from "toggle-kit";

const client = createFeatureFlagClient({
  property: {
    userId: "eb10e5c2-e3f4-46fc-a6fd-f2ddba0973fb",
    email: "[email protected]",
    age: 21,
    isAdmin: false,
  },
  flags: [
    {
      name: "secret-page",
      conditions: [
        {
          type: "equal",
          attribute: "email",
          expectedValue: "[email protected]",
        },
      ],
    },
  ],
});

const allowSecretPage = client.isEnabled("secret-page");
console.log(allowSecretPage); // False

If the getting started examples isn't enough, you can read more in depth documentation here.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Add your changes: git add .
  4. Commit your changes: git commit -am 'Add some feature'
  5. Push to the branch: git push origin my-new-feature
  6. Submit a pull request 😎

This package only allows the conventional commits on commit messages. This allows semantic-release to analyze the commits. The commit message should be structured as follows:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

The common types can be: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test

Credits

Built With

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

Fredrik Johansen - Initial work - fredrikj31

See also the list of contributors who participated in this project.

License

MIT License (c) Fredrik Johansen and Contributors