diff --git a/src/components/legend/draw.js b/src/components/legend/draw.js
index 7d7faa25a21..629b30cad2d 100644
--- a/src/components/legend/draw.js
+++ b/src/components/legend/draw.js
@@ -113,7 +113,7 @@ function drawOne(gd, opts) {
 
             calcdata.push([{ trace: shapeLegend }]);
         }
-        if(!calcdata.length) return;
+
         legendData = fullLayout.showlegend && getLegendData(calcdata, legendObj, fullLayout._legends.length > 1);
     } else {
         if(!legendObj.entries) return;
diff --git a/test/jasmine/tests/legend_test.js b/test/jasmine/tests/legend_test.js
index 9723dd52961..3dd140ffe95 100644
--- a/test/jasmine/tests/legend_test.js
+++ b/test/jasmine/tests/legend_test.js
@@ -1204,6 +1204,36 @@ describe('legend relayout update', function() {
         .then(done, done.fail);
     });
 
+    it('should clear an empty legend & add legend using react', function(done) {
+        var fig1 = {
+            data: [{y: [1, 2]}],
+            layout: {showlegend: true}
+        };
+
+        var fig2 = {
+            data: [],
+            layout: {showlegend: true}
+        };
+
+        Plotly.newPlot(gd, fig1)
+        .then(function() {
+            expect(d3SelectAll('.legend')[0].length).toBe(1);
+        })
+        .then(function() {
+            return Plotly.react(gd, fig2);
+        })
+        .then(function() {
+            expect(d3SelectAll('.legend')[0].length).toBe(0);
+        })
+        .then(function() {
+            return Plotly.react(gd, fig1);
+        })
+        .then(function() {
+            expect(d3SelectAll('.legend')[0].length).toBe(1);
+        })
+        .then(done, done.fail);
+    });
+
     it('should be able to add & clear multiple legends using react', function(done) {
         var fig1 = {
             data: [{