@@ -101,27 +101,32 @@ instance (Adjustable t m, PrerenderBaseConstraints js t m, ReflexHost t) => Prer
101101 env <- HydrationDomBuilderT ask
102102 events <- askEvents
103103 doc <- askDocument
104+ serverDf <- Document.createDocumentFragment doc -- server dom should not be mounted in the window's doc in hydration
104105 df <- Document.createDocumentFragment doc
105106 unreadyChildren <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_unreadyChildren
106− hydrationMode <- liftIO $ newIORef HydrationMode_Immediate
107+ immediateMode <- liftIO $ newIORef HydrationMode_Immediate
107108 delayed <- liftIO $ newIORef $ pure ()
108− let env' = HydrationDomBuilderEnv
109+ let clientEnv = env
110+ { _hydrationDomBuilderEnv_parent = Left $ DOM.toNode df
111+ , _hydrationDomBuilderEnv_hydrationMode = immediateMode
112+ }
113+ serverEnv = HydrationDomBuilderEnv
109114 { _hydrationDomBuilderEnv_document = doc
110− , _hydrationDomBuilderEnv_parent = Left $ DOM.toNode df
115+ , _hydrationDomBuilderEnv_parent = Left $ DOM.toNode serverDf
111116 , _hydrationDomBuilderEnv_unreadyChildren = unreadyChildren
112117 , _hydrationDomBuilderEnv_commitAction = pure ()
113118 , _hydrationDomBuilderEnv_delayed = delayed
114− , _hydrationDomBuilderEnv_hydrationMode = hydrationMode
119+ , _hydrationDomBuilderEnv_hydrationMode = immediateMode
115120 , _hydrationDomBuilderEnv_switchover = never
116121 }
117− a0 <- lift $ runHydrationDomBuilderT server (env { _hydrationDomBuilderEnv_delayed = delayed }) events
122+ a0 <- lift $ runHydrationDomBuilderT server serverEnv events
118123 (a', trigger) <- newTriggerEvent
119124 getHydrationMode >>= \case
120125 HydrationMode_Immediate -> do
121− liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') env' events
126+ liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') clientEnv events
122127 append $ DOM.toNode df
123128 HydrationMode_Hydrating -> addHydrationStep $ do
124− liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') env' events
129+ liftIO . trigger <=< lift $ runHydrationDomBuilderT (runPostBuildT client $ void a') clientEnv events
125130 insertBefore df =<< deleteToPrerenderEnd doc
126131 holdDyn a0 a'
127132