Introduction / Page 01·06
Changelog
What changed in each release of Flexiboards, newest first.
Dates are the npm publish dates. Breaking changes link to their migration page.
1.0.0 (2026-09-13)
The first release of the split packages: @flexiboards/core holds the grid engine, @flexiboards/svelte and @flexiboards/react are adapters over it with mirrored APIs. svelte-flexiboards stops at 0.4.2. See Migrating to v1.0.
Added
- React adapter with the same components, hooks in place of context getters,
onfirstcreatein place ofbind:controller, asuspenseprop, andrenderToStringsupport.FlexiBoardforwardsrefto its root element. - Controller actions:
widget.delete(),widget.moveTo(),target.clear(),board.clear(),exportLayoutEnvelope().onLayoutChangereports layout mutations; exporting an envelope only reads the layout. - Board callbacks
onWidgetGrab,onWidgetDrop,onWidgetResize,onWidgetCancel,onWidgetDelete,onWidgetEnterTarget,onWidgetLeaveTarget, andcanDropon the board and on each target. - Presets
FlexiSortableandFlexiDashboard. FlexiWidgetdeclarations can mount after their target has loaded, using the same placement rules ascreateWidget().- CSS motion uses sine in-out reordering and circ-out drops. The deprecated
simpleTransitionConfig()keeps its original 150ms timing. Registry component families enable transitions by default and respect reduced motion. - Animation adapters:
cssTransition()andspring(), withcssTransitionConfig()andspringTransitionConfig(). - Layout callbacks run after a drop is committed, before animations settle. Destination placeholders use the final card size, including when text wraps differently between columns.
- The spring preset responds faster with less bounce. Core springs follow the same path across frame rates, including at 30fps.
- Sortable-style insert resolution for flow grids, and
portalDropFlightsfor boards that need a drop to fly in across their edge. dropRejectedstate on targets and widgets;initialLayoutfor server-provided layouts; layouts loaded on the client can show asuspensefallback.- Every exported layout entry carries an
id; layouts can be stored as a{ version, layout }envelope. FlexiGrabandFlexiResizecomponents; class functions on both.- Markdown twins of every docs page and
/llms.txt.
Fixed
- Grid cells now belong to rows and expose one-based ARIA indices. Drag previews are hidden and inert, and keyboard focus is preserved across targets.
- React StrictMode could disconnect the live announcer from the board. Nested button activation no longer grabs the surrounding widget.
- A drop’s flight aimed at where its slot used to be before the grid reflowed, and, in nested boards, started from the wrong place.
- A flow column kept an empty row after a card was dragged out of it.
- A keyboard grab that jumped the pointer into another target never got a drop preview there.
- Widgets with
draggability: 'none'were still focusable and marked droppable. - Target sizing changes made after mount did not restyle the grid.
Removed
- The
draggableboolean and thewidth/heightkeys ofwidgetDefaults.
0.4.2 (2026-06-10)
- Text inside widgets can be selected again: pointer events are no longer prevented unconditionally.
- Drag behaviour fixes and a tidier boundary between internal and public controllers.
0.4.1 (2026-04-06)
- Widget positions were tracked incorrectly while the board was scrolled, during both grabs and resizes.
- The “View source” links on the examples now point at the examples folder.
0.4.0 (2026-02-07)
- Layout import and export, and
ResponsiveFlexiBoardwith per-breakpoint layouts. - Scrollable boards, with scrollbar compensation during drags so the layout does not shift.
- Resizing on flow grids, and improved placement logic for them.
- Interpolation fixes for shrinking and resizing widgets.
- The products example.
0.3.2 (2025-09-01)
See Breaking Changes in v0.3. The last release of the 0.3 line.