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

@chio-studios/hub

v0.10.0

Published

Official client for CHIO HUB: announcements, release highlights, changelog, feedback, waitlist and cookieless analytics.

Readme

@chio-studios/hub

Official client for CHIO HUB, the service that carries announcements, release highlights, changelog, feedback, waitlist and cookieless analytics for a product.

Availability

CHIO HUB is a hosted service operated by Chio Studios. It is not open source, and it is not generally available. There is no sign-up today, and this package cannot create an account for you.

It is published openly so that the products already running on CHIO HUB can install their client with a plain npm install, without a private registry. Every call in here is answered by a hub instance, so without one that knows your product slug you will get a 404 and nothing else.

Questions: [email protected].

What it covers

| Feature | What the product gets | | --- | --- | | Announcements | Notices maintained centrally, shown in-app or on the website | | What's new | Release highlights, filtered by the version the client reports | | Changelog | Published release notes for a public page | | Feedback | Submissions from inside the product, triaged in the hub | | Waitlist | Double opt-in signup and the perk a subscriber earned | | Analytics | Pageviews and custom events, no cookies and no device storage |

Install

npm install @chio-studios/hub
# pnpm add @chio-studios/hub

React is a peer dependency (18 or 19) and only needed for the hooks. The client itself has none.

Use it

React

import { HubProvider, useAnnouncements } from '@chio-studios/hub';

export function Root({ children }) {
    return (
        <HubProvider config={{ baseUrl: 'https://hub.example.com/api', product: 'your-product' }}>
            {children}
        </HubProvider>
    );
}

function Banner() {
    const { data, isLoading } = useAnnouncements();
    if (isLoading || !data.length) return null;
    return <aside>{data[0].title}</aside>;
}

Hooks: useAnnouncements, useWhatsNew, useChangelog, useCreateFeedback, useWaitlist, useTracker, and useHub for anything without a hook of its own.

Without React

Every feature is a plain function, so a server or a script can use the same client. This is also the only way to reach the calls a product makes as itself rather than on behalf of a visitor. Those need an API key and therefore never belong in a browser bundle.

import { createHubClient } from '@chio-studios/hub';

const hub = createHubClient({
    baseUrl: 'https://hub.example.com/api',
    product: 'your-product',
    apiKey: process.env.HUB_API_KEY, // server side only
});

const perk = await hub.claimWaitlistPerk('[email protected]');

Analytics

const { trackPageview, trackEvent } = useTracker();

useEffect(() => trackPageview(pathname), [pathname]);
trackEvent('signup_started');

No cookie, no localStorage, no fingerprint. A hit is a request to the hub and nothing else, which is what lets the measurement run without a consent banner in the EU. Anything the tracker stored on the device would change that, so it stores nothing.

The one exception is the objection itself:

import { setTrackingOptOut, isTrackingOptOut } from '@chio-studios/hub';

setTrackingOptOut(true); // remembered per browser

track() also honours Global Privacy Control and Do Not Track without being asked to.

Configuration

| Field | Required | What it is | | --- | --- | --- | | baseUrl | yes | Base URL of the hub API, e.g. https://hub.example.com/api | | product | yes | Product slug, assigned by the hub | | site | no | Site slug, only for the page-bound features (feedback, changelog) | | apiKey | no | For product-level calls. Server side only. |

Stability

Versioned with the hub itself, so a minor release can still change a signature while the hub is below 1.0. Pin an exact version if that matters to you.

Issues: github.com/Chio-Studios/hub-mono. The hub's own source is not public.

License

UNLICENSED. Published for use with CHIO HUB, all rights reserved by Chio Studios.