Skip to main content

May 2025

Dialog/drawer/sheet system rewrite, duck-variants with 7x performance, duck-motion package, website launch, and build tooling migration.

Dialog System feat

Major rewrite of the dialog, drawer, sheet, and alert-dialog system:

Dialog

  • Migrated all overlay components to shared Dialog primitives
  • Implemented draggable functionality in DrawerContent with snap points
  • Built useDrawerDrag hook with debounce for smooth touch handling
  • Added scroll lock functionality during dialog open/close transitions
  • Replaced useShouldRender with ShouldRender component
  • Streamlined dialog close event handling

Sheet and Drawer feat

Drawer

Sheet

  • Introduced Sheet component with customizable content and animations
  • Updated AnimSheetVariants for improved positioning and animation
  • Drawer with drag-to-dismiss, snap points, and scale background effect

duck-motion Package feat

Built @gentleduck/motion for shared animation primitives:

  • Created AnimDialogVariants and AnimSheetVariants for dialog and sheet animations
  • Added AnimDrawerVariants for enhanced drawer animations
  • Implemented accelerated variants for smoother transitions
  • Separated easing functions for reuse
  • Reduced default animation duration from 200ms to 150ms

duck-variants feat

@gentleduck/variants achieved 7x performance improvement over alternatives in our benchmarks.

Completed the type-safe variant system:

  • Enhanced test cases and benchmarking tests
  • Added boundVariants feature for pre-bound variant functions
  • Added extractProps type utility
  • Migrated build from tsup to tsdown

See the full variants docs.


Alert Dialog feat

Alert Dialog

  • Updated alert-dialog to use shared Dialog primitives
  • Improved component structure for semantic HTML (heading instead of paragraph for title)

Website Launch feat

  • Launched website with home page, header navigation, and blog routes
  • Integrated content collections with Velite
  • Added Brotli compression and image optimization
  • Added Blog navigation item

Build Tooling chore

  • Migrated packages from tsup to tsdown for build
  • Added biome linting across all packages
  • Added Husky to the dev cycle for pre-commit hooks
  • Set up unified catalog dependencies
  • Added Vite integration with rolldown-vite