diff --git a/Sources/Integration/Client.swift b/Sources/Integration/Client.swift
index 2b488ef925bd1d5367b94585dc4959bf14b66ea6..450c674ebc5647268114eb3b251e6b56c12efca4 100644
--- a/Sources/Integration/Client.swift
+++ b/Sources/Integration/Client.swift
@@ -90,7 +90,7 @@ public class Client {
 
     public func addJson(_ string: String) {
         guard let backupManager = backupManager else {
-            fatalError()
+            fatalError("Trying to add json parameters to backup but no backup manager created yet")
         }
 
         print("^^^ Set params: \(string) to backup")
diff --git a/Sources/Integration/Session/Session+UD.swift b/Sources/Integration/Session/Session+UD.swift
index 630d822af475c32bb21fb09bb4d9c8bc80a5a54f..1fd8fc383f0604aa5aa665b9ad80c9702ee2fd84 100644
--- a/Sources/Integration/Session/Session+UD.swift
+++ b/Sources/Integration/Session/Session+UD.swift
@@ -69,6 +69,8 @@ extension Session {
             phone = confirmation.content
         }
 
-        updateFactsOnBackup()
+        if let _ = client.backupManager {
+            updateFactsOnBackup()
+        }
     }
 }
diff --git a/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift b/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
index 313a3694ac8498710b4847c501f41a7889c6535a..9732c4c94d016ae3cd2a6ea35b98477b06160e0b 100644
--- a/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
+++ b/Sources/RequestsFeature/ViewModels/RequestsSentViewModel.swift
@@ -71,8 +71,10 @@ final class RequestsSentViewModel {
                 item.isResent = true
                 allRequests.append(item)
 
+                let name = (contact.nickname ?? contact.username) ?? ""
+
                 self.toastController.enqueueToast(model: .init(
-                    title: Localized.Requests.Sent.Toast.resent(contact.nickname ?? contact.username),
+                    title: Localized.Requests.Sent.Toast.resent(name),
                     leftImage: Asset.requestSentToaster.image
                 ))
 
diff --git a/Sources/SearchFeature/Controllers/SearchContainerController.swift b/Sources/SearchFeature/Controllers/SearchContainerController.swift
index ea6c89d1406aac9bb22c7e5447b499e2dfd48ace..17af9137b366e25c21bca6b6a0f376c1954d22cc 100644
--- a/Sources/SearchFeature/Controllers/SearchContainerController.swift
+++ b/Sources/SearchFeature/Controllers/SearchContainerController.swift
@@ -61,11 +61,14 @@ public final class SearchContainerController: UIViewController {
     private func setupBindings() {
         screenView.segmentedControl
             .actionPublisher
+            .removeDuplicates()
             .receive(on: DispatchQueue.main)
             .sink { [unowned self] in
                 if $0 == .qr {
                     let point = CGPoint(x: screenView.frame.width, y: 0.0)
                     screenView.scrollView.setContentOffset(point, animated: true)
+                    leftController.endEditing()
+                    rightController.viewModel.viewWillAppear()
                 } else {
                     screenView.scrollView.setContentOffset(.zero, animated: true)
                     leftController.viewModel.didSelectItem($0)
diff --git a/Sources/SearchFeature/Controllers/SearchLeftController.swift b/Sources/SearchFeature/Controllers/SearchLeftController.swift
index 21a4d1fe94830fff241158ed230d35c6a03e6e58..d4bb0869e0a8906b7ff77a29381fc4864cfd268f 100644
--- a/Sources/SearchFeature/Controllers/SearchLeftController.swift
+++ b/Sources/SearchFeature/Controllers/SearchLeftController.swift
@@ -35,6 +35,10 @@ final class SearchLeftController: UIViewController {
         setupBindings()
     }
 
+    func endEditing() {
+        screenView.inputField.endEditing(true)
+    }
+
     private func setupTableView() {
         screenView.tableView.separatorStyle = .none
         screenView.tableView.tableFooterView = UIView()
diff --git a/Sources/SearchFeature/Controllers/SearchRightController.swift b/Sources/SearchFeature/Controllers/SearchRightController.swift
index b9d6f47fac6aec948e4d6a17985dda42e1f36352..35240054497992ff2b5a277618321dceffeb652a 100644
--- a/Sources/SearchFeature/Controllers/SearchRightController.swift
+++ b/Sources/SearchFeature/Controllers/SearchRightController.swift
@@ -7,9 +7,9 @@ final class SearchRightController: UIViewController {
 
     lazy private var screenView = SearchRightView()
 
-    private let viewModel = SearchRightViewModel()
     private var cancellables = Set<AnyCancellable>()
     private let cameraController = CameraController()
+    private(set) var viewModel = SearchRightViewModel()
 
     override func loadView() {
         view = screenView
@@ -26,11 +26,6 @@ final class SearchRightController: UIViewController {
         cameraController.previewLayer.frame = screenView.bounds
     }
 
-    override func viewDidAppear(_ animated: Bool) {
-        super.viewDidAppear(animated)
-        viewModel.viewDidAppear()
-    }
-
     override func viewWillDisappear(_ animated: Bool) {
         super.viewWillDisappear(animated)
         viewModel.viewWillDisappear()
diff --git a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
index 1607e4ec81e6b103ef630e02ed7277a1c00b7ddf..94840637e434632621ae947fd7726bba324f4927 100644
--- a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
+++ b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift
@@ -41,6 +41,8 @@ final class SearchLeftViewModel {
     }
 
     func didStartSearching() {
+        guard stateSubject.value.input.isEmpty == false else { return }
+
         hudSubject.send(.on(nil))
 
         let prefix = stateSubject.value.item.written.first!.uppercased()
diff --git a/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift b/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
index ae8a8d506d654e9463aee6a318c12bf866c168cf..5cfe38db68c498a15522f745174e41415281ba17 100644
--- a/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
+++ b/Sources/SearchFeature/ViewModels/SearchRightViewModel.swift
@@ -40,7 +40,7 @@ final class SearchRightViewModel {
     private let cameraSemaphoreSubject = PassthroughSubject<Bool, Never>()
     private(set) var statusSubject = CurrentValueSubject<ScanningStatus, Never>(.reading)
 
-    func viewDidAppear() {
+    func viewWillAppear() {
         permissions.requestCamera { [weak self] granted in
             guard let self = self else { return }