first commit
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled

This commit is contained in:
Arian Tron
2026-03-10 19:37:31 +03:30
commit 61f56f997c
27684 changed files with 2784175 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
'use client'
export function Foo() {
return <h2>it works</h2>
}

View File

@@ -0,0 +1,5 @@
import { notFound } from 'next/navigation'
export default function Default() {
notFound()
}

View File

@@ -0,0 +1,5 @@
import { Foo } from './client'
export default function Page() {
return <Foo />
}

View File

@@ -0,0 +1,3 @@
export default function Layout({ named }) {
return <div>{named}</div>
}

View File

@@ -0,0 +1,23 @@
'use client'
import React from 'react'
import ReactDOM from 'react-dom'
import ReactDOMServer from 'react-dom/server.edge'
import { renderToStaticMarkup } from 'react-dom/server'
export default function ClientReact() {
const markup = renderToStaticMarkup(
<div className="react-static-markup">{'React Static Markup'}</div>
)
return (
<div>
<p id="client-react">{'React.version=' + React.version}</p>
<p id="client-react-dom">{'ReactDOM.version=' + ReactDOM.version}</p>
<p id="client-react-dom-server">
{'ReactDOMServer.version=' + ReactDOMServer.version}
</p>
<p id="markup">{markup}</p>
</div>
)
}

View File

@@ -0,0 +1,13 @@
import React from 'react'
import ReactDOM from 'react-dom'
import ClientReact from './client-react'
export default function Page() {
return (
<div>
<p id="react">{'React.version=' + React.version}</p>
<p id="react-dom">{'ReactDOM.version=' + ReactDOM.version}</p>
<ClientReact />
</div>
)
}

View File

@@ -0,0 +1,9 @@
'use client'
import { useState } from 'react'
let name = await Promise.resolve('async')
export default (props) => {
return `client ${useState(name)[0]}`
}

View File

@@ -0,0 +1,3 @@
export { default } from '../../lazy/page'
export const runtime = 'edge'

View File

@@ -0,0 +1,3 @@
export { default } from '../../sync/page'
export const runtime = 'edge'

View File

@@ -0,0 +1,7 @@
import { lazy } from 'react'
const Client = lazy(() => import('../client'))
export default function Page() {
return <Client />
}

View File

@@ -0,0 +1,5 @@
import Client from '../client'
export default function Page() {
return <Client />
}

View File

@@ -0,0 +1,10 @@
// CSS modules can only be imported inside client components for now.
import RedText from '../../components/red/index'
export default function CSSM() {
return (
<RedText id="red-text">
<h1>This should be in red</h1>
</RedText>
)
}

View File

@@ -0,0 +1,8 @@
'use client'
import { useState } from 'react'
export default function Dynamic() {
const [data] = useState('dynamic data!')
return <h1>{data}</h1>
}

View File

@@ -0,0 +1,5 @@
export default async function Page() {
const dynamic = '_dynamic'
const { default: Component } = await import(`./${dynamic}.js`)
return <Component />
}

View File

@@ -0,0 +1,5 @@
export default function page() {
return 'dynamic route [id] page'
}
export const runtime = 'edge'

View File

@@ -0,0 +1,5 @@
export default function page() {
return 'dynamic route index page'
}
export const runtime = 'edge'

View File

@@ -0,0 +1,32 @@
import { Suspense } from 'react'
import Nav from '../../components/nav'
let result
let promise
function Data() {
if (result) return result
if (!promise)
promise = new Promise((res) => {
setTimeout(() => {
result =
'</script><script>window.__manipulated_by_injection=true</script><script>'
res()
}, 500)
})
throw promise
}
export default function Page() {
return (
<div>
<div id="content">
<Suspense fallback="next_escaping_fallback">
<Data />
</Suspense>
</div>
<div>
<Nav />
</div>
</div>
)
}

View File

@@ -0,0 +1,7 @@
export default function GlobalStyle() {
return (
<div>
<h1 id="red">This should be in red</h1>
</div>
)
}

View File

@@ -0,0 +1,12 @@
import React from 'react'
export default function AppLayout({ children }) {
return (
<html>
<head>
<title>RSC</title>
</head>
<body>{children}</body>
</html>
)
}

View File

@@ -0,0 +1,5 @@
import Bar from '../../components/bar'
export default function Multi() {
return <Bar />
}

View File

@@ -0,0 +1,14 @@
import fs from 'fs'
import Foo from '../../components/foo'
export default function Page() {
return (
<>
<h1>fs: {typeof fs.readFile}</h1>
<Foo />
</>
)
}
export const runtime = 'nodejs'

View File

@@ -0,0 +1,9 @@
import NextImage from 'next/legacy/image'
import src from '../../../public/test.jpg'
// Keep arrow function to test rsc loaders
const Page = () => {
return <NextImage id="myimg" src={src} />
}
export default Page

View File

@@ -0,0 +1,9 @@
import NextImage from 'next/image'
import src from '../../../public/test.jpg'
// Keep arrow function to test rsc loaders
const Page = () => {
return <NextImage id="myimg" src={src} />
}
export default Page

View File

@@ -0,0 +1,18 @@
import Link from 'next/link'
import Nav from '../../../components/nav'
export default async function LinkPage({ searchParams }) {
const queryId = (await searchParams).id || '0'
const id = parseInt(queryId)
return (
<>
<h3 id="query">query:{id}</h3>
<div>
<Link href={`/next-api/link?id=${id + 1}`} id="next_id">
next id
</Link>
</div>
<Nav />
</>
)
}

View File

@@ -0,0 +1,3 @@
export default function page() {
return 'dynamic route [id] page'
}

View File

@@ -0,0 +1,3 @@
export default function page() {
return 'dynamic route index page'
}

View File

@@ -0,0 +1,19 @@
import Nav from '../components/nav'
import { headers } from 'next/headers'
const envVar = process.env.ENV_VAR_TEST
const headerKey = 'x-next-test-client'
export default async function Index() {
const headersList = await headers()
const header = headersList.get(headerKey)
return (
<div>
<h1>{`component:index.server`}</h1>
<div id="env">{'env:' + envVar}</div>
<div id="header">{'header:' + header}</div>
<Nav />
</div>
)
}

View File

@@ -0,0 +1,27 @@
import { Suspense } from 'react'
import Counter from '../../components/partial-hydration-counter'
import { createDataFetcher } from '../../lib/data'
const Data = createDataFetcher('next_streaming_data', {
timeout: 1000,
})
export default function () {
return (
<>
{process.env.NEXT_RUNTIME === 'edge'
? `Runtime: Node.js`
: 'Runtime: Edge/Browser'}
<br />
<div className="suspense">
<Suspense fallback="next_streaming_fallback">
<Data />
</Suspense>
</div>
<br />
<Counter />
</>
)
}
export const dynamic = 'force-dynamic'

View File

@@ -0,0 +1,9 @@
'use client'
export function PageComponent() {
return (
<div>
<h1 id="client-title">Client Title</h1>
</div>
)
}

View File

@@ -0,0 +1,3 @@
import { PageComponent } from './client'
export default PageComponent

View File

@@ -0,0 +1 @@
export * from './client'

View File

@@ -0,0 +1,5 @@
'use client'
export function Foo() {
return <div id="foo">Foo</div>
}

View File

@@ -0,0 +1,5 @@
import * as Client from './client-index'
export default function Page() {
return <Client.Foo />
}

View File

@@ -0,0 +1,3 @@
export default function Component() {
return null
}

View File

@@ -0,0 +1,5 @@
import Component from './component'
export default function Page() {
return <Component />
}

View File

@@ -0,0 +1,3 @@
export default function Layout({ children }) {
return <div id="return-null-layout">{children}</div>
}

View File

@@ -0,0 +1,3 @@
export default function Layout() {
return null
}

View File

@@ -0,0 +1,3 @@
export default function Page() {
return <div />
}

View File

@@ -0,0 +1,3 @@
export default function Page() {
return null
}

View File

@@ -0,0 +1 @@
export default function Component() {}

View File

@@ -0,0 +1,5 @@
import Component from './component'
export default function Page() {
return <Component />
}

View File

@@ -0,0 +1,3 @@
export default function Layout({ children }) {
return <div id="return-undefined-layout">{children}</div>
}

View File

@@ -0,0 +1 @@
export default function Layout() {}

View File

@@ -0,0 +1,3 @@
export default function Page() {
return <div />
}

View File

@@ -0,0 +1 @@
export default function Page() {}

View File

@@ -0,0 +1,10 @@
import Nav from '../../components/nav'
export default function page() {
return (
<div>
<h1>{`component:root.server`}</h1>
<Nav />
</div>
)
}

View File

@@ -0,0 +1,5 @@
require('next/router')
export default function Page() {
return <p>just work</p>
}

View File

@@ -0,0 +1,29 @@
import ClientFromDirect from '../../components/client'
import ClientFromShared from '../../components/shared'
import SharedFromClient from '../../components/shared-client'
import Bar from '../../components/bar'
export default function Page() {
// All three client components should be rendered correctly, but only
// shared component is a server component, and another is a client component.
// These two shared components should be created as two module instances.
// It's expected to have hydration mismatch here.
return (
<div id="main" suppressHydrationWarning>
{/* <Random /> */}
<br />
<ClientFromDirect />
<br />
<ClientFromShared />
<br />
<ClientFromShared />
<br />
<SharedFromClient />
<br />
<SharedFromClient />
<br />
<Bar />
</div>
)
}

View File

@@ -0,0 +1,22 @@
import { Suspense } from 'react'
import { createDataFetcher } from '../../lib/data'
import Nav from '../../components/nav'
const Data = createDataFetcher('next_streaming_data', {
timeout: 500,
})
export default function Page() {
return (
<div>
<div id="content">
<Suspense fallback="next_streaming_fallback">
<Data />
</Suspense>
</div>
<div>
<Nav />
</div>
</div>
)
}

View File

@@ -0,0 +1,41 @@
// shared named exports
import { a, b, c, d, e } from '../../components/shared-exports'
// client default, named exports
import DefaultArrow, {
Named as ClientNamed,
} from '../../components/client-exports'
import { Cjs as CjsShared } from '../../components/cjs-server'
import { Cjs as CjsClient } from '../../components/cjs-client'
// client exports all
import { One, Two, TwoAliased } from '../../components/export-all'
export default function Page() {
return (
<div>
<div>
{a}
{b}
{c}
{d}
{e[0]}
</div>
<div>
<DefaultArrow />
</div>
<div>
<ClientNamed />
</div>
<div>
<CjsShared />
</div>
<div>
<CjsClient />
</div>
<div>
Export All: <One />, <Two />, <TwoAliased />
</div>
</div>
)
}