Docs Reference & maintenance

0004. Prune unused adapter and controlled-modal surfaces

Status: implemented in 0.10.0

Context

Bronto UI is CSS-first and framework-agnostic. It also ships lifecycle wrappers for React, Solid, Qwik, Svelte, and Vue, plus a controlled non-native modal behavior. Package examples and tests prove those surfaces work, but an audit of ten real consumers found no adapter imports and no initModal() initialization.

Maintaining each adapter multiplies every behavior change across five bindings, types, examples, and matrix checks. The controlled modal duplicates native <dialog> focus and stacking behavior while carrying a larger ownership model. Neither cost is justified by downstream adoption.

Decision

Deprecate the five framework adapter subpaths and initModal() in 0.7.0. Keep them working unchanged for the complete 0.7 minor. Remove them no earlier than 0.8.0 under the project's deprecate-one-minor policy unless a real consumer adopts a surface before removal.

Consumers initialize vanilla behaviors in their framework's normal mount and cleanup lifecycle. Consumers use native <dialog> with initDialog() for modal interaction.

Consequences

  • The canonical CSS and behavior layers remain framework-neutral.
  • New behaviors no longer need to deepen an unadopted adapter surface.
  • Existing adapter users have one full minor to migrate.
  • Package examples continue proving compatibility during 0.7.
  • A future adapter requires real adoption evidence, not catalog symmetry.

The removal is implemented in 0.10.0. See the 0.10 migration for the replacement lifecycle and native-dialog contracts.