diff --git a/src/applications/differential/conduit/DifferentialConduitAPIMethod.php b/src/applications/differential/conduit/DifferentialConduitAPIMethod.php
--- a/src/applications/differential/conduit/DifferentialConduitAPIMethod.php
+++ b/src/applications/differential/conduit/DifferentialConduitAPIMethod.php
@@ -178,6 +178,7 @@
 
     $results = array();
     foreach ($field_lists as $revision_phid => $field_list) {
+      $results[$revision_phid] = array();
       foreach ($field_list->getFields() as $field) {
         $field_key = $field->getFieldKeyForConduit();
         $value = $field->getConduitDictionaryValue();
@@ -185,6 +186,32 @@
       }
     }
 
+    // For compatibility, fill in these "custom fields" by querying for them
+    // efficiently. See T11404 for discussion.
+
+    $legacy_edge_map = array(
+      'phabricator:projects' =>
+        PhabricatorProjectObjectHasProjectEdgeType::EDGECONST,
+      'phabricator:depends-on' =>
+        DifferentialRevisionDependsOnRevisionEdgeType::EDGECONST,
+    );
+
+    $query = id(new PhabricatorEdgeQuery())
+      ->withSourcePHIDs(array_keys($results))
+      ->withEdgeTypes($legacy_edge_map);
+
+    $query->execute();
+
+    foreach ($results as $revision_phid => $dict) {
+      foreach ($legacy_edge_map as $edge_key => $edge_type) {
+        $phid_list = $query->getDestinationPHIDs(
+          array($revision_phid),
+          array($edge_type));
+
+        $results[$revision_phid][$edge_key] = $phid_list;
+      }
+    }
+
     return $results;
   }
 
diff --git a/src/applications/differential/customfield/DifferentialParentRevisionsField.php b/src/applications/differential/customfield/DifferentialParentRevisionsField.php
--- a/src/applications/differential/customfield/DifferentialParentRevisionsField.php
+++ b/src/applications/differential/customfield/DifferentialParentRevisionsField.php
@@ -7,10 +7,6 @@
     return 'differential:depends-on';
   }
 
-  public function getFieldKeyForConduit() {
-    return 'phabricator:depends-on';
-  }
-
   public function getFieldName() {
     return pht('Parent Revisions');
   }
@@ -33,7 +29,10 @@
   }
 
   public function shouldAppearInConduitDictionary() {
-    return true;
+    // To improve performance, we exclude this field from Conduit results.
+    // See T11404 for discussion. In modern "differential.revision.search",
+    // this information is available efficiently as an attachment.
+    return false;
   }
 
   public function getConduitDictionaryValue() {
diff --git a/src/applications/differential/customfield/DifferentialProjectsField.php b/src/applications/differential/customfield/DifferentialProjectsField.php
--- a/src/applications/differential/customfield/DifferentialProjectsField.php
+++ b/src/applications/differential/customfield/DifferentialProjectsField.php
@@ -91,7 +91,10 @@
   }
 
   public function shouldAppearInConduitDictionary() {
-    return true;
+    // To improve performance, we exclude this field from Conduit results.
+    // See T11404 for discussion. In modern "differential.revision.search",
+    // this information is available efficiently as an attachment.
+    return false;
   }
 
   public function getApplicationTransactionMetadata() {