diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index f351812..a9fab62 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -139,14 +139,15 @@
     try:
       self.load_device()
       self.load_snippet()
+      return func(self, *args, **kwargs)
     except (
         errors.AdbError,
         errors.AndroidDeviceNotReadyError,
         errors.NoAndroidDeviceError,
     ) as e:
       raise errors.AndroidDeviceNotReadyError(f'{func.__name__} failed.') from e
-
-    return func(self, *args, **kwargs)
+    finally:
+      self.unload_snippet()
 
   return wrapped_func
 
@@ -235,6 +236,13 @@
       # has been loaded.
       self._logger.debug(str(e))
 
+  def unload_snippet(self) -> None:
+    """Unloads loaded mobly snippet on connected android device."""
+    if not self._connected_device:
+      return
+
+    self._connected_device.unload_snippet(_MOBLY_SNIPPET_APK_NAME)
+
   @get_android_device_ready
   def commission_device(
       self,
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 7e5cdef..c03b179 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -350,6 +350,22 @@
           _FAKE_MATTER_DEVICE_NAME, _FAKE_PAIRING_CODE, _FAKE_GHA_ROOM
       )
 
+  @mock.patch.object(ui_automator.UIAutomator, 'unload_snippet', autospec=True)
+  @mock.patch.object(android_device, 'get_all_instances', autospec=True)
+  def test_get_android_device_ready_calls_unload_snippet_on_finish(
+      self, mock_get_all_instances, mock_unload_snippet
+  ):
+    mock_get_all_instances.return_value = [self.mock_android_device]
+
+    @ui_automator.get_android_device_ready
+    def decorated_function(self):
+      del self
+      pass
+
+    decorated_function(self.ui_automator)
+
+    mock_unload_snippet.assert_called_once()
+
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_commission_device_calls_a_method_in_snippet_with_desired_args(
       self, mock_get_all_instances
