I believe #5744 introduced a behavioral difference between development and production versions of React. We released it as a part of 15.0, and this difference still exists.

The production behavior hasn’t changed. However the development behavior diverged after this change.

``` js
var el = React.createElement('div', { key: undefined })
document.body.innerHTML = (typeof el.key) + ' ' + el.key
```

What do you expect to appear?
### 0.14.x
- Development (https://jsfiddle.net/sjLcmnq6/1/): `object null`
- Production (https://jsfiddle.net/qro1wck0/1/): `object null`
## 15.x
- Development (https://jsfiddle.net/69z2wepo/43538/):  **`string undefined`**
- Production (https://jsfiddle.net/rakg6uwy/1/): `object null`

The 15.x dev behavior is different because [dev code path only checks the existence of a property but not whether it’s undefined](https://github.com/alitaheri/react/blob/c3980a6d08257d39a08bed8b116d53a56344166b/src/isomorphic/classic/element/ReactElement.js#L130-L133) whereas the [prod code path checks for undefined explicitly](https://github.com/alitaheri/react/blob/c3980a6d08257d39a08bed8b116d53a56344166b/src/isomorphic/classic/element/ReactElement.js#L135-L136).

`React.cloneElement()` is not affected because it doesn’t include those warnings.

---

This doesn’t seem like a major problem (nobody noticed it!) in the real world, but I think we should fix this.
I have a related fix in the works so I’ll add some more tests and include it.

expect(element.ref).toBe('34');
    var expectation = {foo:'56'};
    Object.freeze(expectation);
    expect(element.props).toEqual(expectation);
  });
  it('coerces the key to a string', function() {
    var element = React.createFactory(ComponentClass)({
      key: 12,
      foo: '56',
    });
    expect(element.type).toBe(ComponentClass);
    expect(element.key).toBe('12');
    expect(element.ref).toBe(null);
    var expectation = {foo:'56'};
    Object.freeze(expectation);
    expect(element.props).toEqual(expectation);
  });
  it('preserves the owner on the element', function() {
    var Component = React.createFactory(ComponentClass);
    var element;
    var Wrapper = React.createClass({
      render: function() {
        element = Component();
        return element;
      },
    });
    var instance = ReactTestUtils.renderIntoDocument(
      React.createElement(Wrapper)
    );
    expect(element._owner.getPublicInstance()).toBe(instance);