diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts
index 588375febc5..2b8faa8d79e 100644
--- a/src/compiler/emitter.ts
+++ b/src/compiler/emitter.ts
@@ -1178,6 +1178,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
let haveOpenedObjectLiteral = false;
for (var i = 0; i < attrs.length; i++) {
if (attrs[i].kind === SyntaxKind.JsxSpreadAttribute) {
+ // If this is the first argument, we need to emit a {} as the first argument
+ if(i === 0) {
+ write('{}, ');
+ }
+
if (haveOpenedObjectLiteral) {
write('}');
haveOpenedObjectLiteral = false;
diff --git a/tests/baselines/reference/tsxReactEmit2.js b/tests/baselines/reference/tsxReactEmit2.js
index c19d9958ad4..f4a12946ed9 100644
--- a/tests/baselines/reference/tsxReactEmit2.js
+++ b/tests/baselines/reference/tsxReactEmit2.js
@@ -16,8 +16,8 @@ var spreads5 =
{p2}
;
//// [tsxReactEmit2.js]
var p1, p2, p3;
-var spreads1 = React.createElement("div", React.__spread(p1), p2);
-var spreads2 = React.createElement("div", React.__spread(p1), p2);
+var spreads1 = React.createElement("div", React.__spread({}, p1), p2);
+var spreads2 = React.createElement("div", React.__spread({}, p1), p2);
var spreads3 = React.createElement("div", React.__spread({x: p3}, p1), p2);
-var spreads4 = React.createElement("div", React.__spread(p1, {x: p3}), p2);
+var spreads4 = React.createElement("div", React.__spread({}, p1, {x: p3}), p2);
var spreads5 = React.createElement("div", React.__spread({x: p2}, p1, {y: p3}), p2);
diff --git a/tests/baselines/reference/tsxReactEmit4.errors.txt b/tests/baselines/reference/tsxReactEmit4.errors.txt
index 82cacd39e28..00b7cb8d019 100644
--- a/tests/baselines/reference/tsxReactEmit4.errors.txt
+++ b/tests/baselines/reference/tsxReactEmit4.errors.txt
@@ -17,4 +17,6 @@ tests/cases/conformance/jsx/tsxReactEmit4.tsx(11,5): error TS2304: Cannot find n
!!! error TS2304: Cannot find name 'blah'.
;
-
\ No newline at end of file
+
+ // Should emit React.__spread({}, p, {x: 0})
+ var spread1 = ;
\ No newline at end of file
diff --git a/tests/baselines/reference/tsxReactEmit4.js b/tests/baselines/reference/tsxReactEmit4.js
index b162b17ad7f..2254c4dd651 100644
--- a/tests/baselines/reference/tsxReactEmit4.js
+++ b/tests/baselines/reference/tsxReactEmit4.js
@@ -12,8 +12,12 @@ var openClosed1 =
{blah}
;
-
+
+// Should emit React.__spread({}, p, {x: 0})
+var spread1 = ;
//// [tsxReactEmit4.js]
var p;
var openClosed1 = React.createElement("div", null, blah);
+// Should emit React.__spread({}, p, {x: 0})
+var spread1 = React.createElement("div", React.__spread({}, p, {x: 0}));
diff --git a/tests/cases/conformance/jsx/tsxReactEmit4.tsx b/tests/cases/conformance/jsx/tsxReactEmit4.tsx
index 0987b89c978..f007c35c24a 100644
--- a/tests/cases/conformance/jsx/tsxReactEmit4.tsx
+++ b/tests/cases/conformance/jsx/tsxReactEmit4.tsx
@@ -13,3 +13,6 @@ var openClosed1 =
{blah}
;
+
+// Should emit React.__spread({}, p, {x: 0})
+var spread1 = ;
\ No newline at end of file