diff --git a/native/native_rust_library/src/identity/account_actions.rs b/native/native_rust_library/src/identity/account_actions.rs
--- a/native/native_rust_library/src/identity/account_actions.rs
+++ b/native/native_rust_library/src/identity/account_actions.rs
@@ -2,7 +2,8 @@
 use grpc_clients::identity::get_auth_client;
 use grpc_clients::identity::protos::auth::{
   DeletePasswordUserFinishRequest, DeletePasswordUserStartRequest,
-  UpdateUserPasswordFinishRequest, UpdateUserPasswordStartRequest,
+  PrimaryDeviceLogoutRequest, UpdateUserPasswordFinishRequest,
+  UpdateUserPasswordStartRequest,
 };
 use grpc_clients::identity::protos::unauth::Empty;
 
@@ -88,6 +89,28 @@
     });
   }
 
+  pub fn log_out_primary_device(
+    user_id: String,
+    device_id: String,
+    access_token: String,
+    signed_device_list: String,
+    promise_id: u32,
+  ) {
+    RUNTIME.spawn(async move {
+      let auth_info = AuthInfo {
+        access_token,
+        user_id,
+        device_id,
+      };
+      let result = log_out_helper(
+        auth_info,
+        LogOutType::PrimaryDevice { signed_device_list },
+      )
+      .await;
+      handle_void_result_as_callback(result, promise_id);
+    });
+  }
+
   pub fn log_out_secondary_device(
     user_id: String,
     device_id: String,
@@ -229,6 +252,7 @@
 
 enum LogOutType {
   Legacy,
+  PrimaryDevice { signed_device_list: String },
   SecondaryDevice,
 }
 
@@ -250,6 +274,10 @@
     LogOutType::SecondaryDevice => {
       identity_client.log_out_secondary_device(Empty {}).await?
     }
+    LogOutType::PrimaryDevice { signed_device_list } => {
+      let request = PrimaryDeviceLogoutRequest { signed_device_list };
+      identity_client.log_out_primary_device(request).await?
+    }
   };
 
   Ok(())
diff --git a/native/native_rust_library/src/lib.rs b/native/native_rust_library/src/lib.rs
--- a/native/native_rust_library/src/lib.rs
+++ b/native/native_rust_library/src/lib.rs
@@ -160,6 +160,15 @@
       promise_id: u32,
     );
 
+    #[cxx_name = "identityLogOutPrimaryDevice"]
+    fn log_out_primary_device(
+      user_id: String,
+      device_id: String,
+      access_token: String,
+      signed_device_list: String,
+      promise_id: u32,
+    );
+
     #[cxx_name = "identityLogOutSecondaryDevice"]
     fn log_out_secondary_device(
       user_id: String,