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

@shipeasy/sdk

v9.0.2

Published

Shipeasy SDK — feature gates, runtime configs, experiments, and metrics for the Shipeasy hosted service.

Readme

@shipeasy/sdk (TypeScript)

Tests npm node

The Shipeasy SDK for feature flags, dynamic configs, kill switches, A/B experiments, metric tracking, and SSR/i18n — for Node, Next.js, and Cloudflare Workers. Server-key only on the server; the browser uses its own client key.

📚 Full documentation: https://shipeasy-ai.github.io/sdk/ — also browsable under docs/. This README is generated from those docs.

🤖 Using an AI agent?

This SDK ships an installable agent skill — a copy-paste-ready guide to configure() + new Client(user), testing, experiments, error reporting, and more, with links the agent can pull for deeper docs:

  • Skill: docs/skill/SKILL.md · raw: https://shipeasy-ai.github.io/sdk/skill/SKILL.md
  • Install it (ships with the package — no network): npx shipeasy-skill install.claude/skills/shipeasy-typescript/SKILL.md (or via the Shipeasy CLI: shipeasy docs skill --sdk typescript --install)

Humans: you can copy that skill straight into your own project's agent skills directory (e.g. .claude/skills/shipeasy-typescript/SKILL.md) so your coding agent always uses the correct Shipeasy patterns. Every doc page and snippet is also fetchable by URL — start from the manifest at https://shipeasy-ai.github.io/sdk/manifest.json.

Install

npm install @shipeasy/sdk
# or
pnpm add @shipeasy/sdk
# or
yarn add @shipeasy/sdk

Per-framework setup (Next.js / Express / Cloudflare Workers) and the anon-id middleware are on the Installation page.

Quickstart — configure() once, then new Client(user) per request

import { configure, Client } from "@shipeasy/sdk/server"; // or /client

configure({ apiKey: process.env.SHIPEASY_SERVER_KEY!,
            attributes: (u: MyUser) => ({ user_id: u.id, plan: u.plan }) });

const flags = new Client(currentUser);
if (flags.getFlag("new_checkout")) { /* ship it */ }

Constructing new Client(user) before configure() throws.

Documentation

| Page | What | | --- | --- | | Overview | The configure() + new Client(user) model. | | Installation | Install, frameworks (Next / Express / Workers), configure() wiring. | | Configuration | Keys, attributes, one-shot vs poll, every option. | | Feature flags | getFlag, getFlagDetail, defaults. | | Dynamic configs | getConfig, typed decode, defaults. | | Kill switches | getKillswitch, named switches. | | Experiments | getExperiment, logExposure, track. | | Internationalization | SSR bootstrap + i18n loader tags. | | Error reporting | see() structured error reporting. | | Testing | configureForTesting / configureForOffline, overrides. | | OpenFeature | ShipeasyProvider (OpenFeature server provider). | | react native devtools | The SDK ships a shake-to-open devtools overlay for React Native / Expo apps at feature… | | browser devtools | The in-browser devtools overlay is delivered as a hosted script, not as an npm dependen… | | Advanced | Anon-id middleware, private attributes, sticky bucketing, SSR. |

Copy-paste snippets live under docs/snippets/ (release · metrics · i18n · ops); an installable agent skill is at docs/skill/SKILL.md.

Testing

For unit tests, swap the live configure() for configureForTesting() — a drop-in sibling with no network, ever (no SDK key required). It replaces the active configuration with a network-free engine, seeds the values your code should see, and is read through the ordinary new Client(user). In this mode the rules never fetch, track() is a no-op, assign() logs no exposure, and telemetry is off — your tests never touch the network.

import { configureForTesting, Client, clearOverrides } from "@shipeasy/sdk/server"; // or /client

// Seed everything the code under test should see (no key, no network):
configureForTesting({
  flags: { new_checkout: true },
  configs: { upload_limits: { max_uploads: 50 } },
});

const flags = new Client({ user_id: "u_1" }); // construct once per callsite
flags.getFlag("new_checkout");                 // true
flags.getConfig("upload_limits");              // { max_uploads: 50 }

clearOverrides(); // reset every seeded override back to the empty-blob default

More — the on-the-spot override helpers and a working example snapshot file — on the Testing page.

License

See LICENSE. Evaluation is tested against the cross-language MurmurHash3 vectors in Rollouts & bucketing.