- Reduce object memory allocation of
HorizontalGrid,VerticalGridandBoxGrid. - Skip unnecessary intrinsic size calculation when
Modifier.fillMaxMainAxisSizeis not applied.
2026.05.15
- Fix
IllegalArgumentExceptionwhen usingHorizontalGridorVerticalGridinside an unbounded container such asColumnorLazyColumn.
2026.05.10
- Fix
HorizontalGridandVerticalGridnot skipping items whose span exceeds the maximum span of the grid. - Fix
HorizontalGridandVerticalGridincorrectly accepting infinity size in constraints.
2026.04.05
- Fix incorrect span size calculation when using non-uniform cell sizes like
ExtendedGridCells.TrackinHorizontalGrid,VerticalGrid, andBoxGrid. - Fix incorrect x position of spanned items in
BoxGridwhen layout direction is RTL.
2026.03.02
This release introduces new grid cell managements called ExtendedGridCells for advanced use cases.
For example, you can switch cell management strategy responsively:
VerticalGrid(
columns = ExtendedGridCells.SimpleGridCells.Responsive { availableWidth ->
if (availableWidth < 600.dp) {
SimpleGridCells.Fixed(3)
} else {
SimpleGridCells.Adaptive(150.dp)
}
},
modifier = Modifier.fillMaxWidth()
) { /* content */ }And you can define cell size individually:
VerticalGrid(
columns = ExtendedGridCells.SimpleGridCells.Track(
GridTrack.Fixed(100.dp),
GridTrack.Weight(2f),
GridTrack.Weight(1f)
),
modifier = Modifier.width(400.dp)
) { /* content */ }For more information, see the documentation.
- Add
ExtendedGridCellsfor more advanced grid cell management.- Add
Responsivefor switching cell management strategy based on layout size. - Add
Trackfor defining cell size individually by list ofGridTracks. Each cell can have a fixed or weighted size. - Add
GridTrackto define each cell size withExtendedGridCells.Track.
- Add
SimpleGridCells.FixedSizeis now stable API.- The minimum SDK version is updated to 23 for the Android artifact.
Project dependencies are updated.
- Kotlin 2.2.20 -> 2.3.10
- Compose 1.9.0 -> 1.10.0
- Gradle 8.14.3 -> 8.14.4
- Android Gradle Plugin 8.13.0 -> 8.13.2
- Android Minimum SDK 21 -> 23
2025.12.18
This release introduces a new experimental modifier, fillMaxMainAxisSize.
It makes the item have the same size to the maximum of the main axis sizes.
BoxGridis now stable API.- New experimental modifier
fillMaxMainAxisSizeis added. - All grids now skip item measurement and placement when there is no available space or calculated cell size is invalid.
2025.11.04
- Fix crash when an item composable has infinity constraints size in
HorizontalGridorVerticalGrid. - Fix incorrect min/max size validation when creating
OrientationIndependentConstraints.
2025.11.02
- Optimize measurement performance of
HorizontalGridandVerticalGridvia reducing object memory allocation. - Compose dependencies are replaced with Compose Multiplatform plugin.
androidx.coredependency is removed from Android artifact.
2025.10.16
This release introduces a new cell strategy, SimpleGridCells.FixedSize.
FixedSize is a cell strategy class that make each cell to have exact size.
This class is now experimental feature.
You should opt-in to use it.
- New experimental cell strategy
SimpleGridCells.FixedSizeis added. - Optimize arrangement performance of
BoxGrid. - Fix crash when
minSizeofAdaptivegrid cells is equal to negative spacing. - Spanned cell size calculation was incorrect when using
horizontalSpacingandverticalSpacingwith spanning inBoxGrid.
Project dependencies are updated.
- Kotlin 2.1.0 -> 2.2.20
- Android Gradle Plugin 8.10.1 -> 8.13.0
- Compose 1.8.0 -> 1.9.0
- Target SDK (Android Only) 35 -> 36
2025.08.01
This release contains breaking changes for the experimental feature, BoxGrid.
BoxGridScope's rowSpan and columnSpan modifier is replaced to span modifier.
And also span modifier's parameter now receive BoxGridItemSpanScope instead of GridItemSpanScope.
It contains more information for calculating box grid item span.
- Add
Modifier.positiontoBoxGridScopefor setting row/column cell position at the same time. - Add
Modifier.spantoBoxGridScopefor setting row/column span at the same time. - Add
BoxGridItemSpanScopeforspanmodifier ofBoxGridScope. - Add
BoxGridItemSpan. It is a container represents row/column span size. - Remove
Modifier.rowSpanandModifier.columnSpanfromBoxGridScope. - Remove deprecated
HorizontalGridandVerticalGridwithalignmentparameter. Replace it to composable withcontentAlignmentparameter. - Fix remaining cell size distribution of
SimpleGridCellmore properly.
2025.07.05
- Fix
contentAlignmentofBoxGridnot working as expected. - Fix incorrect remaining span calculation of
BoxGrid.
2025.06.02
- Fix
BoxGridcrashing when applying span size to items with unspecified row/column position.
2025.05.31
- New experimental layout composable
BoxGridis added.BoxGridis a layout that allows to place items freely in grid cells. This layout is now experimental. Use it with@ExperimentalGridApiannotation to opt-in. For more information, see the documentation. HorizontalGridandVerticalGrid's default alignment parameteralignmentis renamed tocontentAlignment.- Deprecated API
GridScope.span(Int)is now removed. UseGridScope.span(Lambda)instead.
Project dependencies are updated.
- JVM Target 8 -> 11
- Kotlin 1.9.25 -> 2.1.0
- Android Gradle Plugin 8.6.1 -> 8.10.1
- Compose 1.7.0 -> 1.8.0
- Target SDK (Android Only) 34 -> 35
2025.02.08
Modifier.spanwith single integer parameter is deprecated. Replace it to modifier with lambda parameter.- Modifiers of
GridScopenow have inspector info.
2024.12.28
HorizontalGridandVerticalGridnow have default alignment parameter.
2024.10.19
- New
Modifier.spanis added that has a lambda parameter to calculate span size. In this lambda, you can access toGridItemSpanScopeto get max span and remaining span.
Project dependencies are updated.
- Kotlin: 1.9.22 -> 1.9.25
- Android Gradle Plugin: 8.2.0 -> 8.6.1
- Compose Multiplatform: 1.6.0 -> 1.7.0
- Compose Android: 1.6.0 -> 1.7.0
- Compose Android Compiler Plugin: 1.5.10 -> 1.5.15
2024.04.13
Library's group id and package name is changed from io.woong.compose.grid to com.cheonjaeung.compose.grid.
2024.03.01
Project dependencies are updated.
- Kotlin: 1.9.0 -> 1.9.22
- Android Gradle Plugin: 8.1.1 -> 8.2.0
- Compose Compiler Plugin: 1.5.2 -> 1.5.10
- Compose Android: 1.5.0 -> 1.6.0
- Compose Multiplatform: 1.5.1 -> 1.6.0
2024.02.13
- Fixed incorrect layout size when grid should have smaller size than constraints max size.
- Fixed incorrect spacing before the last item.
- Fixed crash when measuring invisible item composable constraints.
2024.01.06
- Start supporting Compose Multiplatform for iOS.
- New
alignmodifier is added onGridScopeto set alignment of specific item composable in the cell. Thealignmodifier takes anAlignementparameter likeBoxScope'salign.
- Performance for item composable measuring and placing is improved.
- Artifact names are changed. If you use library dependency for desktop platform with
io.woong.compose.grid:grid-desktop, you must change artifact name toio.woong.compose.grid:grid-jvmor justio.woong.compose.grid:grid. If you already add dependency asio.woong.compose.grid:grid, you can ignore it.
There is no dependency changes since previous version.
- Android: Jetpack Compose 1.5.0
- Multiplatform: Compose Multiplatform 1.5.2
2023.12.09
contentlambda of grid now extendsGridScope.- New
spanmodifier is added.spanis can applied to item composable in theGridScope. - New optional parameter
fillis added forSimpleGridCells.FixedandSimpleGridCells.Adaptive.
There is no dependency changes since previous version.
- Android: Jetpack Compose 1.5.0
- Multiplatform: Compose Multiplatform 1.5.2
2023.10.07
GridLayout is now stable version. This update contains removing deprecated and dependency updates. Grid's features have no changes.
- Deprecated
HorizontalGridandVerticalGridcomposable functions are now removed.
Project dependencies are updated.
For Android, the compile SDK version is updated from 33 to 34.
- Kotlin: 1.8.20 -> 1.9.0
- Android Gradle Plugin: 7.3.0 -> 8.1.1
- Compose Compiler Plugin: 1.4.6 -> 1.5.2
- Compose Android: 1.4.3 -> 1.5.0
- Compose Multiplatform: 1.4.1 -> 1.5.1
Now 1.0.0 version depends on following compose versions.
- Android: Jetpack Compose 1.5.0
- Multiplatform: Compose Multiplatform 1.5.2
2023.08.15
This update include a new type of cell count strategy. The new cell count strategy is for similar API to Jetpack Compose Foundation's lazy grid. Therefore, old grid layout composables is deprecated and added new composables. Please migrate layout to new API.
- New
SimpleGridCellsclass that defines how many cells should exist. - New
HorizontalGridandVerticalGridcomposables takeSimpleGridCellsparameter.
rowCountandcolumnCountparameter ofHorizontalGridandVerticalGridis deprecated. These deprecated composables can be remove in the future version. Migrate to grid composable withrowandcolumns.
This library is built on these Compose libraries.
- Android: Jetpack Compose 1.4.3
- Multiplatform: Compose Multiplatform 1.4.1
2023.07.22
Initial public release of this library.
This library is built on these Compose libraries.
- Android: Jetpack Compose 1.4.3
- Multiplatform: Compose Multiplatform 1.4.1