Introduction
adb shell pm uninstall --user 0 is one of Android’s most copied ADB commands. Thousands of guides claim it “removes” bloatware without root.
- Introduction
- Quick verdict
- What --user 0 actually means
- What actually happens
- Why the APK stays
- Does it free storage?
- How to restore it instantly
- Better removal targets
- The bottom line
- SEO extras
- No, pm uninstall --user 0 Doesn’t Really Delete Android System Apps
- Quick verdict
- What --user 0 actually means
- What actually happens
- Why the APK stays
- Does it free storage?
- Reboot, factory reset, and OTA updates
- How to prove the APK is still there
- How to restore it instantly
- Why disable-user is usually safer
- Android 17 changes
- Apps you should never remove
- Better removal targets
- The bottom line
The reality is simpler: it removes the app from your user profile, not from the phone itself.
The icon disappears. The app stops running. But the original APK usually remains on Android’s protected system partition, ready to return after a factory reset or some OTA updates.
Here’s exactly what the command does, what it doesn’t do, and why newer Android versions are making this trick less reliable.
Quick verdict
Claim True? The app disappears ✅ It survives reboot ✅ The APK is deleted ❌ Factory reset usually brings it back ✅ disable-user is often safer ✅ You need root to truly remove a system app ✅
The biggest misconception is the word “Success.” Package Manager reports success because it removed the package for user 0, not because it erased the APK.
What --user 0 actually means
Run this:
user 0 isn’t Linux root. It’s Android’s primary owner profile.
Without --user 0, Android tries a device-wide uninstall.
System apps live on protected partitions, so Android refuses.
With --user 0, it simply marks the package as not installed for your profile, which is why the launcher icon disappears.
Skip the -k flag unless you intentionally want to keep the app’s data. It doesn’t preserve the APK.
What actually happens
Think of it like this:
After the command:
- The launcher icon disappears.
- The app can’t run for user 0.
- Its background components stop for that user.
- User data is usually removed.
- The original APK stays where it was.
Why the APK stays
Android stores preinstalled apps on read-only partitions like:
/system/system/priv-app/product/system_ext/vendor
These partitions are verified by Android’s security features and aren’t writable from a normal ADB shell.
Package Manager can change user state, but it cannot erase files from those partitions without root or modifying the system image.
Does it free storage?
Only a little.
You may recover:
- app data
- cache
- update files stored under
/data
You do not reclaim the space occupied by the original system APK.
Reboot, factory reset, and OTA updates
Event What happens Reboot App stays removed Factory reset Usually comes back OTA update May return or become re-enabled
A factory reset recreates user 0 from the original system image, so the package gets registered again.
How to prove the APK is still there
A normal package list hides it.
Instead use:
Example output:
or
The path is the proof that the APK still exists.
How to restore it instantly
Because Android never deleted the system APK, restoring it is easy.
Expected result:
If you used disable-user instead:
Why disable-user is usually safer
Instead of uninstalling immediately: Feature uninstall –user 0 disable-user Hidden ✅ ✅ Can’t run ✅ ✅ APK removed ❌ ❌ Easy recovery Moderate Very easy Lower risk ❌ ✅
A safer workflow is:
Live with it disabled for a day or two before uninstalling it for your profile.
Android 17 changes
Recent Android builds have tightened Package Manager restrictions.
Some protected system packages now reject per-user uninstall commands with errors like:
DELETE_FAILED_USER_RESTRICTEDDELETE_FAILED_OWNER_BLOCKED
Several OEMs—including Vivo and iQOO—already block certain packages this way.
In those cases, disable-user may be the only non-root option left.
Apps you should never remove
Avoid uninstalling these unless you have a recovery plan.
com.android.systemuicom.android.settingscom.android.phonecom.android.webviewcom.google.android.gmscom.google.android.gsf- Play Store
- Package Installer
- Permission Controller
- Your only launcher
- Your only keyboard
Removing these can break calls, notifications, app installation, web content, or even boot stability.
Better removal targets
These are generally safer candidates after verifying the package name on your device:
- Facebook preload packages
- Instagram preload packages
- LinkedIn preload packages
- Preinstalled games
- OEM shopping apps
- Duplicate browsers
- Google TV, Meet, or YouTube if you never use them
- Bixby packages if you don’t use Bixby
Always identify the package first.
Don’t copy random package lists from the internet.
The bottom line
pm uninstall --user 0 is better described as a per-user uninstall than a real uninstall.
It hides the app from your Android profile, stops it from running, and removes its user data—but it doesn’t erase the protected system APK. That file stays on the device until you root it, replace the system image, or flash new firmware.
If you’re experimenting with unknown packages, pm disable-user --user 0 is the safer first step. It gives you nearly the same day-to-day result while making recovery much easier if something breaks.
SEO extras
Title (60 chars):
Slug: pm-uninstall-user-0-android-system-apps
Meta description (155 chars): Learn what pm uninstall --user 0 actually does on Android, why it doesn’t delete system apps, how to restore them, and why disable-user is often safer.
Excerpt: Most people think pm uninstall --user 0 deletes Android system apps. It doesn’t. Here’s what really happens, why the APK stays on your phone, and the safest way to debloat without root.
Suggested tags: Android, ADB, Package Manager, Debloating, Android 17, System Apps, Root, Tech Tips
No, pm uninstall --user 0 Doesn’t Really Delete Android System Apps
adb shell pm uninstall --user 0 is one of Android’s most copied ADB commands. Thousands of guides claim it “removes” bloatware without root.
The reality is simpler: it removes the app from your user profile, not from the phone itself.
The icon disappears. The app stops running. But the original APK usually remains on Android’s protected system partition, ready to return after a factory reset or some OTA updates.
Here’s exactly what the command does, what it doesn’t do, and why newer Android versions are making this trick less reliable.
Quick verdict
Claim True? The app disappears ✅ It survives reboot ✅ The APK is deleted ❌ Factory reset usually brings it back ✅ disable-user is often safer ✅ You need root to truly remove a system app ✅
The biggest misconception is the word “Success.” Package Manager reports success because it removed the package for user 0, not because it erased the APK.
What --user 0 actually means
Run this:
user 0 isn’t Linux root. It’s Android’s primary owner profile.
Without --user 0, Android tries a device-wide uninstall.
System apps live on protected partitions, so Android refuses.
With --user 0, it simply marks the package as not installed for your profile, which is why the launcher icon disappears.
Skip the -k flag unless you intentionally want to keep the app’s data. It doesn’t preserve the APK.
What actually happens
Think of it like this:
After the command:
- The launcher icon disappears.
- The app can’t run for user 0.
- Its background components stop for that user.
- User data is usually removed.
- The original APK stays where it was.
Why the APK stays
Android stores preinstalled apps on read-only partitions like:
/system/system/priv-app/product/system_ext/vendor
These partitions are verified by Android’s security features and aren’t writable from a normal ADB shell.
Package Manager can change user state, but it cannot erase files from those partitions without root or modifying the system image.
Does it free storage?
Only a little.
You may recover:
- app data
- cache
- update files stored under
/data
You do not reclaim the space occupied by the original system APK.
Reboot, factory reset, and OTA updates
Event What happens Reboot App stays removed Factory reset Usually comes back OTA update May return or become re-enabled
A factory reset recreates user 0 from the original system image, so the package gets registered again.
How to prove the APK is still there
A normal package list hides it.
Instead use:
Example output:
or
The path is the proof that the APK still exists.
How to restore it instantly
Because Android never deleted the system APK, restoring it is easy.
Expected result:
If you used disable-user instead:
Why disable-user is usually safer
Instead of uninstalling immediately: Feature uninstall –user 0 disable-user Hidden ✅ ✅ Can’t run ✅ ✅ APK removed ❌ ❌ Easy recovery Moderate Very easy Lower risk ❌ ✅
A safer workflow is:
Live with it disabled for a day or two before uninstalling it for your profile.
Android 17 changes
Recent Android builds have tightened Package Manager restrictions.
Some protected system packages now reject per-user uninstall commands with errors like:
DELETE_FAILED_USER_RESTRICTEDDELETE_FAILED_OWNER_BLOCKED
Several OEMs—including Vivo and iQOO—already block certain packages this way.
In those cases, disable-user may be the only non-root option left.
Apps you should never remove
Avoid uninstalling these unless you have a recovery plan.
com.android.systemuicom.android.settingscom.android.phonecom.android.webviewcom.google.android.gmscom.google.android.gsf- Play Store
- Package Installer
- Permission Controller
- Your only launcher
- Your only keyboard
Removing these can break calls, notifications, app installation, web content, or even boot stability.
Better removal targets
These are generally safer candidates after verifying the package name on your device:
- Facebook preload packages
- Instagram preload packages
- LinkedIn preload packages
- Preinstalled games
- OEM shopping apps
- Duplicate browsers
- Google TV, Meet, or YouTube if you never use them
- Bixby packages if you don’t use Bixby
Always identify the package first.
Don’t copy random package lists from the internet.
The bottom line
pm uninstall --user 0 is better described as a per-user uninstall than a real uninstall.
It hides the app from your Android profile, stops it from running, and removes its user data—but it doesn’t erase the protected system APK. That file stays on the device until you root it, replace the system image, or flash new firmware.
If you’re experimenting with unknown packages, pm disable-user --user 0 is the safer first step. It gives you nearly the same day-to-day result while making recovery much easier if something breaks.