diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/module/AppListCacheModule.kt b/service/src/main/java/com/github/kr328/clash/service/clash/module/AppListCacheModule.kt
index 97697594d13f2e215870e9740f9e9489dea40507..04c96b248d2587f6d2581e297e49c785ecc6e7e2 100644
--- a/service/src/main/java/com/github/kr328/clash/service/clash/module/AppListCacheModule.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/clash/module/AppListCacheModule.kt
@@ -15,7 +15,19 @@ class AppListCacheModule(service: Service) : Module<Unit>(service) {
 
     private fun reload() {
         val packages = service.packageManager.getInstalledPackages(0)
-            .map { it.applicationInfo.uid to it.uniqueUidName() }
+            .groupBy { it.uniqueUidName() }
+            .map { (_, v) ->
+                val info = v[0]
+
+                if (v.size == 1) {
+                    // Force use package name if only one app in a single sharedUid group
+                    // Example: firefox
+
+                    info.applicationInfo.uid to info.packageName
+                } else {
+                    info.applicationInfo.uid to info.uniqueUidName()
+                }
+            }
 
         Clash.notifyInstalledAppsChanged(packages)