diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000..932e83ebb9
Binary files /dev/null and b/.DS_Store differ
diff --git a/design/immich-logo-no-outline.png b/design/immich-logo-no-outline.png
new file mode 100644
index 0000000000..d4e7085f12
Binary files /dev/null and b/design/immich-logo-no-outline.png differ
diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock
index 296e770b67..2f2de0c109 100644
--- a/mobile/ios/Podfile.lock
+++ b/mobile/ios/Podfile.lock
@@ -2,6 +2,9 @@ PODS:
   - device_info_plus (0.0.1):
     - Flutter
   - Flutter (1.0.0)
+  - fluttertoast (0.0.2):
+    - Flutter
+    - Toast
   - FMDB (2.7.5):
     - FMDB/standard (= 2.7.5)
   - FMDB/standard (2.7.5)
@@ -13,10 +16,12 @@ PODS:
   - sqflite (0.0.2):
     - Flutter
     - FMDB (>= 2.7.5)
+  - Toast (4.0.0)
 
 DEPENDENCIES:
   - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
   - Flutter (from `Flutter`)
+  - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
   - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
   - photo_manager (from `.symlinks/plugins/photo_manager/ios`)
   - sqflite (from `.symlinks/plugins/sqflite/ios`)
@@ -24,12 +29,15 @@ DEPENDENCIES:
 SPEC REPOS:
   trunk:
     - FMDB
+    - Toast
 
 EXTERNAL SOURCES:
   device_info_plus:
     :path: ".symlinks/plugins/device_info_plus/ios"
   Flutter:
     :path: Flutter
+  fluttertoast:
+    :path: ".symlinks/plugins/fluttertoast/ios"
   path_provider_ios:
     :path: ".symlinks/plugins/path_provider_ios/ios"
   photo_manager:
@@ -40,10 +48,12 @@ EXTERNAL SOURCES:
 SPEC CHECKSUMS:
   device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
   Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
+  fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
   photo_manager: 84fa94fbeb82e607333ea9a13c43b58e0903a463
   sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
+  Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
 
 PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
 
diff --git a/mobile/lib/modules/login/providers/authentication.provider.dart b/mobile/lib/modules/login/providers/authentication.provider.dart
index 90699f1d39..caa52a41a7 100644
--- a/mobile/lib/modules/login/providers/authentication.provider.dart
+++ b/mobile/lib/modules/login/providers/authentication.provider.dart
@@ -9,7 +9,6 @@ import 'package:immich_mobile/shared/services/backup.service.dart';
 import 'package:immich_mobile/shared/services/device_info.service.dart';
 import 'package:immich_mobile/shared/services/network.service.dart';
 import 'package:immich_mobile/shared/models/device_info.model.dart';
-import 'package:immich_mobile/utils/dio_http_interceptor.dart';
 
 class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
   AuthenticationNotifier()
@@ -45,8 +44,12 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
       Hive.box(userInfoBox).put(serverEndpointKey, serverEndpoint);
     }
 
-    bool isServerEndpointVerified = await _networkService.pingServer();
-    if (!isServerEndpointVerified) {
+    try {
+      bool isServerEndpointVerified = await _networkService.pingServer();
+      if (!isServerEndpointVerified) {
+        return false;
+      }
+    } catch (e) {
       return false;
     }
 
diff --git a/mobile/lib/modules/login/ui/login_form.dart b/mobile/lib/modules/login/ui/login_form.dart
index 9757d476ee..47c8f66e61 100644
--- a/mobile/lib/modules/login/ui/login_form.dart
+++ b/mobile/lib/modules/login/ui/login_form.dart
@@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:google_fonts/google_fonts.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class LoginForm extends HookConsumerWidget {
   const LoginForm({Key? key}) : super(key: key);
@@ -116,7 +117,10 @@ class LoginButton extends ConsumerWidget {
           if (isAuthenicated) {
             AutoRouter.of(context).pushNamed("/home-page");
           } else {
-            debugPrint("BAD LOGIN TRY AGAIN - Show UI Here");
+            ImmichToast.show(
+                context: context,
+                msg: "Error logging you in, check server url, emald and password!",
+                toastType: ToastType.error);
           }
         },
         child: const Text("Login"));
diff --git a/mobile/lib/shared/ui/immich_toast.dart b/mobile/lib/shared/ui/immich_toast.dart
new file mode 100644
index 0000000000..89781ccb48
--- /dev/null
+++ b/mobile/lib/shared/ui/immich_toast.dart
@@ -0,0 +1,69 @@
+import 'package:flutter/material.dart';
+import 'package:fluttertoast/fluttertoast.dart';
+
+enum ToastType { info, success, error }
+
+class ImmichToast {
+  static show({
+    required BuildContext context,
+    required String msg,
+    ToastType toastType = ToastType.info,
+  }) {
+    FToast fToast;
+
+    fToast = FToast();
+    fToast.init(context);
+
+    fToast.showToast(
+      child: Container(
+        padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0),
+        decoration: BoxDecoration(
+          borderRadius: BorderRadius.circular(5.0),
+          color: Colors.grey[50],
+          border: Border.all(
+            color: Colors.black12,
+            width: 1,
+          ),
+        ),
+        child: Row(
+          mainAxisSize: MainAxisSize.min,
+          children: [
+            (toastType == ToastType.info)
+                ? Icon(
+                    Icons.info_outline_rounded,
+                    color: Theme.of(context).primaryColor,
+                  )
+                : Container(),
+            (toastType == ToastType.success)
+                ? const Icon(
+                    Icons.check,
+                    color: Color.fromARGB(255, 104, 248, 140),
+                  )
+                : Container(),
+            (toastType == ToastType.error)
+                ? const Icon(
+                    Icons.error_outline_rounded,
+                    color: Color.fromARGB(255, 240, 162, 156),
+                  )
+                : Container(),
+            const SizedBox(
+              width: 12.0,
+            ),
+            Flexible(
+              child: Text(
+                msg,
+                style: TextStyle(
+                  color: Theme.of(context).primaryColor,
+                  fontWeight: FontWeight.bold,
+                  fontSize: 15,
+                ),
+              ),
+            ),
+          ],
+        ),
+      ),
+      gravity: ToastGravity.TOP,
+      toastDuration: const Duration(seconds: 2),
+    );
+  }
+}
diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock
index 2b015d255c..5b51a0e06a 100644
--- a/mobile/pubspec.lock
+++ b/mobile/pubspec.lock
@@ -359,6 +359,13 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  fluttertoast:
+    dependency: "direct main"
+    description:
+      name: fluttertoast
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "8.0.8"
   frontend_server_client:
     dependency: transitive
     description:
diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml
index e1978e0cc2..abee88f574 100644
--- a/mobile/pubspec.yaml
+++ b/mobile/pubspec.yaml
@@ -27,6 +27,7 @@ dependencies:
   transparent_image: ^2.0.0
   visibility_detector: ^0.2.2
   flutter_launcher_icons: "^0.9.2"
+  fluttertoast: ^8.0.8
 
 dev_dependencies:
   flutter_test: