Skip to content

Commit 203220e

Browse files
committed
fix(gatsby): render QoD overlay in its own root element to avoid hydration issues
1 parent 662fe41 commit 203220e

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

packages/gatsby/cache-dir/app.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import emitter from "./emitter"
88
import { apiRunner, apiRunnerAsync } from "./api-runner-browser"
99
import { setLoader, publicLoader } from "./loader"
1010
import { Indicator } from "./loading-indicator/indicator"
11+
import { LoadingIndicatorEventHandler } from "./loading-indicator"
1112
import DevLoader from "./dev-loader"
1213
import syncRequires from "$virtual/sync-requires"
1314
// Generated during bootstrap
@@ -164,6 +165,20 @@ apiRunnerAsync(`onClientEntry`).then(() => {
164165

165166
renderer(<Root />, rootElement, () => {
166167
apiRunner(`onInitialClientRender`)
168+
169+
// Render query on demand overlay
170+
if (process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR) {
171+
const indicatorMountElement = document.createElement(`div`)
172+
indicatorMountElement.setAttribute(
173+
`id`,
174+
`query-on-demand-indicator-element`
175+
)
176+
document.body.append(indicatorMountElement)
177+
ReactDOM.render(
178+
<LoadingIndicatorEventHandler />,
179+
indicatorMountElement
180+
)
181+
}
167182
})
168183
})
169184
})

packages/gatsby/cache-dir/root.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import EnsureResources from "./ensure-resources"
1414
import FastRefreshOverlay from "./fast-refresh-overlay"
1515

1616
import { reportError, clearError } from "./error-overlay-handler"
17-
import { LoadingIndicatorEventHandler } from "./loading-indicator"
1817

1918
// TODO: Remove entire block when we make fast-refresh the default
2019
// In fast-refresh, this logic is all moved into the `error-overlay-handler`
@@ -148,9 +147,5 @@ const ConditionalFastRefreshOverlay = ({ children }) => {
148147
export default () => (
149148
<ConditionalFastRefreshOverlay>
150149
<StaticQueryStore>{WrappedRoot}</StaticQueryStore>
151-
{process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&
152-
process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true` && (
153-
<LoadingIndicatorEventHandler />
154-
)}
155150
</ConditionalFastRefreshOverlay>
156151
)

0 commit comments

Comments
 (0)