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

@matb85/abcd

v0.1.4

Published

File-convention A/B testing SDK for Expo and React Native

Readme

@matb85/abcd

File-convention A/B testing and Feature Flags for Expo and React Native applications.

@matb85/abcd turns sibling React components (Header.A.tsx and Header.B.tsx) into a single A/B experiment entry. At runtime, Metro serves a cache-backed proxy that deterministically assigns each user to variant A or B, supports local and remote overrides, and tracks exposure events to your analytics.

Installation

Manual install is optional; npx @matb85/abcd init alone is enough for first-time setup.

Steps for manual installation:

npm install @matb85/abcd

Initialize your project with the abcd CLI:

npx @matb85/abcd init

Quick Example

Wrap your root app with ABTestProvider:

import { ABTestProvider } from "@matb85/abcd";

export default function Root() {
  return (
    <ABTestProvider userId="user-123">
      <App />
    </ABTestProvider>
  );
}

Create a new experiment:

npx @matb85/abcd new --name PromoBanner --component src/components/Header.tsx --metric cta_click

This creates:

  • src/components/Header.A.tsx (copied from Header.tsx with "abcd-PromoBanner"; directive)
  • src/components/Header.B.tsx (scaffolded B variant)
  • Header.tsx is deleted locally so Metro serves the generated proxy transparently.

Run abcd types to build proxy code and .abcd/experiments.generated.ts.

Features

  • ⚛️ Zero JSX refactoring: standard imports resolve to the active variant.
  • 🎯 Deterministic bucketing: MurmurHash3 algorithm ensures sticky variant assignment.
  • 🛠️ DevTools Overlay: toggle variants on device during development.
  • 🚩 Feature Flags: boolean flags, rollout percentages, and targeted overrides.
  • 🤖 MCP Integration: manage experiments via Cursor & Claude Code prompts (/api/mcp).