React App root div strange width on mobile devices

Viewed 639

I have a React app (not React Native). I worked on it in my browser, made it responsive etc. Now I wanted to check how it would look on mobile devices.

I was surprised to see this:

enter image description here

As you can see, the page header gets smaller and some elements like user avatar overflow it. This is particularly strange since the div I selected in dev tools is root - the one that all of the app content goes too (I've bootstrapped the project via create-react-app). So the navbar shrinks to the root div width, but the elements like the user avatar not - which is odd, since this is a grid and they should soon stack on top of each other, reorganize.

Now this works perfectly fine when I look at it normally in the browser, even if I shrink the page to like 150 pixels width - navbar covers page's full width, the elements are being organized properly.

I thought that it's maybe some device emulator bug, so I checked on my smartphone - no luck, pretty much the same thing as in here. So this is not like this white stripe would not be in the viewport, I can see it on my phone even if I maximally zoom my mobile chrome browser out.

What could cause that kind of thing?

P.S Same thing happens in Firefox

@Edit

index.tsx - here I access the root div

import App from "./containers/App";

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById("root")
);

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
  </body>
</html>

App component - I cut out the routes to reduce its size here:

const App = () => {
  const [loggedIn, setLoggedIn] = useState(isAuthenticated());
  const [currentUser, setCurrentUser] = useState<UserData | null>(null);
  const classes = styles();
  useEffect(() => {
    if (!loggedIn) {
      setCurrentUser(null);
      return;
    }
    const getUser = async () => {
      setCurrentUser(await getCurrentUser());
    };
    getUser();
  }, [loggedIn]);

  const logIn = () => {
    setLoggedIn(true);
  };
  const logOut = () => {
    setLoggedIn(false);
  };
  return (
    <Router>
      <S.PageContainer>
        <PageHeaderAD currentUser={currentUser} logOut={logOut} />
        <S.PageContent>
          <Switch>
            [...]
          </Switch>
        </S.PageContent>
      </S.PageContainer>
    </Router>
  );
};

Containers used in App:

const PageContainer = styled.div`
  display: flex;
  flex-direction: column;
  height: 100%;
`;

const PageContent = styled.div`
  flex: 1 1 auto;
`;

PageHeaderAD contains many things but it is wrapped in:

const PageHeader = styled.div`
  background: #3f51b5;
`;
0 Answers
Related