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

@funnelsgrove/runtime

v0.7.16

Published

Shared funnel runtime contracts and helpers.

Readme

@funnelsgrove/runtime

Shared funnel runtime contracts and helpers.

Read this file before editing shared funnel mechanics. Deeper runtime behavior is documented in docs/product-specs/funnel-template-runtime.md.

Owns funnel mechanics

@funnelsgrove/runtime owns the reusable mechanics that every generated or published funnel depends on: manifests, routing, env resolution, funnel state, preview/runtime detection, and generic runtime UI. Funnels bring their own copy, visual design, billing catalog, and step JSX.

Use This Package For

  • manifest types and validation
  • route resolution and entry-point handling
  • runtime mode and public env/config resolution
  • experiment assignment helpers
  • preview-bridge parsing and preview/runtime detection
  • published theme contract and CSS variable helpers
  • funnel context, flow controller, and generic runtime UI primitives
  • funnel-scoped state/storage helpers
  • browser-safe API client helpers used by funnels
  • reactive browser query-string access through useBrowserLocationSearch
  • subscription handoff and subscription management screens whose copy stays funnel-local
  • test-mode developer info surfaces for funnel preview tooling

Do Not Use This Package For

  • funnel-specific step JSX
  • brand/theme assets
  • billing catalog data
  • analytics transport
  • Stripe checkout UI
  • funnel-specific developer widget copy
  • direct provider SDK calls

Public Surfaces

  • config/*: manifest, theme, font, env, and builder-preview contracts.
  • runtime/*: flow, routing, attribution, feature flags, preview bridge, URL attributes, and manifest validation.
  • runtime/published-runtime-resolution: running-experiment normalization and immutable offer-set selection from pricing assignments.
  • services/*: API client, runtime mode, public env, project env, logger, and funnel state helpers.
  • components/*: generic runtime context, subscription handoff/management, editor panel, dev info, and base controls.
  • content/* and steps/types: shared step content and taxonomy contracts.

Storage Conventions

  • runtime user ids stay funnel-scoped under funnel:<funnelId>:user-id
  • runtime-generated user ids use the u_ prefix
  • paywall state is stored through runtime helpers under fg_state:<funnelId>
  • developer reset controls should clear paywall state through clearPaywallStateValue, including funnel-provided compatibility keys when a live funnel still needs them

Engineering Rules

  • Do not import @funnelsgrove/payments or @funnelsgrove/analytics here for checkout or transport orchestration.
  • Runtime UI must be generic and copy-injectable.
  • Browser-only values must resolve after mount when SSR hydration can be affected.
  • Funnel code must not copy useSyncExternalStore/popstate query-string hooks. Use useBrowserLocationSearch; the shared controller also notifies it after history.pushState and history.replaceState navigation.
  • Keep env mapping centralized in config/env.config.ts.

Build, Test, Publish

npm run test:run --workspace @funnelsgrove/runtime
npm run build --workspace @funnelsgrove/runtime
npm publish --workspace @funnelsgrove/runtime --access public

The build normalizes generated relative ESM imports to explicit .js files for published package consumers.