Skip to content

Server side rendering fails when GatewayDest is declared before the Gateway component #49

@richardscarrott

Description

@richardscarrott

I've been using react-gateway for years because of it's support for SSRing and it's been great, however I've recently run into a bug where the component does not render if the GatewayDest is declared before the Gateway. e.g.

// This does *not* server side render
const App: React.FunctionComponent<any> = ({}) => {
  return (
    <>
      <GatewayDest name="foo" />
      <Gateway into="foo">
        <div>Hello World</div>
      </Gateway>
    </>
  );
};
// This does server side render
const App: React.FunctionComponent<any> = ({}) => {
  return (
    <>
      <Gateway into="foo">
        <div>Hello World</div>
      </Gateway>
      <GatewayDest name="foo" />
    </>
  );
};

When you think about it this makes perfect sense as, in the first example, the gateway destination isn't aware of the gateway component as it's not yet rendered.

I think it's taken me this long to discover this issue because 99% of my use-cases have been to render modals or tooltips etc. which have always lived at the bottom of the page, however I'm now using it to render a notification banner at the top of the page which causes this issue.

Honestly, although I haven't looked into the code, I expect this would be quite challenging to fix but would be interested to hear otherwise?

If it's a "won't fix", perhaps you'd accept a PR to update the docs with this limitation?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions