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

@adamweiss/feedback-widget

v0.1.3

Published

Drop-in floating feedback widget for React prototypes.

Readme

@dnosaj/feedback-widget

Drop-in floating feedback widget for React prototypes. Single <FeedbackWidget /> component, shadow-DOM isolated, talks to the feedback-service backend at a URL you provide.

Install

npm install github:studioEIGen/feedback-widget
# or pin to a tag:
npm install github:studioEIGen/feedback-widget#v0.1.0

Use

// app/layout.tsx (Next.js App Router)
import { FeedbackWidget } from "@dnosaj/feedback-widget";

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html>
      <body>
        {children}
        <FeedbackWidget
          projectSlug="report-analyzer"
          apiUrl={process.env.NEXT_PUBLIC_FEEDBACK_API_URL}
          userName={session?.user?.name}           // optional
          hideOnPaths={["/login", "/legal"]}       // optional
        />
      </body>
    </html>
  );
}

.env.local

NEXT_PUBLIC_FEEDBACK_API_URL=https://your-feedback-service.vercel.app

Props

| Prop | Type | Required | Notes | |---|---|---|---| | projectSlug | string | yes | Must match a row in the service's projects table. | | apiUrl | string | at least one | Overrides NEXT_PUBLIC_FEEDBACK_API_URL. | | userName | string | no | Pre-fills the name field. Overrides localStorage + URL param. | | hideOnPaths | string[] | no | Suppress the pill on these paths. | | position | "bottom-right" | "bottom-left" | no | Default bottom-right. | | onSubmit | (fb) => void | no | Called after successful submit. |

Connecting a new prototype

  1. Go to the Feedback Admin and click + next to the project dropdown.
  2. Enter a name — the slug auto-generates (this is what you pass to projectSlug). Hit Create project.
  3. Copy the env var snippet and add it to your prototype's .env.local:
    NEXT_PUBLIC_FEEDBACK_API_URL=https://feedback-service-nu.vercel.app
  4. Add the widget to your layout with the slug from step 2:
    <FeedbackWidget projectSlug="your-slug" apiUrl={process.env.NEXT_PUBLIC_FEEDBACK_API_URL} />

That's it. The project accepts submissions from any origin by default — no extra configuration needed.

Tip: After creating the project, double-check the slug in the admin dropdown or in Supabase → projects table. If the project name had a trailing space, the slug may end with a dash (e.g. my-project-). Fix it in the table before wiring up the widget, or you'll get a 404 "unknown_project" error on submit.

What's captured

Every submission includes: page URL, page path, viewport size, user-agent, timestamp, plus the text + category + optional screenshot.

Keyboard shortcuts

  • ⌘⇧F / Ctrl⇧F toggles the panel
  • Esc closes it

Deferred to stage 2

  • Pen/arrow annotation on screenshots
  • Voice capture + transcription
  • Three capture modes (anonymous / session pseudonyms / QR handoff)
  • Claude Code auto-plan pipeline

See the design spec for the full roadmap.