rsnext/test/e2e/app-dir
Wyatt Johnson cdb415451a
[PPR] Enable incremental adoption (#63847)
Enabling Partial Prerendering (PPR) for an entire application is
ideally, the goal for teams wanting to test out the feature or adopt it
in their applications to get ready for when it becomes the default
rendering pattern. For large applications, with many routes the new
behaviours of old API's may prove a difficult pill to swallow all at
once.

This aims to enable incremental adoption of PPR for pages and routes
that want to support it in a similar way to how existing segment-level
configurations. Segments can now add:

```ts
export const experimental_ppr = true
```

To enable PPR for that segment and those descending segments. Any subset
of those routes that have it enabled can add:

```ts
export const experimental_ppr = false
```

<details>
<summary>An aside on the choice of <code>experimental_ppr</code>
name</summary>
<blockquote>
<p>It is against common JS semantics to use snake-case, and preference
is given to camel-case instead. The choice to make this snake-case was
to re-enforce that this is an experimental feature, an ugly incremental
path, and ideally, developers should aim to remove all references of it
from their codebase.</p>
<p>Additionally, this mirrors what we've done for unstable API's like
`unstable_cache`.</p>
</blockquote>
</details> 

To disable PPR for that segment and those descending segments. To use
this new option, the `experimental.ppr` configuration in
`next.config.js` must be set to `"incremental"`:

```js
// next.config.js
module.exports = {
  experimental: {
    ppr: "incremental",
  },
} 
```

If a segment does not export a `experimental_ppr` boolean, it is
inferred from it's parent. If no parent has it defined, it's default
value is `false` and therefore disabled.

Once all your segments have PPR enabled via this config, it would be
considered safe for teams to set their `experimental.ppr` value in the
`next.config.js` to `true`, enabling it for the entire app and for all
future routes.

### Aside

I also took the liberty to rename `isPPR` and `supportsPPR` to be the
clearer `isAppPPREnabled` and `isRoutePPREnabled`.

---------

Co-authored-by: Hendrik Liebau <mail@hendrik-liebau.de>
2024-05-06 14:55:00 -06:00
..
_allow-underscored-root-directory Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
actions update redirect handling on forwarded action requests (#65097) 2024-04-26 19:55:57 +00:00
actions-allowed-origins Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
actions-navigation Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app Emit polyfill-nomodule.js into the build manifest polyfillFiles (#65223) 2024-05-02 22:15:09 -07:00
app-a11y Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-alias Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-basepath Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-basepath-custom-server Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-client-cache Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-compilation Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-config-crossorigin Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-css Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-css-pageextensions Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-custom-cache-handler Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-edge Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-edge-root-layout Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-esm-js Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-external test: fix react version testing due to new release (#65081) 2024-04-26 14:39:04 +00:00
app-fetch-deduping feat(log): improve dev/build logs (#62946) 2024-03-26 15:33:09 +01:00
app-invalid-revalidate Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-middleware Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-prefetch Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-prefetch-false Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-prefetch-false-loading Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-prefetch-static Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-rendering Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-routes Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-routes-client-component Turbopack: Allow client components from foreign code in app routes (#64751) 2024-04-26 15:26:33 -07:00
app-routes-subrequests Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-routes-trailing-slash Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-simple-routes Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
app-static [unstable_cache] Don't track dynamic fetches in an unstable_cache callback (#65010) 2024-04-26 18:43:42 +00:00
app-validation Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
asset-prefix fix: bundle fetching with asset prefix (#63627) 2024-03-29 16:38:24 -07:00
asset-prefix-with-basepath update turbopack (#64347) 2024-04-11 19:16:27 +02:00
async-component-preload Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
autoscroll-with-css-modules Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
back-button-download-bug Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
build-size Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
chunk-loading App Router - preinitialize chunks during SSR (#54752) 2023-10-03 21:40:25 +00:00
conflicting-page-segments Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
create-root-layout Stop using baseUrl in root tsconfig (#64117) 2024-04-09 00:25:43 +02:00
crypto-globally-available Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
css-order disable production chunking in dev (#64488) 2024-04-15 21:22:22 +02:00
draft-mode Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
dynamic Revert "Remove extra suspense boundary for default next/dynamic" (#65309) 2024-05-02 19:37:18 -07:00
dynamic-css Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
dynamic-data Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
dynamic-href Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
dynamic-in-generate-params Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
dynamic-interception-route-revalidate fix router revalidation behavior for dynamic interception routes (#63768) 2024-03-28 13:35:22 +00:00
dynamic-requests ignore fully dynamic requests on server side (#62949) 2024-03-11 08:41:33 +00:00
edge-route-catchall Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
edge-route-rewrite Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
edge-runtime-node-compatibility Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
emotion-js Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
error-boundary-navigation Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
errors Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
front-redirect-issue Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
global-error Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
headers-static-bailout Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
hello-world Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
hooks Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
i18n-hybrid Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
import Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
interception-dynamic-segment Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
interception-dynamic-segment-middleware Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
interception-middleware-rewrite Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
interception-route-prefetch-cache Fix test flake (#62379) 2024-02-22 00:19:49 -08:00
interception-routes-root-catchall Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
interoperability-with-pages Stop using baseUrl in root tsconfig (#64117) 2024-04-09 00:25:43 +02:00
layout-params Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
loader-file-named-export-custom-loader-error fix: show the error message if images.loaderFile doesn't export a default function (#64036) 2024-04-10 18:11:38 +00:00
logging Fix: strip _rsc query for client navigation rsc request (#65084) 2024-04-28 20:15:38 +00:00
mdx Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
metadata Only apply metadata manifest credentials for preview deployment (#64940) 2024-04-30 20:50:42 +00:00
metadata-dynamic-routes Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
metadata-edge Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
metadata-json-manifest Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
metadata-suspense Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
metadata-warnings Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
missing-suspense-with-csr-bailout Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
mjs-as-extension Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
modularizeimports Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
navigation fix redirect to url with semicolon (#65165) 2024-05-01 13:11:41 -07:00
next-config Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
next-font Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
next-image Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
not-found Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
not-found-default Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
pages-to-app-routing Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-route-not-found use correct not-found component when triggered from a parallel route (#65343) 2024-05-06 14:46:54 +00:00
parallel-route-not-found-params Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-and-interception Extract slow tests to avoid wasteful start/stop (#65265) 2024-05-02 13:07:23 +02:00
parallel-routes-and-interception-basepath Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-breadcrumbs Fix an issue parsing catchall params (#65277) 2024-05-02 18:31:39 +00:00
parallel-routes-catchall Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-children-slot Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-default Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-dynamic-segment Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-groups Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-slotted-non-catchalls Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-catchall-specificity fix logic error in parallel route catch-all normalization (#63879) 2024-04-01 08:50:54 -07:00
parallel-routes-layouts parallel routes: support multi-slot layouts (#61115) 2024-01-26 11:46:23 -08:00
parallel-routes-not-found Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
parallel-routes-revalidation Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
parallel-routes-root-slot add explicit test for parallel routes in a root layout (#65338) 2024-05-03 15:05:48 -07:00
parallel-routes-use-selected-layout-segment Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
params-hooks-compat Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
ppr Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
ppr-errors Rename process.env.TURBOPACK -> process.env.TURBOPACK_DEV in test skips (#63665) 2024-03-25 14:17:56 +01:00
ppr-full [PPR] Enable incremental adoption (#63847) 2024-05-06 14:55:00 -06:00
ppr-incremental [PPR] Enable incremental adoption (#63847) 2024-05-06 14:55:00 -06:00
ppr-navigations [PPR Nav] Fix flash of loading state during back/forward (#60578) 2024-01-12 14:18:54 -05:00
ppr-unstable-cache [unstable_cache] Don't track dynamic fetches in an unstable_cache callback (#65010) 2024-04-26 18:43:42 +00:00
prefetching-not-found fix navigation applying stale data when triggered from global not found (#62033) 2024-02-14 10:46:31 -08:00
resolve-extensions Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
resource-url-encoding Escape url-unsafe characters in names of app router scripts and styles (#64131) 2024-04-10 17:42:53 -07:00
revalidate-dynamic Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
rewrites-redirects Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
root-layout Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
root-layout-redirect Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
root-layout-render-once Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
route-page-manifest-bug Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
router-autoscroll Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
router-stuck-dynamic-static-segment Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
rsc-basic Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
scss improve tilde test case (#63470) 2024-03-27 06:16:49 +00:00
search-params-react-key Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
searchparams-static-bailout Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
server-actions-relative-redirect Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
server-components-externals Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
set-cookies Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
shallow-routing Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
similar-pages-paths Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
static-generation-status Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
syntax-highlighter-crash Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
taint Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
test-template/{{ toFileName name }} chore: update test template to use nextTestSetup (#62154) 2024-02-16 17:30:54 +01:00
third-parties Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
trailingslash Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
turbopack-reports Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
underscore-ignore-app-paths Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
use-params Improve initial setup with new App Router TypeScript project (#64826) 2024-04-26 18:19:50 +02:00
use-selected-layout-segment-s Stop using baseUrl in root tsconfig (#64117) 2024-04-09 00:25:43 +02:00
webpack-loader-conditions Turbopack: import webpack loader rules conditions (#64205) 2024-04-11 17:35:43 +02:00
with-babel Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
with-exported-function-config Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00
x-forwarded-headers Replace createNextDescribe with nextTestSetup (#64817) 2024-04-25 12:06:12 -06:00