diff --git a/lib/ui/contacts_cache.dart b/lib/ui/contacts_cache.dart
index 6b700057740bb7b049b6e1171a2aec1b3e5795c8..8683fc145c0e907a88d7661471f94c61249d3b12 100644
--- a/lib/ui/contacts_cache.dart
+++ b/lib/ui/contacts_cache.dart
@@ -1,8 +1,10 @@
 import 'dart:async';
 import 'dart:convert';
+import 'dart:io';
 
 import 'package:flutter/foundation.dart';
 import 'package:hive/hive.dart';
+import 'package:path_provider/path_provider.dart';
 import 'package:sentry_flutter/sentry_flutter.dart';
 
 import '../data/models/contact.dart';
@@ -20,7 +22,13 @@ class ContactsCache {
   Box<dynamic>? _box;
 
   Future<void> init() async {
-    _box = await Hive.openBox(_boxName);
+    if (kIsWeb) {
+      _box = await Hive.openBox(_boxName);
+    } else {
+      final Directory appDocDir = await getApplicationDocumentsDirectory();
+      final String appDocPath = appDocDir.path;
+      _box = await Hive.openBox(_boxName, path: appDocPath);
+    }
   }
 
   Future<void> dispose() async {
@@ -91,6 +99,8 @@ class ContactsCache {
     }
   }
 
+  Future<void> saveContact(Contact contact) async => addContact(contact);
+
   Future<void> addContact(Contact contact) async {
     // Get the cached version of the contact, if it exists
     Contact? cachedContact = await _retrieveContact(contact.pubKey);