diff --git a/jami-android/app/src/main/java/cx/ring/fragments/HomeFragment.kt b/jami-android/app/src/main/java/cx/ring/fragments/HomeFragment.kt
index fd56d628f6beaf423e868bcd20deb3278bf63d8d..1be5794c8a9b489834eb241d7a6e2fde31a43b74 100644
--- a/jami-android/app/src/main/java/cx/ring/fragments/HomeFragment.kt
+++ b/jami-android/app/src/main/java/cx/ring/fragments/HomeFragment.kt
@@ -73,6 +73,7 @@ import javax.inject.Inject
 import com.google.android.material.search.SearchView.TransitionState
 import com.google.android.material.shape.MaterialShapeDrawable
 import cx.ring.databinding.FragHomeBinding
+import io.reactivex.rxjava3.disposables.Disposable
 
 @AndroidEntryPoint
 class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
@@ -84,7 +85,7 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
     private var mHasPendingBadge = false
     private val mDisposable = CompositeDisposable()
     private var mSearchView: SearchView? = null
-    private val searchDisposable = CompositeDisposable()
+    private var searchDisposable: Disposable? = null
     private var searchAdapter: SmartListAdapter? = null
     private var pendingAdapter: SmartListAdapter? = null
     private val querySubject = BehaviorSubject.createDefault("")
@@ -242,18 +243,13 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
                     // Hide floating button to avoid weird animation
                     binding.newSwarmFab.isVisible = true
 
-                    searchDisposable.clear()
+                    searchDisposable?.dispose()
+                    querySubject.onNext("")
+                    searchAdapter?.update(ConversationFacade.ConversationList())
+                    searchDisposable = null
                 } else if (previousState === TransitionState.HIDDEN) { // Showing
-                    // Make floating button visible again
                     binding.newSwarmFab.isVisible = false
-
-                    searchDisposable.add(
-                        mConversationFacade.getSearchResults(
-                            mConversationFacade.currentAccountSubject, debouncedQuery
-                        )
-                            .observeOn(DeviceUtils.uiScheduler)
-                            .subscribe { searchAdapter?.update(it) }
-                    )
+                    startSearch()
                 }
             }
 
@@ -293,6 +289,15 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
             binding.root
         }
 
+    private fun startSearch() {
+        searchDisposable?.dispose()
+        val disposable = mConversationFacade.getSearchResults(debouncedQuery)
+            .observeOn(DeviceUtils.uiScheduler)
+            .subscribe { searchAdapter?.update(it) }
+        searchDisposable = disposable
+        mDisposable.add(disposable)
+    }
+
     /**
      * Expand the appBarLayoutBottom to give fixed space between it and fragmentList.
      */
@@ -443,7 +448,6 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
 
     override fun onStart() {
         super.onStart()
-        mDisposable.add(searchDisposable)
         activity?.intent?.let { handleIntent(it) }
 
         // Subscribe on invitation pending list to show a badge counter
@@ -491,6 +495,9 @@ class HomeFragment : BaseSupportFragment<HomePresenter, HomeView>(),
                     )
             }
         )
+
+        if (mBinding!!.searchView.isShowing)
+            startSearch()
     }
 
     override fun onStop() {
diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
index e1e12325e4e43007f7c8fb1f3dd3e22aac1bcfc0..04f7e02d9dcf91dce0ab071212d54ae896317426 100644
--- a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
+++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
@@ -433,8 +433,7 @@ class ConversationFacade(
         }*/
 
     fun getSearchResults(
-        currentAccount: Observable<Account>,
-        query: Observable<String>,
+        query: Observable<String>, currentAccount: Observable<Account> = currentAccountSubject,
     ): Observable<ConversationList> =
         currentAccount.switchMap { account ->
             Observable.combineLatest(