FileKit
Pick and save Files, Medias and Folder for Kotlin Multiplatform / KMP and Compose Multiplatform / CMP
Install / Use
/learn @vinceglb/FileKitREADME
✨ Features
- 📱 Cross-Platform Support: Works seamlessly on Android, iOS, macOS, JVM (Windows, macOS, Linux), JS, and WASM
- 🎯 Native Experience: Uses platform-native file pickers for the best user experience
- 🪶 Lightweight: Minimal dependencies to keep your app fast and lean
- 🔌 Rich Integrations: Works with Compose Multiplatform, Coroutines, kotlinx-io, Coil, and more
- 📂 Comprehensive File Operations: Pick files, save documents, access photos, manage directories
- 🎨 Image Utilities: Built-in image compression and gallery integration
🚀 Who's Using FileKit
FileKit is trusted by developers building amazing cross-platform applications:
- Heron - KMP Bluesky client using FileKit for image preview when uploading images or videos
- Rush - Lyrics search app like Spotify
- Composables SVG to Compose - Web tool to convert SVG to Compose code in seconds
- Twine - A multiplatform RSS reader built using Kotlin and Compose
- Butler - AI Chat App supporting image uploads across iOS, Android, Desktop, and WasmJS
- PixelSafe - Free steganography tool for PNG images
- AndroidToolKit - Desktop tools applicable to Android development, supporting Windows, Mac and Linux
- Splital - Easily track and manage your shared expenses, quickly, simply, and hassle-free on Android and iOS
- Tracker - Manager for Bluesky - Track and manage your Bluesky followers, unfollowers, blockers, and post analytics — all in real time! On Android and iOS.
- Parrot Workout Tracker - The ultimate fitness log and exercise tracker to crush your goals on Android and iOS.
- Ashampoo Photo Organizer - Photo management software for organizing and searching large photo collections
- AB Download Manager - A Download Manager that speeds up your downloads
- Edconv - A user-friendly interface that simplifies the power of FFmpeg. It's designed for fast and efficient conversion of video and audio files.
- Gluky, Refy, Pandoro, Neutron, and Brownie - Self-hosted applications using FileKit for profile pictures and file uploads
- Keyguard - Alternative client for the Bitwarden platform and KeePass (KDBX)
- HowMarket - Cross-platform Point of Sale (PoS) software for small and growing businesses, using FileKit to upload and manage product and user images
- Authmeister - Multiplatform OTP authenticator supporting TOTP and HOTP, available on Android and iOS
- Dancing Decibels - Multi-platform app for music festivals and live entertainment experiences, using FileKit for image imports and schedule import/export
- Kai - OpenClaw alternative in your pocket, using FileKit in production across Android, iOS, desktop, and web
Using FileKit in your project? Let us know!
📚 Documentation
Visit our documentation to learn more: https://filekit.mintlify.app
Migrate from FileKit 0.8 to 0.10 by following the migration guide.
🚀 Quick Start
Installation
// build.gradle.kts
dependencies {
implementation("io.github.vinceglb:filekit-core:$version")
implementation("io.github.vinceglb:filekit-dialogs:$version")
implementation("io.github.vinceglb:filekit-dialogs-compose:$version")
implementation("io.github.vinceglb:filekit-coil:$version")
}
Follow the installation guide to learn how to install and setup FileKit in your project.
Usage Examples
// Pick a file
val file = FileKit.openFilePicker()
// Pick multiple files
val files = FileKit.openFilePicker(mode = FileKitMode.Multiple())
// Pick only images
val imageFile = FileKit.openFilePicker(type = FileKitType.Image)
// Pick a directory
val directory = FileKit.openDirectoryPicker()
// Save a file
val contentToSave = "Hello FileKit!"
val file = FileKit.openFileSaver(suggestedName = "document", extension = "txt")
file?.writeString(contentToSave)
// Work with files
val myFile = FileKit.filesDir / "document.pdf"
println(myFile.name)
println(myFile.size())
myFile.writeString("Hello, World!")
// Image operations
val compressedBytes = FileKit.compressImage(
bytes = imageFile.readBytes(),
quality = 80,
maxWidth = 1024,
maxHeight = 1024
)
See the quickstart guide to learn more about the different file operations and utilities available in FileKit.
📦 Modular Structure
FileKit is designed to be modular, allowing you to include only what you need:
- FileKit Core: Basic file operations and the
PlatformFileabstraction - FileKit Dialogs: File pickers and save dialogs
- FileKit Dialogs Compose: Compose Multiplatform integration
- FileKit Coil: Integration with Coil for image loading
🙏 Credits
FileKit stands on the shoulders of giants. Special thanks to:
- compose-multiplatform-file-picker
- peekaboo
- Calf
- jnafilechooser
- swing-jnafilechooser
- nativefiledialog
- IFileDialogImp
- IntelliJ Community Foundation
- file_picker (flutter)
<div align="center"> <p>Made with ❤️ by <a href="https://github.com/vinceglb">Vince</a></p> <!-- <p>If you find FileKit helpful, please consider giving it a ⭐️</p> --> </div>
Related Skills
node-connect
327.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
80.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
327.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
80.7kCommit, push, and open a PR
