Migration Guide
The migration process should be hassle-free for users upgrading from Stacks v2 to v3. However, you should be aware of some notable changes.
Stacks
is now published in the @grapp
scope. So, you need to fix the imports first. Don't worry, it's a quick fix!
→ @mobily/stacks
@grapp/stacks
General
The Stacks
library has been completely rewritten in TypeScript, so it no longer supports ReScript.
The flex gap
values now define spaces between components (excluding Columns
, see this (opens in a new tab)).
Components
Provider
Stacks
now uses Unistyles, which means that you can remove StacksProvider
from the React component tree and provide configuration values to the Unistyles
theme object, as described here.
Box
Several new props have been added to the Box
component, including width
, height
, gap
, rowGap
, columnGap
, backgroundColor
, borderRadius
, borderTopLeftRadius
, borderTopRightRadius
, borderBottomLeftRadius
, borderBottomRightRadius
, borderColor
, borderWidth
, borderTopWidth
, borderRightWidth
, borderBottomWidth
, borderLeftWidth
, and debuggable
.
Columns
The defaultWidth
prop is now defaultFlex
, and the width
prop has been changed to flex
.
Use Column.from
to create a custom Column
component.
The markAsColumn
function has been removed.
FillView
FillView
has been renamed to FloatBox
.
The unset
helper has been removed, and the positioning has been fixed if you don't provide all offset values.
Hidden
Experimental support for hiding elements by transforming the React component tree with the provided Babel
plugin has been added.
Inline
The spaceX
and spaceY
props have been added.
Rows
The defaultHeight
prop is now defaultFlex
, and the height
prop has been changed to flex
.
Use Row.from
to create a custom Row
component.
The markAsRow
function has been removed.
Tiles
The spaceX
and spaceY
props have been added, and empty
has been renamed to fill
.
Hooks
useStacks
has been removed, asStacksProvider
is no longer needed.useCurrentBreakpoint
has been removed. To get the current breakpoint name, you can useuseStyles
from Unistyles.useSpacing
has been removed. To achieve the same result, you can useuseSpacingHelpers
andmultiply
.useWindowDimensions
has been removed. You can now get the screen dimensions withUnistylesRuntime.screen
.
That's all folks!