A physics-driven Floating Action Button menu for Compose Multiplatform.
Create beautiful, jelly-like floating action menus with natural spring animations using a single API across Android, iOS, Desktop, Web, and Wasm.
Designed for apps that value motion, playfulness, and polished interaction.
π Featured on ProAndroidDev Β· Read the article
Inspired by this beautiful Dribbble concept:
https://dribbble.com/shots/3908815-Floating-button
JellyFab provides the same smooth, physics-driven floating action menu across every Compose Multiplatform target.
| Android | iOS |
|---|---|
![]() |
![]() |
| Desktop | Web |
|---|---|
![]() |
![]() |
JellyFab is available on Maven Central.
dependencies {
implementation("io.github.iprashantpanwar:jellyfab:<latest-version>")
}val state = rememberJellyFabState()
JellyFab(
state = state,
primaryItems = listOf(
JellyFabItem(Icons.Default.Email) { },
JellyFabItem(Icons.Default.Notifications) { },
JellyFabItem(Icons.Default.Settings) { }
),
secondaryItems = listOf(
JellyFabItem(Icons.Default.Edit) { },
JellyFabItem(Icons.Default.Share) { }
)
)val state = rememberJellyFabState()
state.expanded = true
state.secondaryExpanded = trueJellyFab exposes a configurable API allowing you to customize animation timing, spacing, colors, shadows, and motion.
Example:
JellyFab(
config = JellyFabConfig(
expandStagger = 0L,
collapseStagger = 100L,
bounceFactor = 0.18f,
shadowOpacity = 0.55f
)
)Customize
- Colors
- Icons
- FAB sizes
- Arc spacing
- Shadow
- Scrim
- Motion
Example:
JellyFab(
fabColor = Color(0xFFFF6F91),
secondLayerFabColor = Color(0xFF6BA5FF),
showScrim = true
)| Component | Responsibility |
|---|---|
| JellyFab | Main composable |
| JellyFabState | Expansion state |
| JellyPhysics | Spring animation engine |
| JellyBlob | Jelly deformation renderer |
| JellyFabConfig | Animation configuration |
Browse the latest API documentation:
https://iprashantpanwar.github.io/JellyFab/
Contributions are always welcome.
If you'd like to improve JellyFab:
- Report bugs
- Suggest features
- Improve documentation
- Submit pull requests
Please use the provided Issue and Pull Request templates.
- β Compose Multiplatform migration
- β Android
- β iOS
- β Desktop
- β JavaScript
- β Wasm
- β³ More layout options
Thanks to the Compose Multiplatform and Kotlin communities for making modern cross-platform UI development possible.
JellyFab is licensed under the Apache License 2.0.
See the LICENSE file for details.






