Unhook is a lightweight Android digital-friction app that interrupts infinite-scroll behavior inside selected social apps.
Core idea: Unhook yourself from corporations' chains.
Unhook pushes back against algorithmic compulsion by adding deliberate friction where addictive loops usually win.
- You own your attention.
- Products should serve users, not trap them.
- Friction can be a feature when it protects autonomy.
- Offline-first design protects privacy and trust.
- Accessibility-driven, event-based behavior
- Blocks vertical swipe gestures in short-video contexts for selected apps
- Allows taps and non-vertical interaction paths where possible
- Optional hard block for TikTok app opening (when TikTok is enabled in target apps)
- User-configurable target app list (DataStore)
- Offline by design (no network, no analytics, no tracking)
com.instagram.androidcom.facebook.katanacom.google.android.youtubecom.twitter.androidcom.zhiliaoapp.musically
- Kotlin only
- Settings UI: Jetpack Compose
- Gesture interception: AccessibilityService + TYPE_ACCESSIBILITY_OVERLAY + GestureDetector
- Storage: DataStore Preferences
- No Room, WorkManager, foreground service, polling, or remote calls
UnhookAccessibilityServicelistens forTYPE_WINDOW_STATE_CHANGED.- If a supported foreground app is enabled, the service evaluates screen context.
- In detected short-video contexts, a transparent full-screen overlay blocks vertical swipes.
- Non-target contexts keep normal interaction flow.
- For TikTok, if enabled, Unhook can immediately exit the app to Home.
- minSdk 26
- targetSdk 34
- Kotlin 1.9+
- JDK 17 (required)
- Android SDK + build-tools
- Android Studio (optional, recommended)
- Open in Android Studio.
- Sync Gradle.
- Run app on device.
- In the app, open Accessibility Settings and enable Unhook service.
- Ensure JDK 17 is installed and
JAVA_HOMEpoints to it. - Ensure Android SDK is installed and
ANDROID_HOME(orANDROID_SDK_ROOT) is set. - Build debug APK:
./gradlew :app:assembleDebugUnhook is fully offline.
- No analytics
- No telemetry
- No ads
- No network calls
Non-commercial only. Any commercial use is prohibited without prior written permission. See LICENSE.