diff --git a/results_feed/lib/src/components/try_results_component.dart b/results_feed/lib/src/components/try_results_component.dart
index 83140da..0dcf1f1 100644
--- a/results_feed/lib/src/components/try_results_component.dart
+++ b/results_feed/lib/src/components/try_results_component.dart
@@ -62,6 +62,7 @@
       .any((change) => change.result != change.expected);
 
   bool get approving => _approving;
+
   set approving(bool approve) {
     if (approve) {
       _tryDataService.logIn().then((_) {
@@ -140,4 +141,33 @@
     patchset = patchParam == null ? null : int.parse(patchParam);
     tryUpdate();
   }
+
+  String githubNewIssueURL() {
+    String title = "Failures on ${reviewInfo.title}";
+    List<Change> failures =
+        changes.where((change) => change.result != change.expected).toList();
+    String body = [
+      "There are new test failures on CL [${reviewInfo.title}]"
+          "(https://dart-review.googlesource.com/c/sdk/+/$review).\n",
+      "The tests",
+      "```",
+      for (final change in failures)
+        "${change.name} ${change.result} (expected ${change.expected})",
+      "```",
+      "are failing on configurations",
+      "```",
+      ...{
+        for (final change in failures)
+          ...change.configurations.configurations
+      },
+      "```"
+    ].join('\n');
+    if (failures.isEmpty) {
+      body = "There are no new test failures on CL [${reviewInfo.title}]"
+          "(https://dart-review.googlesource.com/c/sdk/+/$review).";
+    }
+    final query = {'title': title, 'body': body};
+    return Uri.https("github.com", "dart-lang/sdk/issues/new", query)
+        .toString();
+  }
 }
diff --git a/results_feed/lib/src/components/try_results_component.html b/results_feed/lib/src/components/try_results_component.html
index bfd2c2e..b5403fe 100644
--- a/results_feed/lib/src/components/try_results_component.html
+++ b/results_feed/lib/src/components/try_results_component.html
@@ -3,7 +3,6 @@
     <a href="http://dart-review.googlesource.com/c/sdk/+/{{review}}/{{patchset}}"
        target="_blank">{{reviewInfo.title}}</a>
   </h2>
-
   <h2 *ngIf="changeGroup.changes.isEmpty">No changed test results</h2>
   <results-panel *ngIf="!approving"
       [changes]="changeGroup.changes"
@@ -65,6 +64,13 @@
         (click)="approve(true)">
       Approve
     </material-button>
+    <span
+        *ngIf="approveEnabled && !approving"
+        raised>
+      <a href="{{githubNewIssueURL()}}" target="_blank">
+        Create GitHub issue
+      </a>
+    </span>
   </div>
 
 </div>
\ No newline at end of file
diff --git a/results_feed/lib/src/services/try_data_service.dart b/results_feed/lib/src/services/try_data_service.dart
index 03ff973..1649503 100644
--- a/results_feed/lib/src/services/try_data_service.dart
+++ b/results_feed/lib/src/services/try_data_service.dart
@@ -45,7 +45,8 @@
         ..setPatchsets(await _firestoreService.fetchPatchsetInfo(review))
         ..setBuilds(await _firestoreService.fetchTryBuilds(review));
     } else {
-      return ReviewInfo(review, "No results received yet for CL $review", []);
+      return ReviewInfo(review, "No results received yet for CL $review", [])
+        ..setBuilds([]);
     }
   }
 
