UI customization, automation, and privacy engine for WhatsApp on Android
WaEnhancer X is an open-source Xposed/LSPosed module for rooted Android that enhances WhatsApp and WhatsApp Business with privacy controls, anti-delete recovery, view-once media tools, interface customization, and productivity featuresβwithout repackaging the official app.
Latest Release Β· Telegram Community Β· Documentation Β· Report Bug
- Star History
- Why WaEnhancerX
- About V2 Architecture
- Key Features
- Compatibility & Supported Clients
- Requirements
- Installation Guide
- Building from Source
- Architecture & Design Principles
- Contributors
- Community & Policies
- Important Notice & Disclaimer
- License
Most WhatsApp modifications require replacing your official application with suspicious, closed-source third-party repackaged APKs. These third-party APKs pose major account security risks, break safety attestation, and often bundle unwanted bloatware or trackers.
WaEnhancerX takes the native Xposed framework approach:
- Zero Client Tampering: Works directly on top of the unmodified, genuine WhatsApp client from Google Play.
- Deep System-Level Integration: Injects settings natively into WhatsApp's internal preferences screen with full search engine support.
- Dynamic CSS Theme Engine: Style message bubbles, action bars, backgrounds, and UI layouts without decompiling or patching XML assets.
- Local History and Exports: Stores preserved-message history and media exports on the device. Network-dependent features and update checks have their own settings and behavior.
The public manager and hooks use Kotlin/Java, Jetpack Compose, Hilt and Android
framework APIs. Features are grouped into packages inside :app, with a required
private :licensing module. The architecture guide
maps the implemented components and their responsibilities.
The APK declares minSdk 24 and targetSdk 36. These build settings do not imply
that every feature has been verified on every Android version or future host
release. Compatibility depends on the target APK, loaded hook framework and
individual hook behavior.
|
|
|
WAEX targets exact package names and evaluates configured version-name rules before initializing its feature registry.
| Target package | Client | Scope of the declaration |
|---|---|---|
com.whatsapp |
WhatsApp Messenger | Declared target; version rules and feature-specific acceptance still apply. |
com.whatsapp.w4b |
WhatsApp Business | Declared target; version rules and feature-specific acceptance still apply. |
| Other explicitly listed packages | Alternative clients | Exact allowlist membership only; no authenticity or compatibility guarantee. |
See the Client Compatibility Guide for the actual allowlist, built-in/custom rules, explicit bypass and unavailable-input states. A matching rule or a green source test does not prove that every feature works.
- A rooted Android device with a working Xposed-compatible framework such as LSPosed, configured for that device.
- An installed target client listed in the module's scope and admitted by its configured version rules.
- An Android version allowed by the APK's declared minimum SDK (currently API 24), plus framework and target-client compatibility. This is not a device test matrix.
The manifest declares the Xposed metadata and arrays.xml declares the recommended scope.
- Download: Select the desired Debug or Release APK from GitHub Releases and read that release's notes.
- Install: Install the APK on the Android device.
- Activate: Enable WaEnhancerX in the loaded framework's manager.
- Set scope: Enable WaEnhancerX (
com.waenhancer) and the installed target, such ascom.whatsapporcom.whatsapp.w4b. System Framework (android) is not part of the declared scope in this source tree. - Restart and inspect: Restart the selected processes as required by the framework, open the WAEX manager, and inspect its compatibility and injection diagnostics. Then check the configured entry point in the target app.
The current build configuration enables code minification and resource shrinking for Release. Debug uses a different optimization configuration; it is still an APK archive. A feature working in Debug must also be checked in optimized Release before a release-specific issue is considered resolved.
The repository currently declares SDK 36, JDK/toolchain 17, Android Gradle Plugin 9.0.1 and a Gradle distribution of 9.1.0 in the wrapper properties. Use an Android Studio version compatible with that AGP release. The Kotlin catalog entry is 2.0.20; the resolved Gradle plugin/compiler version also depends on AGP and should be recorded when validating a full build.
A public clone alone cannot produce the configured APK. Both Debug and Release
require the private :licensing module and the original configured signing key;
the build verifies its certificate during configuration. The current revision
declares a licensing URL in .gitmodules but contains no gitlink or pinned
licensing commit, so recursive submodule initialization alone cannot supply it.
Builders with access must obtain it separately:
git clone https://github.com/WaEnhancerX/WaEnhancerX.git
cd WaEnhancerX
git clone https://github.com/mubashardev/waex-licensing.git licensingBefore building, select a compatible licensing revision supplied by the maintainers and record both commit SHAs. Configure the Android SDK and authorized signing properties as described in CONTRIBUTING.md, then run:
./gradlew :app:assembleDebugThe configured output is
app/build/outputs/apk/debug/WaEnhancerX-v<VERSION_NAME>_debug.apk; Release uses
app/build/outputs/apk/release/WaEnhancerX-v<VERSION_NAME>_release.apk.
VERSION_NAME comes from gradle.properties.
Public-source checks can run without the private module or signing key. See Development Setup and Tests for prerequisites, commands and the distinction between source QA, local unit tests and device tests.
The manager uses WaexPreferenceManager and PreferenceSchema; injected features
read settings through PreferenceBridgeClient and HookProvider. MainHook
selects declared targets and invokes VersionGuard before FeatureRegistry
initializes the feature implementations.
- Current architecture and source map
- Client targeting and version-rule decisions
- Preference stores, backups and provider authorization
These documents describe the public code. They distinguish implemented behavior from historical design proposals and from checks requiring a full APK or device.
Thank you to everyone who has contributed code, reported issues, tested builds, or improved the documentation for WaEnhancerX!
Thanks go to these wonderful people (emoji key):
|
Mubashar Dev π» π π π§ |
TheKillerMax π» |
wilson meow π |
damjang π |
See the complete GitHub contribution history.
Contributions of all kinds are welcome! Check out our Contributing Guidelines to get started.
Join the community, contribute improvements, or review our standards:
- π¬ Telegram: Join @waenhancerx
- π€ Contributing: Contribution Guidelines
- π Code of Conduct: Community Standards
- π Security: Security Policy & Disclosures
- βΏ Accessibility: Accessibility Statement
Please read this disclaimer carefully before using the software:
- Educational & Research Purpose: WaEnhancerX is a proof-of-concept project intended strictly for reverse-engineering research, Android UI/UX experimentation, and educational purposes.
- No Affiliation: This project is independent and is not affiliated with, authorized, sponsored, or endorsed by Meta Platforms, WhatsApp LLC, or any of their affiliates.
- Use at Your Own Discretion: Modifying client runtimes may violate third-party Terms of Service. The maintainers and contributors assume no liability for account bans, data loss, device instability, or any consequences resulting from the use of this tool.
WaEnhancerX is distributed under the terms of the Apache License 2.0.
Copyright 2026 Mubashar Dev and the WaEnhancerX Organization.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0