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.
describe('aria attributes', function() {
      itRenders('simple strings', async render => {
        const e = await render(<div aria-label="hello" />);
        expect(e.getAttribute('aria-label')).toBe('hello');
      });
      
      itRenders('aria string prop with false value', async render => {
        const e = await render(<div aria-label={false} />);
        expect(e.getAttribute('aria-label')).toBe('false');
      });
      itRenders('no aria prop with null value', async render => {
        const e = await render(<div aria-label={null} />);
        expect(e.hasAttribute('aria-label')).toBe(false);
      });
      itRenders('"aria" attribute with a warning', async render => {
        
        const e = await render(<div aria="hello" />, 1);
        expect(e.getAttribute('aria')).toBe('hello');
      });
    });
    describe('cased attributes', function() {
      itRenders(
        'badly cased aliased HTML attribute with a warning',
        async render => {
          const e = await render(<meta httpequiv="refresh" />, 1);
          expect(e.hasAttribute('http-equiv')).toBe(false);
          expect(e.getAttribute('httpequiv')).toBe('refresh');
        },
      );
      itRenders('badly cased SVG attribute with a warning', async render => {