diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx
index f201a94c25ac..e0d0d6ac7210 100644
--- a/packages/next/server/render.tsx
+++ b/packages/next/server/render.tsx
@@ -200,17 +200,18 @@ function renderFlight(AppMod: any, ComponentMod: any, props: any) {
const isServerApp = !!AppMod.__next_rsc__
const App = interopDefault(AppMod)
const Component = interopDefault(ComponentMod)
- const AppServer = isServerComponent
- ? (App as React.ComponentType)
- : React.Fragment
+ const AppServer = isServerApp ? (App as React.ComponentType) : React.Fragment
+ const { router: _, ...rest } = props
- if (isServerApp) {
+ if (isServerApp || isServerComponent) {
return (
-
+
)
}
+
+ console.log('App', App, 'Component', Component)
return
}
@@ -738,7 +739,7 @@ export async function renderToHTML(
AppTree: (props: any) => {
return (
- {renderFlight(AppMod, ComponentMod, props)}
+ {renderFlight(AppMod, ComponentMod, { ...props, router })}
)
},
diff --git a/test/integration/app-tree/pages/_app.tsx b/test/integration/app-tree/pages/_app.tsx
index 0bc5545f0098..78e095ae1a6c 100644
--- a/test/integration/app-tree/pages/_app.tsx
+++ b/test/integration/app-tree/pages/_app.tsx
@@ -1,9 +1,12 @@
import React from 'react'
import Link from 'next/link'
+import { createContext } from 'react'
import { render } from 'react-dom'
import App, { AppContext } from 'next/app'
import { renderToString } from 'react-dom/server'
+export const DummyContext = createContext(null)
+
class MyApp
extends App
{
static async getInitialProps({ Component, AppTree, ctx }: AppContext) {
let pageProps = {}
@@ -32,15 +35,20 @@ class MyApp
extends App
{
const { Component, pageProps, html, router } = this.props
const href = router.pathname === '/' ? '/another' : '/'
- return html && router.pathname !== '/hello' ? (
- <>
-
-
- to {href}
-
- >
- ) : (
-
+ const child =
+ html && router.pathname !== '/hello' ? (
+ <>
+
+
+ to {href}
+
+ >
+ ) : (
+
+ )
+
+ return (
+ {child}
)
}
}
diff --git a/test/integration/app-tree/pages/index.js b/test/integration/app-tree/pages/index.js
index 082531006e0d..380f0c02fe5e 100644
--- a/test/integration/app-tree/pages/index.js
+++ b/test/integration/app-tree/pages/index.js
@@ -1,7 +1,12 @@
+import { useContext } from 'react'
+import { DummyContext } from './_app'
import { useRouter } from 'next/router'
const Page = () => {
const { pathname } = useRouter()
+ const ctx = useContext(DummyContext)
+ if (ctx == null) throw new Error('context consumes failed')
+
return (
<>
page: {pathname}