Releases: vcode-sh/popser
Releases · vcode-sh/popser
v1.2.0
The "Sonner issues tab as a roadmap" release. Eight features, every one of them pulled from a real GitHub issue where someone asked Sonner for it and got silence. 39 new tests.
Added
- Animation duration customization.
--popser-transition-durationand--popser-anchored-transition-durationCSS custom properties. Pure CSS, zero JS. (Sonner #690) - Popover API support. Toast viewport uses
popover="manual"+showPopover(). Toasts render in the top layer, above dialogs and modals. Progressive enhancement — falls back gracefully in older browsers. (Sonner #655, #667) - Expanded limit.
expandedLimitprop on<Toaster>. Collapsed stack showslimittoasts, hover expands toexpandedLimit. (Sonner #637) - Close button position.
closeButtonPositionprop:"header"or"corner". Per-toast override supported. (Sonner #747) - AbortSignal for promise toasts.
signal,aborted, andonAbortoptions ontoast.promise(). Cancel in-flight requests and show a cancellation toast. (Sonner #681) - Entry direction.
enterFromoption:"top"|"bottom"|"left"|"right". Override the default slide direction per toast. (Sonner #671) - RTL support.
dirprop on<Toaster>:"ltr"|"rtl"|"auto". Flips positions, swipe directions, and animations. - Toast history.
toast.getHistory()andtoast.clearHistory(). Opt-in ring buffer viahistoryLengthprop. Records creation and closure with timestamps.
Changed
- 7 CSS files updated for new features (transitions, viewport, toast, controls).
types.tsexpanded with new option interfaces for all 8 features.index.tsbarrel export updated with new type exports (ToastHistoryEntry).
Full Changelog: https://github.com/vcode-sh/popser/blob/main/CHANGELOG.md
Full Changelog: v1.1.1...v1.2.0
v1.1.1
The paperwork patch. No code changed. The docs got a promotion.
Added
- Documentation site: popser.vcui.dev — full docs, interactive demos, changelog.
- Why I built this — the honest version of the README's "Why" section.
- Why Base UI, not Radix — the technical argument for headless primitives in 2026.
- Collaborate — contribution guide with actual context, not just a checklist.
- Interactive toast demos across docs pages (types, anchored, custom, styling).
- Open Graph images and sitemap for the documentation site.
Changed
README.mdrewritten: bundle size table, docs site links, Base UI positioning, contributing section.CONTRIBUTING.mdrewritten: architecture reference, human tone, actual guidance on what needs help.package.jsonhomepage now points to popser.vcui.dev instead of GitHub.- GitHub repo description and homepage updated.
- Comparison docs updated with v1.1.0 bundle sizes and
styles/minexport.
No code changes
Zero changes to src/. Same build output as 1.1.0. If you're already on 1.1.0, this is just metadata.
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Performance
Popser was never heavy, but now it's practically anorexic.
JS Bundle
| Raw | Gzipped | |
|---|---|---|
| Before (1.0.0) | 29.0 KB | 6.6 KB |
| After (1.1.0) | 13.4 KB | 4.8 KB |
| Savings | -54% | -27% |
CSS (@vcui/popser/styles/min)
| Raw | Gzipped | |
|---|---|---|
| Before (1.0.0) | 24.9 KB (7 files, unminified) | 5.4 KB |
| After (1.1.0) | 14.3 KB (single file, minified) | 2.6 KB |
| Savings | -43% | -52% |
Total shipped weight: 7.4 KB gzipped — less than half of Sonner's ~17 KB.
What changed
- JS minification — enabled esbuild minification in tsup. The dist was shipping formatted code. It isn't anymore.
- Flat CSS bundle — new
@vcui/popser/styles/minexport. Inlines all@importdirectives and minifies into a single file. No more 7 HTTP requests for CDN users. Modular imports (@vcui/popser/styles) still available. - Promise handler deduplication — the
successHandleranderrorHandlerintoast.promise()were copy-pasted twins (~100 lines). Extracted into a sharedbuildPromiseHandler()factory. - Dead code removal — removed 3 unused constants (
DEFAULT_EXPAND,DEFAULT_RICH_COLORS,DEFAULT_THEME). - Spinner optimisation — hoisted the 12-element spinner bar array to module scope. No more per-render allocation.
- a11y fixes — added
aria-hiddento decorative SVGs in the docs site.
New export
// Full modular CSS (unchanged)
import "@vcui/popser/styles";
// Single minified flat file (new)
import "@vcui/popser/styles/min";Full Changelog: v1.0.0...v1.1.0
v1.0.0
Full Changelog: https://github.com/vcode-sh/popser/commits/v1.0.0