diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index 7963719..f291a80 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -183,10 +183,7 @@
     private final List<ComponentKey> mPredictedAppComponents = new ArrayList<>();
     // The set of predicted apps resolved from the component names and the current set of apps
     private final List<AppInfo> mPredictedApps = new ArrayList<>();
-    // The set of apps returned from a discovery service while searching
     private final List<AppDiscoveryAppInfo> mDiscoveredApps = new ArrayList<>();
-    // The suggested app returned by a discovery service
-    private AppDiscoveryAppInfo mSuggestedApp;
 
     // The of ordered component names as a result of a search query
     private ArrayList<ComponentKey> mSearchResults;
@@ -291,9 +288,6 @@
                 @NonNull AppDiscoveryUpdateState state) {
         mAppDiscoveryUpdateState = state;
         switch (state) {
-            case SUGGESTED:
-                mSuggestedApp = app != null ? new AppDiscoveryAppInfo(app) : null;
-                break;
             case START:
                 mDiscoveredApps.clear();
                 break;
@@ -441,7 +435,6 @@
         // Process the predicted app components
         mPredictedApps.clear();
         if (mPredictedAppComponents != null && !mPredictedAppComponents.isEmpty() && !hasFilter()) {
-            int suggestedAppsCount = mSuggestedApp != null ? 1 : 0;
             for (ComponentKey ck : mPredictedAppComponents) {
                 AppInfo info = mComponentToAppMap.get(ck);
                 if (info != null) {
@@ -452,16 +445,11 @@
                     }
                 }
                 // Stop at the number of predicted apps
-                if (mPredictedApps.size() + suggestedAppsCount == mNumPredictedAppsPerRow) {
+                if (mPredictedApps.size() == mNumPredictedAppsPerRow) {
                     break;
                 }
             }
 
-            if (mSuggestedApp != null) {
-                // adding suggested app as the last predicted app
-                mPredictedApps.add(mSuggestedApp);
-            }
-
             if (!mPredictedApps.isEmpty()) {
                 // Add a section for the predictions
                 lastFastScrollerSectionInfo = new FastScrollSectionInfo("");
diff --git a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
index 6c68044..0700a10 100644
--- a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
+++ b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
@@ -17,5 +17,5 @@
 package com.android.launcher3.discovery;
 
 public enum AppDiscoveryUpdateState {
-    START, UPDATE, END, SUGGESTED
+    START, UPDATE, END
 }
