# Universal Android Debloater Expert Mode: What It Unlocks and How to Enable It

> Unlock expert mode in Universal Android Debloater to reveal and remove unsafe system packages. Gain full control over your device with this powerful feature.

- Repository: [Universal-Debloater-Alliance/universal-android-debloater-next-generation](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation)
- Tags: deep-dive
- Published: 2026-06-20

---

**Expert mode is a safety-gated configuration flag that unlocks the visibility and removal of system packages marked as "Unsafe," preventing accidental device breakage while giving power users full control over potentially dangerous system components.**

The **Universal Android Debloater Next Generation (UAD-NG)** is a Rust-based open-source tool for removing bloatware from Android devices. The **expert mode feature** acts as a protective barrier that hides packages deemed critical to system stability, ensuring that only knowledgeable users can access functions that might otherwise brick a device.

## What Is Expert Mode in UAD-NG?

Expert mode is a boolean flag (`expert_mode`) defined in the application's general configuration settings. Located in [`crates/uad-core/src/config.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-core/src/config.rs), this flag defaults to `false` to enforce a safe-by-default policy. When disabled, the application treats any package with a `removal` field set to `Unsafe` as invisible and non-actionable, effectively preventing users from interacting with components that could compromise boot capability, network connectivity, or core system functions.

## How to Enable Expert Mode

You can activate expert mode through two primary methods: the GUI settings panel or by manually editing the configuration file.

### Via the GUI Settings Checkbox

In [`crates/uad-gui/src/views/settings.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/views/settings.rs), the settings view renders a checkbox bound to `self.general.expert_mode`. Toggling this checkbox updates the configuration in real-time:

```rust
// Settings view checkbox implementation
let expert_mode_checkbox = checkbox(self.general.expert_mode);
let expert_mode_descr = text("Allow removal of packages marked as **Unsafe**. Use with caution.");

```

When clicked, the internal handler updates the persistent configuration, immediately affecting how the package list renders.

### Via the Configuration File

The flag is stored in the TOML configuration file (typically [`config.toml`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/config.toml)) under the `[general]` section:

```toml
[general]
theme = "Auto (follow system theme)"
expert_mode = true   # Set to true to enable expert mode

backup_folder = "/home/user/.cache/uad/backups"

```

Changes persist across sessions and apply to both the GUI and CLI components.

## Capabilities Unlocked by Expert Mode

Enabling expert mode grants three specific capabilities that are otherwise restricted to protect casual users:

**Visibility of Unsafe Packages**: The GUI renders packages categorized as `Removal::Unsafe` in the package list view ([`crates/uad-gui/src/views/list.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/views/list.rs)), making them visible for review alongside safe and recommended packages.

**Removal Actions for Unsafe Packages**: In [`crates/uad-gui/src/widgets/package_row.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/widgets/package_row.rs), the remove button is enabled only when `expert_mode` is `true` for packages with `removal == Removal::Unsafe`:

```rust
// Conditional removal logic in package_row.rs
if package.removal == Removal::Unsafe && !settings.general.expert_mode {
    // Remove button is disabled/hidden
}

```

**CLI Filtering and Action**: The command-line interface respects the expert mode setting. When enabled, users can list unsafe packages using the `--removal expert` flag as documented in [`crates/uad-cli/README.md`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-cli/README.md):

```bash

# List only packages requiring expert mode to remove

uad list --removal expert

```

## Technical Implementation Details

The implementation spans multiple crates to maintain consistency between GUI and CLI environments.

**Configuration Layer**: In [`crates/uad-core/src/config.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-core/src/config.rs), the `expert_mode` boolean is defined with a default value of `false`, ensuring the application starts in a safe state regardless of previous usage.

**UI Enforcement**: The [`package_row.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/package_row.rs) widget checks the configuration before rendering action buttons. If a package is marked `Unsafe` and expert mode is disabled, the removal interface is suppressed regardless of user permissions on the host system.

**Persistence**: All changes to the expert mode state are written to the TOML configuration file, maintaining the user's preference across sessions and ensuring the CLI respects the same safety boundaries as the GUI.

## Risks and Safety Considerations

The **unsafe** designation indicates that removing the package may break critical system functionality, prevent the device from booting, or disable essential hardware drivers. Expert mode is deliberately difficult to enable to prevent accidental system damage. Only enable this feature if you have verified backups, understand the specific role of the packages you intend to remove, and are prepared to recover your device via fastboot or recovery mode if necessary.

## Summary

- Expert mode is a boolean flag (`expert_mode`) in the general configuration that defaults to `false` for safety.
- It is defined in [`crates/uad-core/src/config.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-core/src/config.rs) and toggled via [`crates/uad-gui/src/views/settings.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/views/settings.rs).
- When enabled, it reveals packages marked `Removal::Unsafe` in the GUI and allows their removal via [`crates/uad-gui/src/widgets/package_row.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/widgets/package_row.rs).
- The CLI supports `--removal expert` filtering when the mode is active, as shown in [`crates/uad-cli/README.md`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-cli/README.md).
- Changes persist in [`config.toml`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/config.toml) under the `[general]` section.

## Frequently Asked Questions

### What happens if I try to remove an unsafe package without expert mode enabled?

The application prevents the action entirely. In the GUI, the remove button is disabled or hidden for any package where `removal == Removal::Unsafe` when `expert_mode` is `false`. The CLI will refuse to list or act on these packages unless you explicitly enable expert mode in the configuration.

### Where is the expert mode setting stored?

The setting is stored in the TOML configuration file under the `[general]` section as `expert_mode = false` (or `true`). This file is managed through the `Config` struct in [`crates/uad-core/src/config.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-core/src/config.rs) and updated via the settings UI in [`crates/uad-gui/src/views/settings.rs`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-gui/src/views/settings.rs).

### Can I use expert mode with the CLI only?

Yes. The CLI respects the same configuration flag. After enabling expert mode in the config file or GUI, you can use the `--removal expert` flag with `uad list` to filter for unsafe packages, as documented in [`crates/uad-cli/README.md`](https://github.com/Universal-Debloater-Alliance/universal-android-debloater-next-generation/blob/main/crates/uad-cli/README.md).

### Is it safe to enable expert mode if I don't plan to remove unsafe packages?

Enabling expert mode itself does not modify your device; it only reveals additional options in the interface. However, it increases the risk of accidental removal if you mistakenly click the unlock removal buttons. Keep it disabled unless you specifically need to access unsafe packages.