Analysis updated 2026-07-03
Automatically preserve form input, scroll position, or selected items across screen rotations in an Android app without writing manual save/restore code.
Save and restore custom View state in an Android component by annotating fields with @State instead of overriding onSaveInstanceState manually.
Use Icepick's custom bundler interface to persist data types the library doesn't support out of the box.
Reduce state-management boilerplate across a large Android codebase by replacing manual Bundle read/write logic with @State annotations.
| frankiesardo/icepick | functional-koans/clojure-koans | babashka/babashka | |
|---|---|---|---|
| Stars | 3,728 | 3,798 | 4,494 |
| Language | Clojure | Clojure | Clojure |
| Setup difficulty | easy | moderate | easy |
| Complexity | 2/5 | 2/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Proguard rules must be added manually for release builds or the annotation-generated code will be stripped out incorrectly.
Icepick is a library for Android app developers that solves a specific and repetitive problem: saving and restoring an app's state when the system pauses or recreates a screen. On Android, when a user rotates their phone or the operating system needs to free up memory, the current screen gets recreated. Any data the screen was holding, like what a user had typed or which item was selected, gets lost unless the developer explicitly saves it and loads it back. Without a helper, this requires writing a fair amount of repetitive code for every piece of data you want to preserve. Icepick removes that burden. You mark the fields in your code with a simple annotation called @State, and Icepick generates the save and restore code automatically at build time. You still call Icepick's save and restore methods in the right places, but you no longer have to write the individual field-by-field logic. The library works with Activities (the main screen type in Android), Fragments (sub-sections of a screen), and custom View components. It also supports a custom bundler interface for developers who need to save data types that Icepick does not handle by default, which is useful when combined with other serialization libraries. The README includes a note for teams using Proguard, which is a tool that shrinks and obfuscates Android apps for release. Without adding the listed Proguard rules, the library's generated code could be stripped out incorrectly. Setup involves adding two dependencies to the project build file, both available from the Clojars repository. This is a developer utility with no user-facing interface of its own. Its value is purely in reducing the amount of code an Android developer has to write and maintain.
Icepick is an Android library that automatically saves and restores your screen's state on rotation or system recreation using a simple @State annotation, eliminating repetitive boilerplate code in Activities, Fragments, and custom Views.
Mainly Clojure. The stack also includes Java, Android, Proguard.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.