🎯 What’s New in v1.0.21?



This content originally appeared on DEV Community and was authored by Ismoy Belizaire

🎉 ImagePickerKMP v1.0.21 – A Fresh New Look for iOS & Android! 🎉

Hey there, fellow Kotlin Multiplatform enthusiasts!

I’m thrilled to announce the latest release of ImagePickerKMP – the cross‑platform image picker & camera library that lets you pull photos from the gallery or capture new ones with a single line of code. 🚀

Release:

With this update, we’re adding custom bottom sheet support for iOS and customizable confirmation UI for Android. Let’s dive into the details!

🎯 What’s New in v1.0.21?

1⃣ Custom Bottom Sheet on iOS

Previously, the iOS picker presented the standard UIImagePickerController UI. While functional, it left designers with limited styling options. This release introduces a CustomBottomSheet component that can be fully themed, animated, and integrated into your Compose UI.

ImagePicker(
    modifier = Modifier.fillMaxSize(),
    platform = Platform.IOS,
    // Custom bottom sheet
    bottomSheet = { image -> 
        CustomBottomSheet(
            image = image,
            onDismiss = { /* ... */ },
            style = BottomSheetStyle(
                backgroundColor = Color.White,
                cornerRadius = 16.dp
            )
        )
    }
)

Key benefits:

  • 🎨 Full control over colors, shapes, and shadows.
  • 📲 Seamless integration with your existing Compose layout.
  • 🔄 Consistent behavior across iOS versions.

2⃣ Customizable Confirmation View on Android

On Android, after a user selects an image, the picker used to show a default “Confirm” dialog. We now provide a ConfirmView composable that can be swapped out for any design.

ImagePicker(
    modifier = Modifier.fillMaxWidth(),
    platform = Platform.Android,
    confirmView = { image ->
        MyCustomConfirm(
            image = image,
            onConfirm = { /* Handle confirm */ },
            onCancel = { /* Handle cancel */ }
        )
    }
)

What you can change:

  • Button styles, text, icons.
  • Layout – grid, carousel, or single‑image preview.
  • Animation – fade, slide, or custom physics.

These changes empower designers to keep the UI in line with their brand while still leveraging the power of Kotlin Multiplatform.

🔧 Improvements & Fixes

Area Issue Fix
iOS Picker The picker would crash on iOS 16 if the user denied camera permission. Added robust permission handling and graceful fallback.
Android Picker Confirmation dialog flickered on orientation change. Implemented state‑saving across configuration changes.
Performance Minor lag when loading high‑resolution images. Optimized bitmap decoding with ImageDecoder and lazy loading.
Documentation bottomSheet API lacked examples. Updated README with usage snippets and style reference.
Dependency Management Outdated Compose Multiplatform version (1.5.0). Bumped to 1.5.2 and updated compiler flags.

Tip: If you’re still on Kotlin 1.9.10 or Compose 1.5.0, consider upgrading to benefit from the performance tweaks and bug fixes.

📦 How to Update

1⃣ Add the dependency

If you’re already using ImagePickerKMP, simply bump the version in your build.gradle.kts (or build.gradle if you’re using Groovy).

dependencies {
    implementation("com.github.ismoy:ImagePickerKMP:1.0.21")
}

2⃣ Sync & Rebuild

Run ./gradlew clean build or use your IDE’s Gradle sync.

3⃣ Migrate Custom UI

If you’re using the new custom bottom sheet or confirmation view, replace the old API calls with the new ones shown above.

4⃣ Test

Run your app on both Android and iOS simulators/devices to confirm the UI behaves as expected.

Note: No breaking changes in the public API, so your existing code should compile without modification unless you decide to adopt the new custom UI components.

🙏 A Huge Thank You!

This release wouldn’t have been possible without the dedication of the community. A special shout‑out to:

  • @ismoy – for spearheading the project and keeping the roadmap steady.
  • All contributors – for reviewing PRs, reporting bugs, and suggesting UI tweaks.

Your feedback keeps this library robust and user‑friendly. Keep the issues coming, and let’s keep building great cross‑platform code together!

🚀 Try It Out Today

  • Download the latest release from the Releases page.
  • Explore the new demo app in the demo folder – it now showcases the custom bottom sheet on iOS and the custom confirmation view on Android.
  • Share your experience on Twitter or LinkedIn using #ImagePickerKMP and let us know how you’re styling your picker!

Feel free to fork the repo, experiment with the new UI components, and submit your own pull requests. The library is open source, and every contribution helps make cross‑platform development smoother for everyone.

Quick Recap

Feature Platform How to Use
Custom Bottom Sheet iOS bottomSheet = { image -> CustomBottomSheet(...) }
Custom Confirmation View Android confirmView = { image -> MyCustomConfirm(...) }
Permission Handling Both Automatic – no extra code needed
Performance Optimizations Both Transparent – just upgrade!

Got questions? Drop an issue on GitHub or ping me on Discord (link in the README).

Let’s keep the momentum going and continue to push the boundaries of what Kotlin Multiplatform can do!

Happy coding! 🧑‍💻✨

Repository: https://github.com/ismoy/ImagePickerKMP

Release Tag: https://github.com/ismoy/ImagePickerKMP/releases/tag/v1.0.21

Stars: ⭐ 38 | Forks: 🍴 4 | Contributors: 👥 1

Keep exploring. Keep sharing. Keep building.


This content originally appeared on DEV Community and was authored by Ismoy Belizaire