We are trying to adopt custom elements for some parts of your UI and ran into the issue that during an update to the tree, custom attributes on the the custom elements are not removed correctly as can be seen here: http://jsbin.com/ferohipaje/edit?html,output (you will need to click on "false" and then inspect the DOM node in the dev tools of the browser).

I've tracked the issue to the `_updateDOMProperties` method in `ReactDOMComponent.js`. It seems that there is a special check in the loop for `nextProps`:

``` js
else if (isCustomComponent(this._tag, nextProps)) {
  if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
    DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);
  }
}
```

But the corresponding section is missing for `lastProps` (deleting), which results in the incorrect behavior.

I'm starting the work on the patch.

HTML in props.dangerouslySetInnerHTML,
      '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' +
      'Please visit https://fb.me/react-invariant-dangerously-set-inner-html ' +
      'for more information.'
    );
  }
  if (__DEV__) {
    warning(
      props.innerHTML == null,
      'Directly setting property `innerHTML` is not permitted. ' +
      'For more information, lookup documentation on `dangerouslySetInnerHTML`.'
    );
    warning(
      props.suppressContentEditableWarning ||
      !props.contentEditable ||
      props.children == null,
      'A component is `contentEditable` and contains `children` managed by ' +
      'React. It is now your responsibility to guarantee that none of ' +
      'those nodes are unexpectedly modified or duplicated. This is ' +
      'probably not intentional.'
    );
    warning(
      props.onFocusIn == null &&
      props.onFocusOut == null,
      'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' +
      'All React events are normalized to bubble, so onFocusIn and onFocusOut ' +
      'are not needed/supported by React.'
    );
  }
  invariant(