diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index f291a80..7963719 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -183,7 +183,10 @@
     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;
@@ -288,6 +291,9 @@
                 @NonNull AppDiscoveryUpdateState state) {
         mAppDiscoveryUpdateState = state;
         switch (state) {
+            case SUGGESTED:
+                mSuggestedApp = app != null ? new AppDiscoveryAppInfo(app) : null;
+                break;
             case START:
                 mDiscoveredApps.clear();
                 break;
@@ -435,6 +441,7 @@
         // 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) {
@@ -445,11 +452,16 @@
                     }
                 }
                 // Stop at the number of predicted apps
-                if (mPredictedApps.size() == mNumPredictedAppsPerRow) {
+                if (mPredictedApps.size() + suggestedAppsCount == 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 0700a10..6c68044 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
+    START, UPDATE, END, SUGGESTED
 }
