Collaborate

Open source. Not the LinkedIn kind where people post about giving back and then ghost the repo. The real kind.

The situation

I built popser because I needed toast notifications that don't fight me on styling, leak memory, or require a PhD in CSS specificity. It works. It's tested. It ships at 8.3 KB gzipped.

But one person building a component library is a bottleneck, not a strategy. The code is MIT-licensed, the repo is on GitHub, and I genuinely want people to contribute. Not in a “contributions welcome” badge-on-the-README way. In a “please help me make this thing better” way.

The foundation matters

Popser is built on Base UI — the headless React component library built by the teams behind Radix, Floating UI, and MUI. This is where React component architecture is heading. Proper primitives, proper accessibility, proper CSS transitions. No opinions about your styles.

Contributing to popser means working with Base UI primitives. If you understand createToastManager(), reactive stores, and headless components, you already know the architecture. If you don't, here's why it matters.

What I actually need help with

Not a wishlist. Not a backlog grooming exercise. Real things that would make popser better.

Bug fixesFound something broken? Fix it. Or open an issue with a reproduction. Both are equally valuable.
AccessibilityScreen reader testing, keyboard navigation edge cases, ARIA improvements. This matters more than any feature.
PerformanceBundle size wins, render optimisation, CSS improvements. Every byte counts at scale.
TestingMore edge cases, more coverage, more confidence. 419 tests and counting. Break something new.
DocumentationTypos, unclear explanations, missing examples. If you had to read something twice, that's a docs bug.
CSS and themingBetter defaults, new themes, token improvements. CSS is the hardest part and I'm not above admitting that.
Framework integrationsNext.js edge cases, Remix, Astro, whatever you ship with. If popser doesn't work there, tell me.
IdeasOpen a discussion. Propose something wild. The worst I can say is no. The best is: that's brilliant, do it.

How to get started

1Fork and clone
git clone https://github.com/vcode-sh/popser.git
cd popser && npm install
2Run the dev server
npm run dev          # watch build
npm run web:dev      # docs site
npm run test:watch   # tests
3Make it pass
npm run type-check && npm run test && npm run lint && npm run build
4Open a PR

Explain what changed and why. One thing per PR. Tests included. Read the full contributing guide if you want the details.

Ground rules

No Code of Conduct document. Just common sense. Be decent, be helpful, be honest. If someone's code needs work, say so kindly. If someone's idea is brilliant, say so loudly. If you disagree, explain why with reasoning, not volume.

I review every PR personally. I'll give honest feedback. Sometimes I'll say no. That's not a rejection of you — it's a rejection of that particular approach. Come back with something different. Or tell me why I'm wrong. I've been wrong before.

The project at a glance

StackReact, Base UI, TypeScript 5.9, Vitest, Biome
Bundle8.3 KB gzipped (JS + CSS)
Tests419 tests, 90% coverage thresholds
CINode 22 + 24, Bun, Codecov, bundle size tracking
Node>= 22.0.0
LicenseMIT