diff --git a/Cargo.lock b/Cargo.lock
index 6fb0fa90b01fd..5885a56113554 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -321,7 +321,7 @@ dependencies = [
[[package]]
name = "auto-hash-map"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"serde",
"smallvec",
@@ -3528,7 +3528,7 @@ dependencies = [
[[package]]
name = "node-file-trace"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"serde",
@@ -7639,7 +7639,7 @@ dependencies = [
[[package]]
name = "turbo-tasks"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-trait",
@@ -7671,7 +7671,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-build"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"cargo-lock",
@@ -7683,7 +7683,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-bytes"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"bytes",
@@ -7698,7 +7698,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-env"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"dotenvs",
@@ -7712,7 +7712,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fetch"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@@ -7729,7 +7729,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-fs"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"auto-hash-map",
@@ -7759,7 +7759,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-hash"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"base16",
"hex",
@@ -7771,7 +7771,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"convert_case 0.6.0",
@@ -7785,7 +7785,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-macros-shared"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"proc-macro2",
"quote",
@@ -7795,7 +7795,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-malloc"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"mimalloc",
]
@@ -7803,7 +7803,7 @@ dependencies = [
[[package]]
name = "turbo-tasks-memory"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"auto-hash-map",
@@ -7828,7 +7828,7 @@ dependencies = [
[[package]]
name = "turbopack"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-recursion",
@@ -7859,7 +7859,7 @@ dependencies = [
[[package]]
name = "turbopack-binding"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"auto-hash-map",
"mdxjs",
@@ -7899,7 +7899,7 @@ dependencies = [
[[package]]
name = "turbopack-build"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@@ -7921,7 +7921,7 @@ dependencies = [
[[package]]
name = "turbopack-cli-utils"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"clap 4.4.2",
@@ -7945,7 +7945,7 @@ dependencies = [
[[package]]
name = "turbopack-core"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-recursion",
@@ -7975,7 +7975,7 @@ dependencies = [
[[package]]
name = "turbopack-css"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-trait",
@@ -7997,7 +7997,7 @@ dependencies = [
[[package]]
name = "turbopack-dev"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@@ -8021,7 +8021,7 @@ dependencies = [
[[package]]
name = "turbopack-dev-server"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-compression",
@@ -8058,7 +8058,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-trait",
@@ -8092,7 +8092,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-hmr-protocol"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"serde",
"serde_json",
@@ -8103,7 +8103,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-plugins"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-trait",
@@ -8126,7 +8126,7 @@ dependencies = [
[[package]]
name = "turbopack-ecmascript-runtime"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indoc",
@@ -8143,7 +8143,7 @@ dependencies = [
[[package]]
name = "turbopack-env"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indexmap 1.9.3",
@@ -8159,7 +8159,7 @@ dependencies = [
[[package]]
name = "turbopack-image"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"base64 0.21.4",
@@ -8179,7 +8179,7 @@ dependencies = [
[[package]]
name = "turbopack-json"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"serde",
@@ -8194,7 +8194,7 @@ dependencies = [
[[package]]
name = "turbopack-mdx"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"mdxjs",
@@ -8209,7 +8209,7 @@ dependencies = [
[[package]]
name = "turbopack-node"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"async-stream",
@@ -8244,7 +8244,7 @@ dependencies = [
[[package]]
name = "turbopack-static"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"serde",
@@ -8260,7 +8260,7 @@ dependencies = [
[[package]]
name = "turbopack-swc-utils"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"swc_core",
"turbo-tasks",
@@ -8271,7 +8271,7 @@ dependencies = [
[[package]]
name = "turbopack-wasm"
version = "0.1.0"
-source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231025.1#51b47690aa579b8829b28e18402a28444c301514"
+source = "git+https://github.com/vercel/turbo.git?tag=turbopack-231026.1#dec61ad7505f148fb3f677e1dac9671ebae91550"
dependencies = [
"anyhow",
"indexmap 1.9.3",
diff --git a/Cargo.toml b/Cargo.toml
index 1c3820e163ca5..6a68ee69b6bc5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -40,11 +40,11 @@ swc_core = { version = "0.86.10", features = [
testing = { version = "0.35.0" }
# Turbo crates
-turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231025.1" }
+turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231026.1" }
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
-turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231025.1" }
+turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231026.1" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
-turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231025.1" }
+turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-231026.1" }
# General Deps
diff --git a/docs/02-app/01-building-your-application/06-optimizing/10-third-party-libraries.mdx b/docs/02-app/01-building-your-application/06-optimizing/10-third-party-libraries.mdx
new file mode 100644
index 0000000000000..e45d6222aa6b0
--- /dev/null
+++ b/docs/02-app/01-building-your-application/06-optimizing/10-third-party-libraries.mdx
@@ -0,0 +1,288 @@
+---
+title: Third Party Libraries
+description: Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.
+---
+
+{/* The content of this doc is shared between the app and pages router. You can use the `Content ` component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */}
+
+**`@next/third-parties`** is a library that provides a collection of components and utilities that
+improve the performance and developer experience of loading popular third-party libraries in your
+Next.js application.
+
+> **Good to know**: `@next/third-parties` is a new **experimental** library that is still under
+> active development. We're currently working on adding more third-party integrations.
+
+All third-party integrations provided by `@next/third-parties` have been optimized for performance
+and ease of use.
+
+## Getting Started
+
+To get started, you must install the `@next/third-parties` library:
+
+```bash filename="Terminal"
+npm install @next/third-parties
+```
+
+## Google Third-Parties
+
+All supported third-party libraries from Google can be imported from `@next/third-parties/google`.
+
+### Google Tag Manager
+
+The `GoogleTagManager` component can be used to instantiate a [Google Tag
+Manager](https://developers.google.com/maps/documentation/embed/embedding-map) container to your
+page. By default, it fetches the original inline script after hydration occurs on the page.
+
+
+
+To load Google Tag Manager for all routes, include the component directly in your root layout:
+
+```tsx filename="app/layout.tsx" switcher
+import { GoogleTagManager } from '@next/third-parties/google'
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+ {children}
+
+
+ )
+}
+```
+
+```jsx filename="app/layout.js" switcher
+import { GoogleTagManager } from '@next/third-parties/google'
+
+export default function RootLayout({ children }) {
+ return (
+
+ {children}
+
+
+ )
+}
+```
+
+
+
+
+
+To load Google Tag Manager for all routes, include the component directly in your custom `_app`:
+
+```jsx filename="pages/_app.js"
+import { GoogleTagManager } from '@next/third-parties/google'
+
+export default function MyApp({ Component, pageProps }) {
+ return (
+ <>
+
+
+ >
+ )
+}
+```
+
+
+
+To load Google Tag Manager for a single route, include the comopnent in your page file:
+
+
+
+```jsx filename="app/page.js"
+import { GoogleTagManager } from '@next/third-parties/google'
+
+export default function Page() {
+ return
+}
+```
+
+
+
+
+
+```jsx filename="pages/index.js"
+import { GoogleTagManager } from '@next/third-parties/google'
+
+export default function Page() {
+ return
+}
+```
+
+
+
+#### Sending Events
+
+The `sendGTMEvent` function can be used to track user interactions on your page by sending events
+using the `dataLayer` object. For this function to work, the ` ` component must be
+included in either a parent layout, page, or component, or directly in the same file.
+
+
+
+```jsx filename="app/page.js"
+'use client'
+
+import { sendGTMEvent } from '@next/third-parties/google'
+
+export function EventButton() {
+ return (
+
+ sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
+ >
+ Send Event
+
+
+ )
+}
+```
+
+
+
+
+
+```jsx filename="pages/index.js"
+import { sendGTMEvent } from '@next/third-parties/google'
+
+export function EventButton() {
+ return (
+
+ sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}
+ >
+ Send Event
+
+
+ )
+}
+```
+
+
+
+Refer to the [Tag Manager](https://developers.google.com/tag-platform/tag-manager/datalayer)
+documentation to learn about the different variables and events that can be passed into the
+function.
+
+#### Options
+
+Options to pass to the Google Maps Embed. For a full list of options, read the [Google Map Embed
+docs](https://developers.google.com/maps/documentation/embed/embedding-map).
+
+| Name | Type | Description |
+| --------------- | -------- | ------------------------------------------------------------------------------- |
+| `gtmId` | Required | Your GTM container id. |
+| `dataLayer` | Optional | Data layer array to instantiate the container with. Defaults to an empty array. |
+| `dataLayerName` | Optional | Name of the data layer. Defaults to `dataLayer`. |
+| `auth` | Optional | Value of authentication parameter (`gtm_auth`) for environment snippets. |
+| `preview` | Optional | Value of preview parameter (`gtm_preview`) for environment snippets. |
+
+### Google Maps Embed
+
+The `GoogleMapsEmbed` component can be used to add a [Google Maps
+Embed](https://developers.google.com/maps/documentation/embed/embedding-map) to your page. By
+default, it uses the `loading` attribute to lazy-load the embed below the fold.
+
+
+
+```jsx filename="app/page.js"
+import { GoogleMapsEmbed } from '@next/third-parties/google'
+
+export default function Page() {
+ return (
+
+ )
+}
+```
+
+
+
+
+
+```jsx filename="pages/index.js"
+import { GoogleMapsEmbed } from '@next/third-parties/google'
+
+export default function Page() {
+ return (
+
+ )
+}
+```
+
+
+
+#### Options
+
+Options to pass to the Google Maps Embed. For a full list of options, read the [Google Map Embed
+docs](https://developers.google.com/maps/documentation/embed/embedding-map).
+
+| Name | Type | Description |
+| ----------------- | -------- | --------------------------------------------------------------------------------------------------- |
+| `apiKey` | Required | Your api key. |
+| `mode` | Required | [Map mode](https://developers.google.com/maps/documentation/embed/embedding-map#choosing_map_modes) |
+| `height` | Optional | Height of the embed. Defaults to `auto`. |
+| `width` | Optional | Width of the embed. Defaults to `auto`. |
+| `style` | Optional | Pass styles to the iframe. |
+| `allowfullscreen` | Optional | Property to allow certain map parts to go full screen. |
+| `loading` | Optional | Defaults to lazy. Consider changing if you know your embed will be above-the-fold. |
+| `q` | Optional | Defines map marker location. _This may be required depending on the map mode_. |
+| `center` | Optional | Defines center of the map view. |
+| `zoom` | Optional | Sets initial zoom level of the map. |
+| `maptype` | Optional | Defines type of map tiles to load. |
+| `language` | Optional | Defines the language to use for UI elements and for the display of labels on map tiles. |
+| `region` | Optional | Defines the appropriate borders and labels to display, based on geo-political sensitivities. |
+
+### YouTube Embed
+
+The `YouTubeEmbed` component can be used to load and display a YouTube embed. This component loads
+faster by using [`lite-youtube-embed`](https://github.com/paulirish/lite-youtube-embed) under the
+hood.
+
+
+
+```jsx filename="app/page.js"
+import { YouTubeEmbed } from '@next/third-parties/google'
+
+export default function Page() {
+ return
+}
+```
+
+
+
+
+
+```jsx filename="pages/index.js"
+import { YouTubeEmbed } from '@next/third-parties/google'
+
+export default function Page() {
+ return
+}
+```
+
+
+
+#### Options
+
+| Name | Type | Description |
+| ----------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `videoid` | Required | YouTube video id. |
+| `width` | Optional | Width of the video container. Defaults to `auto` |
+| `height` | Optional | Height of the video container. Defaults to `auto` |
+| `playlabel` | Optional | A visually hidden label for the play button for accessibility. |
+| `params` | Optional | The video player params defined [here](https://developers.google.com/youtube/player_parameters#Parameters). Params are passed as a query param string. Eg: `params="controls=0&start=10&end=30"` |
+| `style` | Optional | Used to apply styles to the video container. |
diff --git a/docs/03-pages/01-building-your-application/05-optimizing/11-third-party-libraries.mdx b/docs/03-pages/01-building-your-application/05-optimizing/11-third-party-libraries.mdx
new file mode 100644
index 0000000000000..0ca3a1ece15dc
--- /dev/null
+++ b/docs/03-pages/01-building-your-application/05-optimizing/11-third-party-libraries.mdx
@@ -0,0 +1,7 @@
+---
+title: Third Party Libraries
+description: Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.
+source: app/building-your-application/optimizing/third-party-libraries
+---
+
+{/* DO NOT EDIT. The content of this doc is generated from the source above. To edit the content of this page, navigate to the source page in your editor. You can use the `Content ` component to add content that is specific to the Pages Router. Any shared content should not be wrapped in a component. */}
diff --git a/examples/with-google-tag-manager/.env.local.example b/examples/with-google-tag-manager/.env.local.example
deleted file mode 100644
index 474e6beaa7ecb..0000000000000
--- a/examples/with-google-tag-manager/.env.local.example
+++ /dev/null
@@ -1 +0,0 @@
-NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID=
\ No newline at end of file
diff --git a/examples/with-google-tag-manager/.gitignore b/examples/with-google-tag-manager/.gitignore
deleted file mode 100644
index fd3dbb571a12a..0000000000000
--- a/examples/with-google-tag-manager/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# local env files
-.env*.local
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
diff --git a/examples/with-google-tag-manager/README.md b/examples/with-google-tag-manager/README.md
deleted file mode 100644
index 1541fec9fd06f..0000000000000
--- a/examples/with-google-tag-manager/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-## Example app using Google Tag Manager
-
-This example shows how to use Next.js along with Google Tag Manager. [`pages/_document.js`](pages/_document.js) is used to inject [base code](https://developers.google.com/tag-manager/quickstart). [`pages/_app.js`](pages/_app.js) is used to track route changes and send page views to Google Tag Manager.
-
-## Deploy your own
-
-Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme&utm_campaign=next-example):
-
-[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vercel/next.js/tree/canary/examples/with-google-tag-manager&project-name=with-google-tag-manager&repository-name=with-google-tag-manager)
-
-## How to use
-
-Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [npm](https://docs.npmjs.com/cli/init), [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/), or [pnpm](https://pnpm.io) to bootstrap the example:
-
-```bash
-npx create-next-app --example with-google-tag-manager with-google-tag-manager-app
-```
-
-```bash
-yarn create next-app --example with-google-tag-manager with-google-tag-manager-app
-```
-
-```bash
-pnpm create next-app --example with-google-tag-manager with-google-tag-manager-app
-```
-
-Next, copy the `.env.local.example` file in this directory to `.env.local` (which will be ignored by Git):
-
-```bash
-cp .env.local.example .env.local
-```
-
-Set the `NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID` variable in `.env.local` to match your Google Tag Manager ID.
-
-Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=next-example) ([Documentation](https://nextjs.org/docs/deployment)).
diff --git a/examples/with-google-tag-manager/lib/gtm.js b/examples/with-google-tag-manager/lib/gtm.js
deleted file mode 100644
index 299c4aa7b8d8c..0000000000000
--- a/examples/with-google-tag-manager/lib/gtm.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export const GTM_ID = process.env.NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID
-
-export const pageview = (url) => {
- window.dataLayer.push({
- event: 'pageview',
- page: url,
- })
-}
diff --git a/examples/with-google-tag-manager/package.json b/examples/with-google-tag-manager/package.json
deleted file mode 100644
index 65f904f0513c2..0000000000000
--- a/examples/with-google-tag-manager/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start"
- },
- "dependencies": {
- "next": "latest",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- }
-}
diff --git a/examples/with-google-tag-manager/pages/_app.js b/examples/with-google-tag-manager/pages/_app.js
deleted file mode 100644
index 5481c3d3c97ac..0000000000000
--- a/examples/with-google-tag-manager/pages/_app.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import { useEffect } from 'react'
-import Script from 'next/script'
-import { useRouter } from 'next/router'
-import { GTM_ID, pageview } from '../lib/gtm'
-
-function MyApp({ Component, pageProps }) {
- const router = useRouter()
- useEffect(() => {
- router.events.on('routeChangeComplete', pageview)
- return () => {
- router.events.off('routeChangeComplete', pageview)
- }
- }, [router.events])
-
- return (
- <>
- {/* Google Tag Manager - Global base code */}
-
-
- >
- )
-}
-
-export default MyApp
diff --git a/examples/with-google-tag-manager/pages/_document.js b/examples/with-google-tag-manager/pages/_document.js
deleted file mode 100644
index ce25d5678384c..0000000000000
--- a/examples/with-google-tag-manager/pages/_document.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Html, Head, Main, NextScript } from 'next/document'
-import { GTM_ID } from '../lib/gtm'
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/examples/with-google-tag-manager/pages/index.js b/examples/with-google-tag-manager/pages/index.js
deleted file mode 100644
index fc7e4f0e86396..0000000000000
--- a/examples/with-google-tag-manager/pages/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-export default function Home() {
- return (
-
-
- Go to `pages/_app.js` and `pages/_document.js` to see how you can add
- Google Tag Manager to your app
-
-
- )
-}
diff --git a/examples/with-google-tag-manager/public/favicon.ico b/examples/with-google-tag-manager/public/favicon.ico
deleted file mode 100644
index 4965832f2c9b0..0000000000000
Binary files a/examples/with-google-tag-manager/public/favicon.ico and /dev/null differ
diff --git a/lerna.json b/lerna.json
index b37160416d871..715c0e8f03f99 100644
--- a/lerna.json
+++ b/lerna.json
@@ -16,5 +16,5 @@
"registry": "https://registry.npmjs.org/"
}
},
- "version": "13.5.7-canary.32"
+ "version": "13.5.7-canary.33"
}
diff --git a/packages/create-next-app/package.json b/packages/create-next-app/package.json
index 6cd434c4f88a7..418d3be021738 100644
--- a/packages/create-next-app/package.json
+++ b/packages/create-next-app/package.json
@@ -1,6 +1,6 @@
{
"name": "create-next-app",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"keywords": [
"react",
"next",
diff --git a/packages/eslint-config-next/package.json b/packages/eslint-config-next/package.json
index f654bd22de0a4..992ad0156d73d 100644
--- a/packages/eslint-config-next/package.json
+++ b/packages/eslint-config-next/package.json
@@ -1,6 +1,6 @@
{
"name": "eslint-config-next",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "ESLint configuration used by Next.js.",
"main": "index.js",
"license": "MIT",
@@ -10,7 +10,7 @@
},
"homepage": "https://nextjs.org/docs/app/building-your-application/configuring/eslint#eslint-config",
"dependencies": {
- "@next/eslint-plugin-next": "13.5.7-canary.32",
+ "@next/eslint-plugin-next": "13.5.7-canary.33",
"@rushstack/eslint-patch": "^1.3.3",
"@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
"eslint-import-resolver-node": "^0.3.6",
diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json
index 3a1b20ecb650f..4c9da0983d8c6 100644
--- a/packages/eslint-plugin-next/package.json
+++ b/packages/eslint-plugin-next/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/eslint-plugin-next",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "ESLint plugin for Next.js.",
"main": "dist/index.js",
"license": "MIT",
diff --git a/packages/font/package.json b/packages/font/package.json
index 7e7cc3698b35f..d6dcf0ae7b729 100644
--- a/packages/font/package.json
+++ b/packages/font/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/font",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"repository": {
"url": "vercel/next.js",
"directory": "packages/font"
diff --git a/packages/next-bundle-analyzer/package.json b/packages/next-bundle-analyzer/package.json
index 1b304547ef5ea..fbe056e706d4f 100644
--- a/packages/next-bundle-analyzer/package.json
+++ b/packages/next-bundle-analyzer/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/bundle-analyzer",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"main": "index.js",
"types": "index.d.ts",
"license": "MIT",
diff --git a/packages/next-codemod/package.json b/packages/next-codemod/package.json
index e8f2295a2f403..81a4b3e3964e3 100644
--- a/packages/next-codemod/package.json
+++ b/packages/next-codemod/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/codemod",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"license": "MIT",
"repository": {
"type": "git",
diff --git a/packages/next-env/package.json b/packages/next-env/package.json
index 426db7771835f..0c635da8179ff 100644
--- a/packages/next-env/package.json
+++ b/packages/next-env/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/env",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"keywords": [
"react",
"next",
diff --git a/packages/next-mdx/package.json b/packages/next-mdx/package.json
index 12cf993ad4c9c..e175c36a09d22 100644
--- a/packages/next-mdx/package.json
+++ b/packages/next-mdx/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/mdx",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"main": "index.js",
"license": "MIT",
"repository": {
diff --git a/packages/next-plugin-storybook/package.json b/packages/next-plugin-storybook/package.json
index 5d8dd0933b121..9f370834c9aa4 100644
--- a/packages/next-plugin-storybook/package.json
+++ b/packages/next-plugin-storybook/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-storybook",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-storybook"
diff --git a/packages/next-polyfill-module/package.json b/packages/next-polyfill-module/package.json
index e81278f5294f5..b95ce71096e2b 100644
--- a/packages/next-polyfill-module/package.json
+++ b/packages/next-polyfill-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-module",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)",
"main": "dist/polyfill-module.js",
"license": "MIT",
diff --git a/packages/next-polyfill-nomodule/package.json b/packages/next-polyfill-nomodule/package.json
index b973564535276..29afea74061cc 100644
--- a/packages/next-polyfill-nomodule/package.json
+++ b/packages/next-polyfill-nomodule/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-nomodule",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
diff --git a/packages/next-swc/crates/next-core/src/next_import_map.rs b/packages/next-swc/crates/next-core/src/next_import_map.rs
index 3d3aac81dc4d5..dfb6b43c5b7a1 100644
--- a/packages/next-swc/crates/next-core/src/next_import_map.rs
+++ b/packages/next-swc/crates/next-core/src/next_import_map.rs
@@ -708,6 +708,7 @@ async fn insert_optimized_module_aliases(
"object.assign/polyfill" => "next/dist/build/polyfills/object.assign/polyfill.js".to_string(),
"object.assign/shim" => "next/dist/build/polyfills/object.assign/shim.js".to_string(),
"url" => "next/dist/compiled/native-url".to_string(),
+ "node:url" => "next/dist/compiled/native-url".to_string(),
},
);
Ok(())
diff --git a/packages/next-swc/package.json b/packages/next-swc/package.json
index 0b2e22a0d674a..fca31a2b5f4f9 100644
--- a/packages/next-swc/package.json
+++ b/packages/next-swc/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/swc",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"private": true,
"scripts": {
"clean": "node ../../scripts/rm.mjs native",
diff --git a/packages/next/package.json b/packages/next/package.json
index ad1c333aa4823..97762bfc1e82d 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -1,6 +1,6 @@
{
"name": "next",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
@@ -92,7 +92,7 @@
]
},
"dependencies": {
- "@next/env": "13.5.7-canary.32",
+ "@next/env": "13.5.7-canary.33",
"@swc/helpers": "0.5.2",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001406",
@@ -146,11 +146,11 @@
"@mswjs/interceptors": "0.23.0",
"@napi-rs/cli": "2.16.2",
"@napi-rs/triples": "1.1.0",
- "@next/polyfill-module": "13.5.7-canary.32",
- "@next/polyfill-nomodule": "13.5.7-canary.32",
- "@next/react-dev-overlay": "13.5.7-canary.32",
- "@next/react-refresh-utils": "13.5.7-canary.32",
- "@next/swc": "13.5.7-canary.32",
+ "@next/polyfill-module": "13.5.7-canary.33",
+ "@next/polyfill-nomodule": "13.5.7-canary.33",
+ "@next/react-dev-overlay": "13.5.7-canary.33",
+ "@next/react-refresh-utils": "13.5.7-canary.33",
+ "@next/swc": "13.5.7-canary.33",
"@opentelemetry/api": "1.4.1",
"@playwright/test": "^1.35.1",
"@taskr/clear": "1.1.0",
@@ -193,7 +193,7 @@
"@types/ws": "8.2.0",
"@vercel/ncc": "0.34.0",
"@vercel/nft": "0.22.6",
- "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1",
+ "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1",
"acorn": "8.5.0",
"amphtml-validator": "1.0.35",
"anser": "1.4.9",
diff --git a/packages/next/src/server/lib/router-utils/setup-dev-bundler.ts b/packages/next/src/server/lib/router-utils/setup-dev-bundler.ts
index e4ec8b27c8b51..bf195b6bb1be6 100644
--- a/packages/next/src/server/lib/router-utils/setup-dev-bundler.ts
+++ b/packages/next/src/server/lib/router-utils/setup-dev-bundler.ts
@@ -366,6 +366,7 @@ async function startWatcher(opts: SetupOpts) {
const serverPathState = new Map()
async function processResult(
+ id: string,
result: TurbopackResult
): Promise> {
// Figure out if the server files have changed
@@ -373,10 +374,23 @@ async function startWatcher(opts: SetupOpts) {
for (const { path: p, contentHash } of result.serverPaths) {
// We ignore source maps
if (p.endsWith('.map')) continue
- const previousHash = serverPathState.get(p)
- if (previousHash !== contentHash) {
+ let key = `${id}:${p}`
+ const localHash = serverPathState.get(key)
+ const globaHash = serverPathState.get(p)
+ if (
+ (localHash && localHash !== contentHash) ||
+ (globaHash && globaHash !== contentHash)
+ ) {
hasChange = true
+ serverPathState.set(key, contentHash)
serverPathState.set(p, contentHash)
+ } else {
+ if (!localHash) {
+ serverPathState.set(key, contentHash)
+ }
+ if (!globaHash) {
+ serverPathState.set(p, contentHash)
+ }
}
}
@@ -500,6 +514,7 @@ async function startWatcher(opts: SetupOpts) {
hmrBuilding = true
}
hmrPayloads.set(`${key}:${id}`, payload)
+ hmrEventHappend = true
sendHmrDebounce()
}
@@ -512,6 +527,7 @@ async function startWatcher(opts: SetupOpts) {
hmrBuilding = true
}
turbopackUpdates.push(payload)
+ hmrEventHappend = true
sendHmrDebounce()
}
@@ -1073,6 +1089,7 @@ async function startWatcher(opts: SetupOpts) {
if (middleware) {
const processMiddleware = async () => {
const writtenEndpoint = await processResult(
+ 'middleware',
await middleware.endpoint.writeToDisk()
)
processIssues('middleware', 'middleware', writtenEndpoint)
@@ -1160,6 +1177,21 @@ async function startWatcher(opts: SetupOpts) {
await writeFontManifest()
await writeLoadableManifest()
+ let hmrEventHappend = false
+ if (process.env.NEXT_HMR_TIMING) {
+ ;(async (proj: Project) => {
+ for await (const updateInfo of proj.updateInfoSubscribe()) {
+ if (hmrEventHappend) {
+ const time = updateInfo.duration
+ const timeMessage =
+ time > 2000 ? `${Math.round(time / 100) / 10}s` : `${time}ms`
+ Log.event(`Compiled in ${timeMessage}`)
+ hmrEventHappend = false
+ }
+ }
+ })(project)
+ }
+
const overlayMiddleware = getOverlayMiddleware(project)
const turbopackHotReloader: NextJsHotReloaderInterface = {
turbopackProject: project,
@@ -1298,6 +1330,7 @@ async function startWatcher(opts: SetupOpts) {
try {
if (globalEntries.app) {
const writtenEndpoint = await processResult(
+ '_app',
await globalEntries.app.writeToDisk()
)
processIssues('_app', '_app', writtenEndpoint)
@@ -1307,6 +1340,7 @@ async function startWatcher(opts: SetupOpts) {
if (globalEntries.document) {
const writtenEndpoint = await processResult(
+ '_document',
await globalEntries.document.writeToDisk()
)
changeSubscription(
@@ -1324,6 +1358,7 @@ async function startWatcher(opts: SetupOpts) {
if (globalEntries.error) {
const writtenEndpoint = await processResult(
+ '_error',
await globalEntries.error.writeToDisk()
)
processIssues(page, page, writtenEndpoint)
@@ -1393,6 +1428,7 @@ async function startWatcher(opts: SetupOpts) {
try {
if (globalEntries.app) {
const writtenEndpoint = await processResult(
+ '_app',
await globalEntries.app.writeToDisk()
)
processIssues('_app', '_app', writtenEndpoint)
@@ -1402,6 +1438,7 @@ async function startWatcher(opts: SetupOpts) {
if (globalEntries.document) {
const writtenEndpoint = await processResult(
+ '_document',
await globalEntries.document.writeToDisk()
)
@@ -1419,6 +1456,7 @@ async function startWatcher(opts: SetupOpts) {
await loadPagesManifest('_document')
const writtenEndpoint = await processResult(
+ page,
await route.htmlEndpoint.writeToDisk()
)
@@ -1476,6 +1514,7 @@ async function startWatcher(opts: SetupOpts) {
finishBuilding = startBuilding(buildingKey)
const writtenEndpoint = await processResult(
+ page,
await route.endpoint.writeToDisk()
)
@@ -1500,6 +1539,7 @@ async function startWatcher(opts: SetupOpts) {
case 'app-page': {
finishBuilding = startBuilding(buildingKey)
const writtenEndpoint = await processResult(
+ page,
await route.htmlEndpoint.writeToDisk()
)
@@ -1550,6 +1590,7 @@ async function startWatcher(opts: SetupOpts) {
case 'app-route': {
finishBuilding = startBuilding(buildingKey)
const writtenEndpoint = await processResult(
+ page,
await route.endpoint.writeToDisk()
)
diff --git a/packages/react-dev-overlay/package.json b/packages/react-dev-overlay/package.json
index cacde58eabc77..8d79e6f4b90f0 100644
--- a/packages/react-dev-overlay/package.json
+++ b/packages/react-dev-overlay/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/react-dev-overlay",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "A development-only overlay for developing React applications.",
"repository": {
"url": "vercel/next.js",
diff --git a/packages/react-refresh-utils/package.json b/packages/react-refresh-utils/package.json
index f2d14ad82e6db..42bcb2aa9d25a 100644
--- a/packages/react-refresh-utils/package.json
+++ b/packages/react-refresh-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/react-refresh-utils",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"description": "An experimental package providing utilities for React Refresh.",
"repository": {
"url": "vercel/next.js",
diff --git a/packages/third-parties/package.json b/packages/third-parties/package.json
index 664d72bd0c34a..5c808538cf2b4 100644
--- a/packages/third-parties/package.json
+++ b/packages/third-parties/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/third-parties",
- "version": "13.5.7-canary.32",
+ "version": "13.5.7-canary.33",
"repository": {
"url": "vercel/next.js",
"directory": "packages/third-parties"
@@ -22,7 +22,7 @@
"third-party-capital": "1.0.20"
},
"devDependencies": {
- "next": "13.5.7-canary.32",
+ "next": "13.5.7-canary.33",
"outdent": "0.8.0",
"prettier": "2.5.1"
},
diff --git a/packages/third-parties/src/types/google.ts b/packages/third-parties/src/types/google.ts
index 075c7555a30f2..8f59b9338f7a1 100644
--- a/packages/third-parties/src/types/google.ts
+++ b/packages/third-parties/src/types/google.ts
@@ -19,4 +19,6 @@ export type YouTubeEmbed = {
width?: number
videoid: string
playlabel?: string
+ params?: string
+ style?: string
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4ea8556a516cf..ac93116f3c7ca 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -735,7 +735,7 @@ importers:
packages/eslint-config-next:
dependencies:
'@next/eslint-plugin-next':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../eslint-plugin-next
'@rushstack/eslint-patch':
specifier: ^1.3.3
@@ -796,7 +796,7 @@ importers:
packages/next:
dependencies:
'@next/env':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../next-env
'@swc/helpers':
specifier: 0.5.2
@@ -920,19 +920,19 @@ importers:
specifier: 1.1.0
version: 1.1.0
'@next/polyfill-module':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../next-polyfill-module
'@next/polyfill-nomodule':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../next-polyfill-nomodule
'@next/react-dev-overlay':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../react-dev-overlay
'@next/react-refresh-utils':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../react-refresh-utils
'@next/swc':
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../next-swc
'@opentelemetry/api':
specifier: 1.4.1
@@ -1061,8 +1061,8 @@ importers:
specifier: 0.22.6
version: 0.22.6
'@vercel/turbopack-ecmascript-runtime':
- specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1
- version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1(react-refresh@0.12.0)(webpack@5.86.0)'
+ specifier: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1
+ version: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1(react-refresh@0.12.0)(webpack@5.86.0)'
acorn:
specifier: 8.5.0
version: 8.5.0
@@ -1583,7 +1583,7 @@ importers:
version: 1.0.20
devDependencies:
next:
- specifier: 13.5.7-canary.32
+ specifier: 13.5.7-canary.33
version: link:../next
outdent:
specifier: 0.8.0
@@ -24947,9 +24947,9 @@ packages:
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
- '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1(react-refresh@0.12.0)(webpack@5.86.0)':
- resolution: {registry: https://registry.npmjs.org/, tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1}
- id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231025.1'
+ '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1(react-refresh@0.12.0)(webpack@5.86.0)':
+ resolution: {registry: https://registry.npmjs.org/, tarball: https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1}
+ id: '@gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-231026.1'
name: '@vercel/turbopack-ecmascript-runtime'
version: 0.0.0
dependencies:
diff --git a/test/turbopack-tests-manifest.json b/test/turbopack-tests-manifest.json
index b302d089fd1f8..2461bf90d7f4d 100644
--- a/test/turbopack-tests-manifest.json
+++ b/test/turbopack-tests-manifest.json
@@ -3190,9 +3190,11 @@
"app dir - hooks from pages should have the correct hooks",
"app dir - hooks useDraftMode should genenerate rand when draft mode enabled",
"app dir - hooks useDraftMode should use initial rand when draft mode be disabled",
+ "app dir - hooks useRouter should allow access to the router"
+ ],
+ "failed": [
"app dir - hooks usePathname should have the canonical url pathname on rewrite",
"app dir - hooks usePathname should have the correct pathname",
- "app dir - hooks useRouter should allow access to the router",
"app dir - hooks useSearchParams should have the canonical url search params on rewrite",
"app dir - hooks useSearchParams should have the correct search params",
"app dir - hooks useSelectedLayoutSegment should have the correct layout segment at /hooks/use-selected-layout-segment/first",
@@ -3207,7 +3209,6 @@
"app dir - hooks useSelectedLayoutSegments should have the correct layout segments at /hooks/use-selected-layout-segment/rewritten-middleware",
"app dir - hooks useSelectedLayoutSegments should return an empty array in pages"
],
- "failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
@@ -13512,6 +13513,7 @@
"test/integration/react-streaming/test/index.test.js": {
"passed": [
"streaming dev dev should not stream to crawlers or google pagerender bot",
+ "streaming dev dev should render 500 error correctly",
"streaming dev dev should render fallback if error raised from suspense during streaming",
"streaming dev dev should support streaming for fizz response"
],
@@ -13522,7 +13524,7 @@
"production mode streaming prod prod should render fallback if error raised from suspense during streaming",
"production mode streaming prod prod should support streaming for fizz response"
],
- "flakey": ["streaming dev dev should render 500 error correctly"],
+ "flakey": [],
"runtimeError": false
},
"test/integration/read-only-source-hmr/test/index.test.js": {