diff --git a/lib/commands/gesture.js b/lib/commands/gesture.js
index <HASH>..<HASH> 100644
--- a/lib/commands/gesture.js
+++ b/lib/commands/gesture.js
@@ -130,6 +130,10 @@ commands.performActions = async function performActions (actions) {
   return await this.proxyCommand('/actions', 'POST', {actions: preprocessedActions});
 };
 
+commands.releaseActions = function releaseActions () {
+  log.warn('On this platform, releaseActions is a no-op');
+};
+
 commands.performTouch = async function performTouch (gestures) {
   log.debug(`Received the following touch action: ${gesturesChainToString(gestures)}`);
   try {
diff --git a/test/unit/commands/gesture-specs.js b/test/unit/commands/gesture-specs.js
index <HASH>..<HASH> 100644
--- a/test/unit/commands/gesture-specs.js
+++ b/test/unit/commands/gesture-specs.js
@@ -400,3 +400,10 @@ describe('gesture commands', function () {
     });
   });
 });
+
+describe('W3C actions', function () {
+  const driver = new XCUITestDriver();
+  it('releaseActions should exist and do nothing', async function () {
+    await driver.releaseActions();
+  });
+});
feat: add release actions as a no-op command