Library
Dependencies
The packages a Dowel installation brings into your dependency graph, the runtimes your application owns, and the choices Dowel leaves open.
Runtime dependencies
These packages install with @karnstack/dowel. Dowel imports them from its published JavaScript, so they are direct runtime dependencies rather than build tooling.
Their transitive dependencies are resolved by the package manager and can change independently. Use pnpm why or your package manager's equivalent when you need the complete installed graph for a specific release.
| Package | Version range | Why Dowel chose it |
|---|---|---|
@base-ui/react | ^1.7.0 | Its unstyled, composable primitives give Dowel proven focus, keyboard, overlay, and selection behavior without imposing a competing visual system. |
@heroicons/react | 2.2.0 | Its 16px solid Micro set gives Dowel a consistent vocabulary for built-in functional controls and semantic defaults without maintaining bespoke SVG paths. |
@stylexjs/stylex | 0.19.0 | It provides typed theme variables and deterministic style composition while compiling CSS ahead of time, so consumers need no StyleX build configuration. |
@tanstack/react-table | ^9.1.2 | Its headless, application-controlled state model handles advanced table behavior without coupling Dowel to a table layout or data-fetching opinion. |
@tanstack/react-form | ^1.33.5 | Its typed, headless state and validation model powers Dowel's pre-bound form hook while leaving schema choice and submission behavior application-owned. |
@internationalized/date | ^3.12.3 | Its timezone-safe date types and locale-aware calendar arithmetic keep date-only values stable across regions, time zones, and calendar systems. |
react-aria-components | ^1.20.0 | It supplies the Calendar and DatePicker accessibility model, including roving focus, keyboard navigation, localized date segments, and validation behavior. |
Peer prerequisites
React stays application-owned so Dowel shares the same renderer and context as the rest of your product. Your package manager may install missing peers, but the application remains responsible for choosing compatible versions.
| Package | Version range | Why Dowel chose it |
|---|---|---|
react | ^19.0.0 | Dowel targets React 19 so it can use the current ref, context, and rendering model while sharing one React instance with the host application. |
react-dom | ^19.0.0 | React DOM supplies the browser renderer and portal behavior that Dowel overlays require, while remaining owned by the host application. |
What is not included
Dowel does not install a router, schema validator, or data-fetching client, and it does not prescribe an application-wide icon system. Consumer-facing icon slots accept ordinary React content, so applications keep control of their visual language.
Dowel uses Heroicons Micro at its native 16px size for icons the library owns, including search, selection, sorting, and Callout's tone-aware defaults. Callout accepts an icon override and treats icon={null} as an explicit request to hide its default. The documentation chrome uses the same set for consistency.
Challenge a choice
Dependency choices are architecture decisions, not permanent facts. If a package creates a constraint, adds avoidable weight, or has a better alternative, open a GitHub issue with the tradeoff you see and the replacement you would consider.