SkillAgentSearch skills...

FileKit

Pick and save Files, Medias and Folder for Kotlin Multiplatform / KMP and Compose Multiplatform / CMP

Install / Use

/learn @vinceglb/FileKit

README

<div align="center"> <img src="https://github.com/user-attachments/assets/fa59bcd1-7906-4d14-9fa3-73845269b811" alt="FileKit for Kotlin Multiplatform and Compose Multiplatform" /> <br> <h1>FileKit</h1> <p>🚀 A powerful cross-platform file operations library for Kotlin Multiplatform</p> <div> <img src="https://img.shields.io/maven-central/v/io.github.vinceglb/filekit-core" alt="FileKit Kotlin Maven Version" /> <img src="https://img.shields.io/badge/Platform-Android-brightgreen.svg?logo=android" alt="Badge Android" /> <img src="https://img.shields.io/badge/Platform-iOS%20%2F%20macOS-lightgrey.svg?logo=apple" alt="Badge iOS" /> <img src="https://img.shields.io/badge/Platform-JVM-8A2BE2.svg?logo=openjdk" alt="Badge JVM" /> <img src="https://img.shields.io/badge/Platform-WASM%20%2F%20JS-yellow.svg?logo=javascript" alt="Badge JS" /> </div> <br> </div>

✨ 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 PlatformFile abstraction
  • FileKit Dialogs: File pickers and save dialogs
  • FileKit Dialogs Compose: Compose Multiplatform integration
  • FileKit Coil: Integration with Coil for image loading

FileKit Preview

🙏 Credits

FileKit stands on the shoulders of giants. Special thanks to:


<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

View on GitHub
GitHub Stars1.4k
CategoryDevelopment
Updated22h ago
Forks64

Languages

Kotlin

Security Score

100/100

Audited on Mar 20, 2026

No findings