I happened to notice that React will throw `Hooks can only be called inside the body of a function component` if a sibling element calls `ReactDOMServer.renderToStaticMarkup`. I have a [fiddle](https://jsfiddle.net/er4kL3of/) that shows this behavior (I think you need to manually open your console to see the error).

If you wrap the sibling element in a component or even just assign it a variable, this issue does not occur.

It's easy to get around and is a pretty specific bug, but why might this be happening?


useLayoutEffect(() => {
        return props.return;
      });
      return null;
    }
    let root;
    expect(() => {
      root = ReactTestRenderer.create(<App return={17} />);
    }).toWarnDev([
      'Warning: useEffect function must return a cleanup function or ' +
        'nothing.\n' +
        '    in App (at **)',
    ]);
    expect(() => {
      root.update(<App return={Promise.resolve()} />);
    }).toWarnDev([
      'Warning: useEffect function must return a cleanup function or ' +
        'nothing. Promises and useEffect(async () => ...) are not supported, ' +
        'but you can call an async function inside an effect.\n' +
        '    in App (at **)',
    ]);
  });
});