LSPosed module that keeps third-party Quick Settings tiles responsive on Android 13+.
Since Nougat (2016) Android has limited third party Quick Settings to 3 active tiles. SystemUI manages tile bindings via a visibility-based priority queue, evicting services for non-visible tiles once the cap is reached. The Android 13 optimizer then freezes these evicted services which causes a ~3-5 second delay when they are eventually tapped.
Example: 10 third-party tiles installed
- You pull down the QS panel
- SystemUI binds the 3 most visible tiles using its visibility-based priority queue
- The remaining 7 are evicted and frozen by CachedAppOptimizer
- You tap an inactive tile and wait 3-5 seconds for the unfreeze-and-rebind cycle to complete
This module uses the modern Xposed API to hook into SystemUI and raise the binding cap, allowing all your tiles to stay warm and responsive without the lag russian roulette.
- Android 13+ (API 33+)
- LSPosed (API 100)
- Scope:
com.android.systemui
Tested on Pixel and LineageOS (Android 16). OEM ROMs (Samsung, Xiaomi, etc.) untested. Root required on Android 14+ for tile scanning and SystemUI restart.
Memory Footprint: Each tile uses ~10-30 MB. Even with 20+ tiles active, the total RAM usage is virtually imperceptible on any 6GB+ device.
Battery & Wakeclocks: No idle drain or unnecessary wakeups. Power consumption depends entirely on what your active tiles do.
Stability: Higher binding limits increase active connections in SystemUI. Poorly coded tiles may cause issues on budget devices at extremely high limits.
If you encounter issues, please file an issue on GitHub.
- Install LSPosed and download the latest APK from releases
- Install the APK and grant root access (recommended to auto-calculate the optimal limit)
- Enable the module in LSPosed and set scope to System UI
- Open the app and adjust the slider
- Reboot device or restart SystemUI (available in app's 3-dot menu if root was granted) to apply changes
-
Install JDK 21, Android SDK
-
Configure SDK path in
local.propertiessdk.dir=/path/to/android/sdk -
Build APK
./gradlew assembleRelease
-
(Optional) Sign release builds via
signing.propertiesor environment variableskeystore.path=/path/to/your/keystore.jks keystore.password=<keystore password> key.alias=<key alias> key.password=<key password>
Unsigned builds remain reproducible.
This project is licensed under the GNU General Public License v3.0 – see the LICENSE file for details.