diff --git a/dom/base/nsFrameMessageManager.cpp b/dom/base/nsFrameMessageManager.cpp
index 8f913f31840adb426af3ab2500aa2a0d969c6c3a..91e034c18f50dd4e5a0b953a4aaebd2774bce3aa 100644
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -469,15 +469,6 @@ bool nsFrameMessageManager::GetParamsForMessage(JSContext* aCx,
 
 static bool sSendingSyncMessage = false;
 
-static bool AllowMessage(size_t aDataLength, const nsAString& aMessageName) {
-  // A message includes more than structured clone data, so subtract
-  // 20KB to make it more likely that a message within this bound won't
-  // result in an overly large IPC message.
-  static const size_t kMaxMessageSize =
-      IPC::Channel::kMaximumMessageSize - 20 * 1024;
-  return aDataLength < kMaxMessageSize;
-}
-
 void nsFrameMessageManager::SendSyncMessage(JSContext* aCx,
                                             const nsAString& aMessageName,
                                             JS::Handle<JS::Value> aObj,
@@ -511,11 +502,6 @@ void nsFrameMessageManager::SendSyncMessage(JSContext* aCx,
   }
 #endif
 
-  if (!AllowMessage(data.DataLength(), aMessageName)) {
-    aError.Throw(NS_ERROR_FAILURE);
-    return;
-  }
-
   if (!mCallback) {
     aError.Throw(NS_ERROR_NOT_INITIALIZED);
     return;
@@ -593,11 +579,6 @@ void nsFrameMessageManager::DispatchAsyncMessage(
   }
 #endif
 
-  if (!AllowMessage(data.DataLength(), aMessageName)) {
-    aError.Throw(NS_ERROR_FAILURE);
-    return;
-  }
-
   aError = DispatchAsyncMessageInternal(aCx, aMessageName, data);
 }
 
diff --git a/dom/ipc/jsactor/JSActor.cpp b/dom/ipc/jsactor/JSActor.cpp
index c409d6a1bb2f7e91ce9694d02a8c16adf6ca3b4b..4e4a2b7bacf4d068b93251331000ed32e3a1dc97 100644
--- a/dom/ipc/jsactor/JSActor.cpp
+++ b/dom/ipc/jsactor/JSActor.cpp
@@ -129,21 +129,6 @@ nsresult JSActor::QueryInterfaceActor(const nsIID& aIID, void** aPtr) {
   return mWrappedJS->QueryInterface(aIID, aPtr);
 }
 
-/* static */
-bool JSActor::AllowMessage(const JSActorMessageMeta& aMetadata,
-                           size_t aDataLength) {
-  // A message includes more than structured clone data, so subtract
-  // 20KB to make it more likely that a message within this bound won't
-  // result in an overly large IPC message.
-  static const size_t kMaxMessageSize =
-      IPC::Channel::kMaximumMessageSize - 20 * 1024;
-  if (aDataLength < kMaxMessageSize) {
-    return true;
-  }
-
-  return false;
-}
-
 void JSActor::SetName(const nsACString& aName) {
   MOZ_ASSERT(mName.IsEmpty(), "Cannot set name twice!");
   mName = aName;
diff --git a/dom/ipc/jsactor/JSActor.h b/dom/ipc/jsactor/JSActor.h
index b4bd1e421daa4e8d1d4e180f5441472896df4478..54af93d1cee4432c469ff7a087438aa07b3b0446 100644
--- a/dom/ipc/jsactor/JSActor.h
+++ b/dom/ipc/jsactor/JSActor.h
@@ -69,11 +69,6 @@ class JSActor : public nsISupports, public nsWrapperCache {
                               Maybe<ipc::StructuredCloneData>&& aStack,
                               ErrorResult& aRv) = 0;
 
-  // Check if a message is so large that IPC will probably crash if we try to
-  // send it. If it is too large, record telemetry about the message.
-  static bool AllowMessage(const JSActorMessageMeta& aMetadata,
-                           size_t aDataLength);
-
   // Helper method to send an in-process raw message.
   using OtherSideCallback = std::function<already_AddRefed<JSActorManager>()>;
   static void SendRawMessageInProcess(const JSActorMessageMeta& aMeta,
diff --git a/dom/ipc/jsactor/JSProcessActorChild.cpp b/dom/ipc/jsactor/JSProcessActorChild.cpp
index 6c23af656e34ef225b845e40dc23e241788ef024..a9379838cfa41ac0c641c0b44ddd3436dc481221 100644
--- a/dom/ipc/jsactor/JSProcessActorChild.cpp
+++ b/dom/ipc/jsactor/JSProcessActorChild.cpp
@@ -33,21 +33,6 @@ void JSProcessActorChild::SendRawMessage(
     return;
   }
 
-  size_t length = 0;
-  if (aData) {
-    length += aData->DataLength();
-  }
-  if (aStack) {
-    length += aStack->DataLength();
-  }
-  if (NS_WARN_IF(!AllowMessage(aMeta, length))) {
-    aRv.ThrowDataCloneError(
-        nsPrintfCString("JSProcessActorChild serialization error: data too "
-                        "large, in actor '%s'",
-                        PromiseFlatCString(aMeta.actorName()).get()));
-    return;
-  }
-
   // If the parent side is in the same process, we have a PInProcess manager,
   // and can dispatch the message directly to the event loop.
   ContentChild* contentChild = mManager->AsContentChild();
diff --git a/dom/ipc/jsactor/JSProcessActorParent.cpp b/dom/ipc/jsactor/JSProcessActorParent.cpp
index 52490f167583b8d773b2d6e5c4ff55453c7208be..eec8ad17c73b1123e7d390e268603bc7b7b81802 100644
--- a/dom/ipc/jsactor/JSProcessActorParent.cpp
+++ b/dom/ipc/jsactor/JSProcessActorParent.cpp
@@ -46,21 +46,6 @@ void JSProcessActorParent::SendRawMessage(
     return;
   }
 
-  size_t length = 0;
-  if (aData) {
-    length += aData->DataLength();
-  }
-  if (aStack) {
-    length += aStack->DataLength();
-  }
-  if (NS_WARN_IF(!AllowMessage(aMeta, length))) {
-    aRv.ThrowDataError(nsPrintfCString(
-        "Actor '%s' cannot send message '%s': message too long.",
-        PromiseFlatCString(aMeta.actorName()).get(),
-        NS_ConvertUTF16toUTF8(aMeta.messageName()).get()));
-    return;
-  }
-
   // If the parent side is in the same process, we have a PInProcess manager,
   // and can dispatch the message directly to the event loop.
   ContentParent* contentParent = mManager->AsContentParent();
diff --git a/dom/ipc/jsactor/JSWindowActorChild.cpp b/dom/ipc/jsactor/JSWindowActorChild.cpp
index db3c60963c53239b6ebd37b51d92709ecf4a2873..a36c065028269b5052a1d54864c258c5707535c8 100644
--- a/dom/ipc/jsactor/JSWindowActorChild.cpp
+++ b/dom/ipc/jsactor/JSWindowActorChild.cpp
@@ -53,22 +53,6 @@ void JSWindowActorChild::SendRawMessage(
     return;
   }
 
-  size_t length = 0;
-  if (aData) {
-    length += aData->DataLength();
-  }
-  if (aStack) {
-    length += aStack->DataLength();
-  }
-
-  if (NS_WARN_IF(!AllowMessage(aMeta, length))) {
-    aRv.ThrowDataCloneError(
-        nsPrintfCString("JSWindowActorChild serialization error: data too "
-                        "large, in actor '%s'",
-                        PromiseFlatCString(aMeta.actorName()).get()));
-    return;
-  }
-
   // Cross-process case - send data over WindowGlobalChild to other side.
   Maybe<ClonedMessageData> msgData;
   if (aData) {
diff --git a/dom/ipc/jsactor/JSWindowActorParent.cpp b/dom/ipc/jsactor/JSWindowActorParent.cpp
index 73455dc9fdd71c462950fa27182321633d9a58ea..0bb82a9b8ec68f29b08cded32ec7c65d49c0c06f 100644
--- a/dom/ipc/jsactor/JSWindowActorParent.cpp
+++ b/dom/ipc/jsactor/JSWindowActorParent.cpp
@@ -51,22 +51,6 @@ void JSWindowActorParent::SendRawMessage(
     return;
   }
 
-  size_t length = 0;
-  if (aData) {
-    length += aData->DataLength();
-  }
-  if (aStack) {
-    length += aStack->DataLength();
-  }
-
-  if (NS_WARN_IF(!AllowMessage(aMeta, length))) {
-    aRv.ThrowDataCloneError(
-        nsPrintfCString("JSWindowActorParent serialization error: data too "
-                        "large, in actor '%s'",
-                        PromiseFlatCString(aMeta.actorName()).get()));
-    return;
-  }
-
   Maybe<ClonedMessageData> msgData;
   if (aData) {
     msgData.emplace();