Follow up from https://github.com/facebook/react/pull/11616.

Here's one I found. These two invariants:

https://github.com/facebook/react/blob/7e7127387ba64f57299eaff8656542cea6fb3a2d/packages/react-reconciler/src/ReactFiberClassComponent.js#L330-L343

are in a function that's behind a DEV block:

https://github.com/facebook/react/blob/7e7127387ba64f57299eaff8656542cea6fb3a2d/packages/react-reconciler/src/ReactFiberClassComponent.js#L447-L449

I don't think this is intentional, but need to verify.

There may be more. I'll use this issue to track while https://github.com/facebook/react/pull/11616 preserves existing behavior.
render() {
    return React.createElement(Inner, {name: 'foo', ref: 'inner'});
  }
}
describe('ReactTypeScriptClass', function() {
  beforeEach(function() {
    container = document.createElement('div');
    attachedListener = null;
    renderedName = null;
  });
  it('preserves the name of the class for use in error messages', function() {
    expect(Empty.name).toBe('Empty');
  });
  it('throws if no render function is defined', function() {
    spyOnDev(console, 'error');
    expect(() => ReactDOM.render(React.createElement(Empty), container)).toThrow();
    if (__DEV__) {
      expect((<any>console.error).calls.count()).toBe(1);
      expect((<any>console.error).calls.argsFor(0)[0]).toBe(
        'Warning: Empty(...): No `render` method found on the returned ' +
        'component instance: you may have forgotten to define `render`.'
      );
    }