A modern, highly customizable Compose Multiplatform library implementing Apple's Human Interface Guidelines (HIG) with Liquid Glass visuals, native haptic feedback dynamics, and smooth spring physics.
Forked and expanded from alexzhirkevich/compose-cupertino and slanos/compose-cupertino.
- iOS 26 HIG Liquid Glass Aesthetic: Advanced backdrop rendering with interactive lens refraction, chromatic aberration, vibrancy, and dynamic luminance tinting.
- Enhanced Component Suite:
- π§ Liquid Glass Components:
CupertinoLiquidButton,CupertinoLiquidAlertDialog - ποΈ Segmented Control:
CupertinoSegmentedControlwith spring drag animations, dynamic indicator width, and haptic feedback. - π SwipeBox:
CupertinoSwipeBoxwith DSL action builders (start&end), full-swipe auto-trigger, and spring response. - π Grouped Sections & Lazy Lists:
CupertinoSection,LazyListScope.section, andstickySectionwith iOS grouped inset styling. - π
Pickers:
CupertinoPicker,CupertinoDatePicker,CupertinoTimePicker, andCupertinoDateTimePicker. - π§ Navigation & Structure:
CupertinoTopAppBar,CupertinoNavigationBar,CupertinoBottomSheet,CupertinoBottomSheetScaffold,CupertinoScaffold. - π Inputs & Switches:
CupertinoSwitch,CupertinoCheckbox,CupertinoTextField,CupertinoSearchTextField. - π¨ Standalone Cupertino Icons: Lightweight vector
CupertinoIcons(Outlined & Filled) removing unnecessary dependencies on heavy icon packs.
- π§ Liquid Glass Components:
ScreenRecording_07-20-2026.23-02-34_1.MP4
β οΈ Note: There is a known flickering issue in the iOS sample app.
Try the WasmJS interactive web showcase deployed via GitHub Pages:
π https://ienground.github.io/compose-hig/
This package is published to Maven Central Repository.
Declare the dependency in libs.versions.toml:
[versions]
hig = "1.3.0"
[libraries]
hig = { group = "zone.ien.hig", name = "hig", version.ref = "hig" }
hig-adaptive = { group = "zone.ien.hig", name = "hig-adaptive", version.ref = "hig" }
hig-native = { group = "zone.ien.hig", name = "hig-native", version.ref = "hig" }In build.gradle.kts:
kotlin {
sourceSets {
commonMain.dependencies {
implementation(libs.hig)
// Optional adaptive / native extensions
implementation(libs.hig.adaptive)
}
}
}val backdrop = rememberDefaultBackdrop()
CupertinoLiquidButton(
onClick = { /* handle action */ },
backdrop = backdrop,
) {
Text("Liquid Glass Button")
}var selectedIndex by remember { mutableStateOf(0) }
CupertinoSegmentedControl(
selectedTabIndex = selectedIndex,
) {
CupertinoSegmentedControlTab(
isSelected = selectedIndex == 0,
onClick = { selectedIndex = 0 }
) {
Text("First")
}
CupertinoSegmentedControlTab(
isSelected = selectedIndex == 1,
onClick = { selectedIndex = 1 }
) {
Text("Second")
}
}CupertinoSwipeBox(
actionItemBuilder = {
end {
CupertinoSwipeBoxItem(
color = CupertinoColors.systemRed,
icon = CupertinoIcons.Default.Trash,
label = "Delete",
onClick = { /* handle delete */ }
)
}
}
) {
Text("Swipe left to reveal actions", modifier = Modifier.padding(16.dp))
}LazyColumn {
section(
title = { Text("SECTION HEADER") },
caption = { Text("Section description footer text.") }
) {
item {
Text("Row Item 1", modifier = Modifier.padding(16.dp))
}
item {
Text("Row Item 2", modifier = Modifier.padding(16.dp))
}
}
}Compared to the previous library, we have made efforts to update many components from the Human Interface Guidelines to match the latest design, but there is still work in progress. Please help complete the library with your contributions!
- BottomBar
- Search Bar
- Dropdown Native
- Dialog (Non-native)
- Segmented Control
Copyright (c) 2023-2024. Compose Cupertino project and open source contributors.
Copyright (c) 2025. Scott Lanoue.
Copyright (c) 2026. IENGROUND of IENLAB.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Contributions are welcome! Please ensure copyright headers are included when submitting Pull Requests.