0.x Migration Notes

Volt UI's public API is frozen as of 1.0.0 — see Versioning & stability for the current promise. Because components are copied into your project rather than installed as a dependency, "upgrading" means re-running volt add <component> (or --force to overwrite) and diffing — nothing updates silently underneath you. This page covers the changes across the pre-1.0 0.x releases that actually required touching template code when upgrading; see MIGRATION.md for the 0.x → 1.0 upgrade guide specifically. Sourced from CHANGELOG.md. Most 0.x releases were additive; those aren't listed here.

Changes that need action

0.4.0

Button defaults to type="button"

Before 0.4.0, a <volt-button> with no explicit type fell through to the browser default inside a <form>, which is "submit". If you had a button that relied on that implicit submit behavior, it now does nothing until you set type="submit" explicitly.

<volt-button type="submit">Save</volt-button>   // was implicit, now required
0.2.0

Boolean inputs normalized to booleanAttribute

disabled, required, multiple, and similar boolean inputs across the library switched from plain JS-truthiness checks to Angular's booleanAttribute transform. This mainly matters if you were passing a string in a template attribute position — disabled="false" as a bare attribute is now correctly treated as false, where a naive truthiness check would previously have treated the non-empty string "false" as truthy.

Additive changes worth adopting

These didn't require any change to keep working, but the newer pattern is what current docs and snippets show.

0.7.0

Reactive Forms support added to combobox, listbox, input-OTP

These now implement ControlValueAccessor in addition to their existing [(value)]-style model binding — the old binding still works unchanged. Prefer formControlName / [formControl] going forward for validation state (aria-invalid, disabled propagation, touched) that model binding alone doesn't give you.

Internal fixes (no action needed)

  • 0.6.0VoltSelect declared valueChange twice; deduplicated so value = model(...) owns the single generated output. A normal (valueChange) subscriber was never affected.
  • 0.6.0 Keyboard-opened dropdown menus now correctly move focus to the first visible item.
Nothing on this page applies to a component you haven't copied yet — a fresh volt add always gives you the current behavior. This page is for diffing an existing copy. See the Customization guide for how to carry your own edits forward across a re-add.