An Android app freezer that disables apps at the OS level without uninstalling them. Uses Shizuku for privileged access — no root required.
Frozen apps:
- Stop running in the background
- Stop receiving notifications
- Stop draining battery
- Keep all their data — restored instantly on unfreeze
Most app freezers on the Play Store don't actually work. Android's security model only allows OS-level processes (or apps with root, device-owner, or ADB privileges) to disable other apps. Consumer freezer apps fake it with battery restrictions and force-stops that Android reverses within minutes.
Freezer uses Shizuku as a privilege bridge to call Android's real pm disable-user API — the same mechanism the OS itself uses.
- Kotlin + Jetpack Compose
- Shizuku API for privileged operations
- kotlinx.serialization + SharedPreferences for persistence
- Clean architecture: Repository → ViewModel → UI
- Reactive state via
StateFlow
- 4×4 grid UI with implicit add tile
- Real OS-level freeze/unfreeze via Shizuku
- Frozen state survives app restart and device reboot
- Syncs UI with OS truth-source on launch (handles external state changes)
- Safety filters block dangerous targets (system apps, Google services, WebView, launchers, authenticators)
- One-time first-launch onboarding
- Smart Shizuku status banner with one-tap restart
- Install Shizuku (free, open source — F-Droid or GitHub)
- Start Shizuku via wireless debugging (one-time per device reboot, ~30 seconds)
- Install Freezer (APK in Releases)
- Open Freezer, grant Shizuku permission when prompted
- Tap
+, pick an app, watch it freeze
- Battery savings are not yet measured. Working on it — next phase wires up Android's
BatteryStatsAPI. - App icon position resets after unfreeze. When an app is disabled and re-enabled, your launcher treats it as a fresh install. Stock launchers (Pixel, Samsung) don't preserve original positions; some third-party launchers (Nova, Lawnchair) do.
- Shizuku must be restarted after every device reboot. Inherent to non-rooted Shizuku.
- WhatsApp/messaging app callers see "ringing", not "unreachable". Server-side state, outside any user-space freezer's control.
- Not on Play Store. Google policy restricts apps in this category. Distributed via GitHub Releases.
git clone https://github.com/Samantha-fd/freezer.git
cd freezer
# Open in Android Studio (Hedgehog or newer)
# Sync Gradle, build, runRequires Android Studio Hedgehog+, Android SDK 26+ for runtime, SDK 36 for build.
MIT — free to use, modify, distribute. Attribution appreciated.
This was my first Kotlin/Android project. Paired with Claude (Anthropic) as a learning coach throughout — every line was hand-typed and understood.
Inspired by missing a feature from an older phone.