diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
--- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
+++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.h
@@ -38,6 +38,9 @@
   virtual jsi::Value processReportStoreOperations(
       jsi::Runtime &rt,
       jsi::Array operations) override;
+  virtual void processReportStoreOperationsSync(
+      jsi::Runtime &rt,
+      jsi::Array operations) override;
   virtual jsi::Value processMessageStoreOperations(
       jsi::Runtime &rt,
       jsi::Array operations) override;
diff --git a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
--- a/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
+++ b/native/cpp/CommonCpp/NativeModules/CommCoreModule.cpp
@@ -894,6 +894,31 @@
       });
 }
 
+void CommCoreModule::processReportStoreOperationsSync(
+    jsi::Runtime &rt,
+    jsi::Array operations) {
+  std::vector<std::unique_ptr<ReportStoreOperationBase>> reportStoreOps;
+
+  try {
+    reportStoreOps = createReportStoreOperations(rt, operations);
+  } catch (const std::exception &e) {
+    throw jsi::JSError(rt, e.what());
+  }
+
+  this->runSyncOrThrowJSError<void>(rt, [&reportStoreOps]() {
+    try {
+      DatabaseManager::getQueryExecutor().beginTransaction();
+      for (const auto &operation : reportStoreOps) {
+        operation->execute();
+      }
+      DatabaseManager::getQueryExecutor().commitTransaction();
+    } catch (const std::exception &e) {
+      DatabaseManager::getQueryExecutor().rollbackTransaction();
+      throw e;
+    }
+  });
+}
+
 void CommCoreModule::terminate(jsi::Runtime &rt) {
   TerminateApp::terminate();
 }
diff --git a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
--- a/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
+++ b/native/cpp/CommonCpp/_generated/commJSI-generated.cpp
@@ -49,6 +49,10 @@
 static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processReportStoreOperations(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
   return static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->processReportStoreOperations(rt, args[0].asObject(rt).asArray(rt));
 }
+static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processReportStoreOperationsSync(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
+  static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->processReportStoreOperationsSync(rt, args[0].asObject(rt).asArray(rt));
+  return jsi::Value::undefined();
+}
 static jsi::Value __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processThreadStoreOperationsSync(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
   static_cast<CommCoreModuleSchemaCxxSpecJSI *>(&turboModule)->processThreadStoreOperationsSync(rt, args[0].asObject(rt).asArray(rt));
   return jsi::Value::undefined();
@@ -127,6 +131,7 @@
   methodMap_["getAllThreadsSync"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getAllThreadsSync};
   methodMap_["processThreadStoreOperations"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processThreadStoreOperations};
   methodMap_["processReportStoreOperations"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processReportStoreOperations};
+  methodMap_["processReportStoreOperationsSync"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processReportStoreOperationsSync};
   methodMap_["processThreadStoreOperationsSync"] = MethodMetadata {1, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_processThreadStoreOperationsSync};
   methodMap_["initializeCryptoAccount"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_initializeCryptoAccount};
   methodMap_["getUserPublicKey"] = MethodMetadata {0, __hostFunction_CommCoreModuleSchemaCxxSpecJSI_getUserPublicKey};
diff --git a/native/cpp/CommonCpp/_generated/commJSI.h b/native/cpp/CommonCpp/_generated/commJSI.h
--- a/native/cpp/CommonCpp/_generated/commJSI.h
+++ b/native/cpp/CommonCpp/_generated/commJSI.h
@@ -32,6 +32,7 @@
   virtual jsi::Array getAllThreadsSync(jsi::Runtime &rt) = 0;
   virtual jsi::Value processThreadStoreOperations(jsi::Runtime &rt, jsi::Array operations) = 0;
   virtual jsi::Value processReportStoreOperations(jsi::Runtime &rt, jsi::Array operations) = 0;
+  virtual void processReportStoreOperationsSync(jsi::Runtime &rt, jsi::Array operations) = 0;
   virtual void processThreadStoreOperationsSync(jsi::Runtime &rt, jsi::Array operations) = 0;
   virtual jsi::Value initializeCryptoAccount(jsi::Runtime &rt) = 0;
   virtual jsi::Value getUserPublicKey(jsi::Runtime &rt) = 0;
@@ -169,6 +170,14 @@
       return bridging::callFromJs<jsi::Value>(
           rt, &T::processReportStoreOperations, jsInvoker_, instance_, std::move(operations));
     }
+    void processReportStoreOperationsSync(jsi::Runtime &rt, jsi::Array operations) override {
+      static_assert(
+          bridging::getParameterCount(&T::processReportStoreOperationsSync) == 2,
+          "Expected processReportStoreOperationsSync(...) to have 2 parameters");
+
+      return bridging::callFromJs<void>(
+          rt, &T::processReportStoreOperationsSync, jsInvoker_, instance_, std::move(operations));
+    }
     void processThreadStoreOperationsSync(jsi::Runtime &rt, jsi::Array operations) override {
       static_assert(
           bridging::getParameterCount(&T::processThreadStoreOperationsSync) == 2,
diff --git a/native/schema/CommCoreModuleSchema.js b/native/schema/CommCoreModuleSchema.js
--- a/native/schema/CommCoreModuleSchema.js
+++ b/native/schema/CommCoreModuleSchema.js
@@ -54,6 +54,9 @@
   +processReportStoreOperations: (
     operations: $ReadOnlyArray<ClientDBReportStoreOperation>,
   ) => Promise<void>;
+  +processReportStoreOperationsSync: (
+    operations: $ReadOnlyArray<ClientDBReportStoreOperation>,
+  ) => void;
   +processThreadStoreOperationsSync: (
     operations: $ReadOnlyArray<ClientDBThreadStoreOperation>,
   ) => void;