diff --git a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java
index 36d7e93e8..016f56d07 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java
@@ -34,6 +34,7 @@ import android.util.Log;
 import org.fdroid.fdroid.R;
 import org.fdroid.fdroid.Utils;
 import org.fdroid.fdroid.data.Schema.ApkTable;
+import org.fdroid.fdroid.data.Schema.PackageTable;
 import org.fdroid.fdroid.data.Schema.AppPrefsTable;
 import org.fdroid.fdroid.data.Schema.AppMetadataTable;
 import org.fdroid.fdroid.data.Schema.InstalledAppTable;
@@ -50,6 +51,11 @@ class DBHelper extends SQLiteOpenHelper {
 
     private static final String DATABASE_NAME = "fdroid";
 
+    private static final String CREATE_TABLE_PACKAGE = "CREATE TABLE " + PackageTable.NAME
+            + " ( "
+            + PackageTable.Cols.PACKAGE_NAME + " text not null"
+            + ");";
+
     private static final String CREATE_TABLE_REPO = "create table "
             + RepoTable.NAME + " ("
             + RepoTable.Cols._ID + " integer primary key, "
@@ -146,7 +152,7 @@ class DBHelper extends SQLiteOpenHelper {
             + " );";
     private static final String DROP_TABLE_INSTALLED_APP = "DROP TABLE " + InstalledAppTable.NAME + ";";
 
-    private static final int DB_VERSION = 62;
+    private static final int DB_VERSION = 63;
 
     private final Context context;
 
@@ -248,6 +254,7 @@ class DBHelper extends SQLiteOpenHelper {
     @Override
     public void onCreate(SQLiteDatabase db) {
 
+        db.execSQL(CREATE_TABLE_PACKAGE);
         db.execSQL(CREATE_TABLE_APP_METADATA);
         db.execSQL(CREATE_TABLE_APK);
         db.execSQL(CREATE_TABLE_INSTALLED_APP);
@@ -344,6 +351,13 @@ class DBHelper extends SQLiteOpenHelper {
         addAppPrefsTable(db, oldVersion);
         lowerCaseApkHashes(db, oldVersion);
         supportRepoPushRequests(db, oldVersion);
+        migrateToPackageTable(db, oldVersion);
+    }
+
+    private void migrateToPackageTable(SQLiteDatabase db, int oldVersion) {
+        if (oldVersion < 63) {
+            resetTransient(db);
+        }
     }
 
     private void lowerCaseApkHashes(SQLiteDatabase db, int oldVersion) {
@@ -733,8 +747,12 @@ class DBHelper extends SQLiteOpenHelper {
 
         db.beginTransaction();
         try {
+            if (tableExists(db, PackageTable.NAME)) {
+                db.execSQL("DROP TABLE " + PackageTable.NAME);
+            }
             db.execSQL("DROP TABLE " + AppMetadataTable.NAME);
             db.execSQL("DROP TABLE " + ApkTable.NAME);
+            db.execSQL(CREATE_TABLE_PACKAGE);
             db.execSQL(CREATE_TABLE_APP_METADATA);
             db.execSQL(CREATE_TABLE_APK);
             clearRepoEtags(db);
@@ -765,6 +783,11 @@ class DBHelper extends SQLiteOpenHelper {
     }
 
     private static void ensureIndexes(SQLiteDatabase db) {
+        if (tableExists(db, PackageTable.NAME)) {
+            Utils.debugLog(TAG, "Ensuring indexes exist for " + PackageTable.NAME);
+            db.execSQL("CREATE INDEX IF NOT EXISTS package_packageName on " + PackageTable.NAME + " (" + PackageTable.Cols.PACKAGE_NAME + ");");
+        }
+
         Utils.debugLog(TAG, "Ensuring indexes exist for " + AppMetadataTable.NAME);
         db.execSQL("CREATE INDEX IF NOT EXISTS app_id on " + AppMetadataTable.NAME + " (" + AppMetadataTable.Cols.PACKAGE_NAME + ");");
         db.execSQL("CREATE INDEX IF NOT EXISTS name on " + AppMetadataTable.NAME + " (" + AppMetadataTable.Cols.NAME + ");"); // Used for sorting most lists
diff --git a/app/src/main/java/org/fdroid/fdroid/data/Schema.java b/app/src/main/java/org/fdroid/fdroid/data/Schema.java
index dc5432958..b9037deab 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/Schema.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/Schema.java
@@ -9,6 +9,20 @@ import android.provider.BaseColumns;
  */
 public interface Schema {
 
+    interface PackageTable {
+
+        String NAME = "fdroid_package";
+
+        interface Cols {
+            String ROW_ID = "rowid";
+            String PACKAGE_NAME = "packageName";
+
+            String[] ALL = {
+                    ROW_ID, PACKAGE_NAME,
+            };
+        }
+    }
+
     interface AppPrefsTable {
 
         String NAME = "fdroid_appPrefs";