Migration
The pages below cover unrelated upgrades. Most readers only need one. For apps already on React 18 or 19, the 4.x → 5.x and 3.x → 4.x bumps are one-line changes at most; apps still on React 16 or 17 need a React upgrade first to cross 4.x. The real work (if any) is in 2.x → 3.x.
Pick whichever applies to your situation:
Upgrading bestax-bulma 4.x → 5.x
The 5.x release has a single consumer-facing change: the versions/bestax-bulma-prefixed.css stylesheet is removed (the variant that prefixed every class with bulma-). If you never imported that file, upgrade with no code changes. If you did, switch to versions/bestax-prefixed.css with classPrefix="bestax-" and update any custom CSS targeting .bulma-* classes. The rest of the 5.x line is additive — Avatar, Badge, Reveal, compound (dot-notation) sub-components, and more.
Read the full 4.x to 5.x guide →
Upgrading bestax-bulma 3.x → 4.x
The 4.x release has a single consumer-facing change: the minimum supported React version is now 18 (React 16 and 17 are dropped). If your app is on React 18 or 19, upgrade with no code changes. Every release is now built and tested against both React 18 and 19. The rest of 4.0 was internal tooling and ships nothing that affects your code.
Read the full 3.x to 4.x guide →
Upgrading bestax-bulma 2.x → 3.x
The 3.x release is mostly additive — about 30 new components plus quality-of-life prop additions. Two changes need active attention:
- Form input auto-wrap:
<Input>,<Select>,<TextArea>, and<File>now compose themselves with<Field>and<Control>automatically. If you already wrap inputs in<Field><Control>, nothing changes; newInputBase/SelectBase/TextAreaBaseexports preserve the bare-element behavior for the rest. - Themed
<Radio>and<Checkbox>now use a custom-styled indicator that requires the new bestax extras CSS to render visibly. Importdist/extras.cssordist/bestax.css.
Also notable but not breaking: new optional context-driven APIs in <Tabs>, <Checkboxes>, and <Radios>; a new programmatic singleton API in <Notification>; and bulma moves from peerDependencies to dependencies.
Read the full 2.x to 3.x guide →
Migrating from Bulma v0.9.x → v1
bestax-bulma itself has always required Bulma v1 — there's no "bestax on Bulma 0.9" path. This guide is for two adjacent scenarios: (1) you're migrating off another React + Bulma library (react-bulma-components, Buefy, etc.) that was pinned to Bulma 0.9.x, or (2) you have plain Bulma 0.9.x in your own project that you want to upgrade alongside (or before) adopting bestax.
The HTML stays identical between Bulma 0.9 and 1, but Bulma v1 swaps Node Sass for Dart Sass, introduces CSS custom properties for runtime theming, ships a real CSS Grid system, and deprecates Tiles.
Read the full Bulma 0.9.4 → 1.x guide →
Migrating from react-bulma-components
Coming from the (unmaintained) react-bulma-components library? The bestax-migrate codemod converts imports, component names, props, and responsive objects to bestax-bulma automatically, and flags everything it can't convert with TODO(bestax-migrate) comments plus a report. An Agent Skill packages the whole workflow for coding agents.