React: static sites using react-snap and glamor

In order to allow react-snap to correctly parse styles created by glamor you need to force glamor to use appendChild instead of insertRule for inserting CSS rules into its stylesheet. Doing this allows react-snap to parse out styles when it renders the page. You can force glamor to use appendChild by calling glamor's speedy method documented here.

import React from "react";
import reactDom from "react-dom";
import { speedy } from "glamor";

const rootElement = document.getElementById("root");

if (rootElement.hasChildNodes()) {
  const App = require("components/App").default;
  reactDom.hydrate(<App />, rootElement);
} else {
  speedy(false);
  const App = require("components/App").default;
  reactDom.render(<App />, rootElement);
}