diff --git a/bench/module-cost/.gitignore b/bench/module-cost/.gitignore index fd0a8a0a91b50..b1d3827455c44 100644 --- a/bench/module-cost/.gitignore +++ b/bench/module-cost/.gitignore @@ -1,3 +1,4 @@ commonjs/* esm/* -CPU* \ No newline at end of file +CPU* +benchmark-results-*.json \ No newline at end of file diff --git a/bench/module-cost/components/client.js b/bench/module-cost/components/client.js index 967e20a312fa9..f8118beb353a2 100644 --- a/bench/module-cost/components/client.js +++ b/bench/module-cost/components/client.js @@ -4,6 +4,11 @@ import { useEffect, useRef, useState } from 'react' import { format, measure } from '../lib/measure' function report(result, element, textarea) { + if (!globalThis.BENCHMARK_RESULTS) { + globalThis.BENCHMARK_RESULTS = [] + } + globalThis.BENCHMARK_RESULTS.push(result) + const formattedResult = format(result) element.textContent += `: ${formattedResult}` textarea.current.value += `\n ${formattedResult}` diff --git a/bench/module-cost/package.json b/bench/module-cost/package.json index d50bd133aaf55..eb6e8a7478d92 100644 --- a/bench/module-cost/package.json +++ b/bench/module-cost/package.json @@ -2,6 +2,7 @@ "name": "module-cost", "scripts": { "prepare-bench": "node scripts/prepare-bench.mjs", + "benchmark": "node scripts/benchmark-runner.mjs", "dev-webpack": "next dev", "dev-turbopack": "next dev --turbo", "build-webpack": "next build", @@ -10,6 +11,7 @@ }, "devDependencies": { "rimraf": "6.0.1", - "next": "workspace:*" + "next": "workspace:*", + "playwright": "^1.40.0" } } diff --git a/bench/module-cost/scripts/benchmark-runner.mjs b/bench/module-cost/scripts/benchmark-runner.mjs new file mode 100644 index 0000000000000..eb96b27ce3571 --- /dev/null +++ b/bench/module-cost/scripts/benchmark-runner.mjs @@ -0,0 +1,255 @@ +import { spawn } from 'node:child_process' +import { writeFileSync } from 'node:fs' +import { chromium } from 'playwright' + +/// To use: +/// - Install Playwright: `npx playwright install chromium` +/// - Install dependencies: `pnpm install` +/// - Build the application: `pnpm build-webpack` or pnpm build-turbopack` +/// - Run the benchmark: `pnpm benchmark` + +class BenchmarkRunner { + constructor(options) { + this.name = options.name + this.samples = options.samples ?? 50 + this.buttonClickDelay = options.buttonClickDelay ?? 500 + this.results = [] + } + + async runBenchmark() { + for (let i = 1; i <= this.samples; i++) { + console.log(`\n--- Running sample ${i}/${this.samples} ---`) + + const result = await this.runSingleSample() + this.results.push(...result) + } + + this.saveResults() + console.log('\nBenchmark completed!') + } + + async runSingleSample() { + let server + let browser + + try { + // 1. Launch the server + server = await this.startServer() + + // 2. Launch Chrome incognito + console.log('Launching browser...') + browser = await chromium.launch({ + headless: true, // Set to true if you don't want to see the browser + args: ['--incognito'], + }) + + const context = await browser.newContext() + const page = await context.newPage() + + // 3. Navigate to localhost:3000 + await page.goto('http://localhost:3000', { waitUntil: 'load' }) + + // 4. Find and click all buttons + const buttons = await page.locator('button').all() + + for (let j = 0; j < buttons.length; j++) { + await buttons[j].click() + await this.sleep(this.buttonClickDelay) + } + + // 5. Capture data from textbox + console.log('Capturing data from the page...') + const textboxData = await this.capturePageData(page) + console.log('Captured data from the page:', textboxData) + + // 6. Close browser + console.log('Closing browser...') + await browser.close() + browser = null + + // 7. Shut down server + console.log('Shutting down server...') + await this.stopServer(server) + server = null + + return textboxData + } catch (error) { + // Cleanup in case of error + if (browser) { + try { + await browser.close() + } catch (e) { + console.error('Error closing browser:', e.message) + } + } + if (server) { + try { + await this.stopServer(server) + } catch (e) { + console.error('Error stopping server:', e.message) + } + } + throw error + } + } + + async startServer() { + return new Promise((resolve, reject) => { + const server = spawn('pnpm', ['start'], { + stdio: ['pipe', 'pipe', 'pipe'], + shell: true, + }) + + let serverReady = false + + server.stdout.on('data', (data) => { + const output = data.toString() + console.log('Server:', output.trim()) + + // Look for common Next.js ready indicators + if ( + output.includes('Ready') || + output.includes('started server') || + output.includes('Local:') + ) { + if (!serverReady) { + serverReady = true + resolve(server) + } + } + }) + + server.stderr.on('data', (data) => { + console.error('Server Error:', data.toString().trim()) + }) + + server.on('error', (error) => { + reject(new Error(`Failed to start server: ${error.message}`)) + }) + + server.on('close', (code) => { + if (!serverReady) { + reject( + new Error(`Server exited with code ${code} before becoming ready`) + ) + } + }) + + // Timeout after 30 seconds + setTimeout(() => { + if (!serverReady) { + server.kill() + reject(new Error('Server startup timeout')) + } + }, 30000) + }) + } + + async stopServer(server) { + return new Promise((resolve) => { + if (!server || server.killed) { + resolve() + return + } + + server.on('close', () => { + resolve() + }) + + // Try graceful shutdown first + server.kill('SIGTERM') + + // Force kill after 5 seconds + setTimeout(() => { + if (!server.killed) { + server.kill('SIGKILL') + } + resolve() + }, 5000) + }) + } + + async capturePageData(page) { + return await page.evaluate(() => globalThis.BENCHMARK_RESULTS) + } + + async sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)) + } + + saveResults() { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-') + const filename = `benchmark-results-${this.name}-${timestamp}.json` + + writeFileSync( + filename, + JSON.stringify(summarizeDurations(this.results), null, 2) + ) + console.log(`Results saved to ${filename}`) + } +} + +const summarizeDurations = (data) => { + if (!Array.isArray(data) || data.length === 0) { + throw new Error('No data to summarize') + } + + const byName = new Map() + for (const item of data) { + const name = item.name + if (!byName.has(name)) { + byName.set(name, []) + } + byName.get(name).push(item) + } + const results = [] + for (const [name, data] of byName) { + const loadDurations = data + .map((item) => item.loadDuration) + .sort((a, b) => a - b) + const executeDurations = data + .map((item) => item.executeDuration) + .sort((a, b) => a - b) + + const getSummary = (durations) => { + const sum = durations.reduce((acc, val) => acc + val, 0) + const average = sum / durations.length + + const middle = Math.floor(durations.length / 2) + const median = + durations.length % 2 === 0 + ? (durations[middle - 1] + durations[middle]) / 2 + : durations[middle] + + const percentile75Index = Math.floor(durations.length * 0.75) + const percentile75 = durations[percentile75Index] + + return { + average, + median, + percentile75, + } + } + + results.push({ + name, + totalSamples: data.length, + loadDuration: getSummary(loadDurations), + executeDuration: getSummary(executeDurations), + }) + } + + return results +} + +// CLI usage +const args = process.argv.slice(2) +const samples = args.length > 0 ? Number.parseInt(args[0]) : undefined +const name = args.length > 1 ? args[1] : undefined + +const runner = new BenchmarkRunner({ + name, + samples, +}) + +runner.runBenchmark().catch(console.error) diff --git a/crates/napi/src/next_api/project.rs b/crates/napi/src/next_api/project.rs index c92bab4d2b062..48228597ca4c7 100644 --- a/crates/napi/src/next_api/project.rs +++ b/crates/napi/src/next_api/project.rs @@ -541,7 +541,7 @@ async fn benchmark_file_io( ))? .await?; - let directory = fs.to_sys_path(directory).await?; + let directory = fs.to_sys_path(directory)?; let temp_path = directory.join(format!( "tmp_file_io_benchmark_{:x}", rand::random::() diff --git a/crates/next-api/src/app.rs b/crates/next-api/src/app.rs index acc87733029ef..79b39f35b6f98 100644 --- a/crates/next-api/src/app.rs +++ b/crates/next-api/src/app.rs @@ -66,7 +66,7 @@ use turbopack_core::{ }, output::{OutputAsset, OutputAssets}, raw_output::RawOutput, - reference_type::{CssReferenceSubType, ReferenceType}, + reference_type::{CommonJsReferenceSubType, CssReferenceSubType, ReferenceType}, resolve::{origin::PlainResolveOrigin, parse::Request, pattern::Pattern}, source::Source, virtual_output::VirtualOutputAsset, @@ -852,6 +852,7 @@ impl AppProject { Request::parse(Pattern::Constant(rcstr!( "next/dist/client/app-next-turbopack.js" ))), + CommonJsReferenceSubType::Undefined, None, false, ) diff --git a/crates/next-core/src/next_client/runtime_entry.rs b/crates/next-core/src/next_client/runtime_entry.rs index 7f16d089b9e3a..da7db70acd49c 100644 --- a/crates/next-core/src/next_client/runtime_entry.rs +++ b/crates/next-core/src/next_client/runtime_entry.rs @@ -5,6 +5,7 @@ use turbopack_core::{ chunk::{EvaluatableAsset, EvaluatableAssetExt, EvaluatableAssets}, context::AssetContext, module::Module, + reference_type::CommonJsReferenceSubType, resolve::{origin::PlainResolveOrigin, parse::Request}, source::Source, }; @@ -35,6 +36,7 @@ impl RuntimeEntry { let modules = cjs_resolve( Vc::upcast(PlainResolveOrigin::new(asset_context, path.clone())), *request, + CommonJsReferenceSubType::Undefined, None, false, ) diff --git a/crates/next-core/src/next_client/transforms.rs b/crates/next-core/src/next_client/transforms.rs index 1fa152e99b98b..a51d033d0900f 100644 --- a/crates/next-core/src/next_client/transforms.rs +++ b/crates/next-core/src/next_client/transforms.rs @@ -45,7 +45,8 @@ pub async fn get_next_client_transforms_rules( rules.push(get_next_font_transform_rule(enable_mdx_rs)); - if mode.await?.is_development() { + let is_development = mode.await?.is_development(); + if is_development { rules.push(get_debug_fn_name_rule(enable_mdx_rs)); } @@ -68,7 +69,11 @@ pub async fn get_next_client_transforms_rules( enable_mdx_rs, pages_dir.clone(), )); - rules.push(get_next_page_config_rule(enable_mdx_rs, pages_dir.clone())); + rules.push(get_next_page_config_rule( + is_development, + enable_mdx_rs, + pages_dir.clone(), + )); } } ClientContextType::App { .. } => { diff --git a/crates/next-core/src/next_server/context.rs b/crates/next-core/src/next_server/context.rs index b29e3945b334c..99d607e7d53c7 100644 --- a/crates/next-core/src/next_server/context.rs +++ b/crates/next-core/src/next_server/context.rs @@ -58,7 +58,7 @@ use crate::{ get_invalid_styled_jsx_resolve_plugin, }, transforms::{ - emotion::get_emotion_transform_rule, get_ecma_transform_rule, + EcmascriptTransformStage, emotion::get_emotion_transform_rule, get_ecma_transform_rule, next_react_server_components::get_next_react_server_components_transform_rule, react_remove_properties::get_react_remove_properties_transform_rule, relay::get_relay_transform_rule, remove_console::get_remove_console_transform_rule, @@ -768,7 +768,7 @@ pub async fn get_server_module_options_context( ecmascript_client_reference_transition_name, )), enable_mdx_rs.is_some(), - true, + EcmascriptTransformStage::Preprocess, )); } @@ -844,7 +844,7 @@ pub async fn get_server_module_options_context( ecmascript_client_reference_transition_name, )), enable_mdx_rs.is_some(), - true, + EcmascriptTransformStage::Preprocess, )); } @@ -922,7 +922,7 @@ pub async fn get_server_module_options_context( ecmascript_client_reference_transition_name, )), enable_mdx_rs.is_some(), - true, + EcmascriptTransformStage::Preprocess, )); } else { custom_source_transform_rules.push(get_ecma_transform_rule( @@ -930,7 +930,7 @@ pub async fn get_server_module_options_context( "next/dist/client/use-client-disallowed.js".to_string(), )), enable_mdx_rs.is_some(), - true, + EcmascriptTransformStage::Preprocess, )); } diff --git a/crates/next-core/src/next_shared/transforms/debug_fn_name.rs b/crates/next-core/src/next_shared/transforms/debug_fn_name.rs index a95e10ed6034f..7664fd190da3b 100644 --- a/crates/next-core/src/next_shared/transforms/debug_fn_name.rs +++ b/crates/next-core/src/next_shared/transforms/debug_fn_name.rs @@ -16,8 +16,9 @@ pub fn get_debug_fn_name_rule(enable_mdx_rs: bool) -> ModuleRule { ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![debug_fn_name_transform]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![debug_fn_name_transform]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/emotion.rs b/crates/next-core/src/next_shared/transforms/emotion.rs index d8997df8695ee..6fd4d324b7b72 100644 --- a/crates/next-core/src/next_shared/transforms/emotion.rs +++ b/crates/next-core/src/next_shared/transforms/emotion.rs @@ -4,7 +4,10 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript_plugins::transform::emotion::EmotionTransformer; use super::get_ecma_transform_rule; -use crate::next_config::{EmotionTransformOptionsOrBoolean, NextConfig}; +use crate::{ + next_config::{EmotionTransformOptionsOrBoolean, NextConfig}, + next_shared::transforms::EcmascriptTransformStage, +}; pub async fn get_emotion_transform_rule(next_config: Vc) -> Result> { let enable_mdx_rs = next_config.mdx_rs().await?.is_some(); @@ -20,7 +23,13 @@ pub async fn get_emotion_transform_rule(next_config: Vc) -> Result EmotionTransformer::new(value), _ => None, }) - .map(|transformer| get_ecma_transform_rule(Box::new(transformer), enable_mdx_rs, true)); + .map(|transformer| { + get_ecma_transform_rule( + Box::new(transformer), + enable_mdx_rs, + EcmascriptTransformStage::Main, + ) + }); Ok(module_rule) } diff --git a/crates/next-core/src/next_shared/transforms/mod.rs b/crates/next-core/src/next_shared/transforms/mod.rs index 4491f6aa86b15..071e89f33cb22 100644 --- a/crates/next-core/src/next_shared/transforms/mod.rs +++ b/crates/next-core/src/next_shared/transforms/mod.rs @@ -134,28 +134,32 @@ pub(crate) fn module_rule_match_pages_page_file( ]) } +pub(crate) enum EcmascriptTransformStage { + Preprocess, + Main, + Postprocess, +} + /// Create a new module rule for the given ecmatransform, runs against /// any ecmascript (with mdx if enabled) except url reference type pub(crate) fn get_ecma_transform_rule( transformer: Box, enable_mdx_rs: bool, - prepend: bool, + stage: EcmascriptTransformStage, ) -> ModuleRule { let transformer = EcmascriptInputTransform::Plugin(ResolvedVc::cell(transformer as _)); - let (prepend, append) = if prepend { - ( - ResolvedVc::cell(vec![transformer]), - ResolvedVc::cell(vec![]), - ) - } else { - ( - ResolvedVc::cell(vec![]), - ResolvedVc::cell(vec![transformer]), - ) + let (preprocess, main, postprocess) = match stage { + EcmascriptTransformStage::Preprocess => (vec![transformer], vec![], vec![]), + EcmascriptTransformStage::Main => (vec![], vec![transformer], vec![]), + EcmascriptTransformStage::Postprocess => (vec![], vec![], vec![transformer]), }; ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), - vec![ModuleRuleEffect::ExtendEcmascriptTransforms { prepend, append }], + vec![ModuleRuleEffect::ExtendEcmascriptTransforms { + preprocess: ResolvedVc::cell(preprocess), + main: ResolvedVc::cell(main), + postprocess: ResolvedVc::cell(postprocess), + }], ) } diff --git a/crates/next-core/src/next_shared/transforms/modularize_imports.rs b/crates/next-core/src/next_shared/transforms/modularize_imports.rs index d963108dfb707..50e9298a42a0c 100644 --- a/crates/next-core/src/next_shared/transforms/modularize_imports.rs +++ b/crates/next-core/src/next_shared/transforms/modularize_imports.rs @@ -63,8 +63,9 @@ pub fn get_next_modularize_imports_rule( ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_amp_attributes.rs b/crates/next-core/src/next_shared/transforms/next_amp_attributes.rs index e3a78f105c422..3d0128750d4ff 100644 --- a/crates/next-core/src/next_shared/transforms/next_amp_attributes.rs +++ b/crates/next-core/src/next_shared/transforms/next_amp_attributes.rs @@ -14,8 +14,9 @@ pub fn get_next_amp_attr_rule(enable_mdx_rs: bool) -> ModuleRule { ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![transformer]), + postprocess: ResolvedVc::cell(vec![]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_cjs_optimizer.rs b/crates/next-core/src/next_shared/transforms/next_cjs_optimizer.rs index cf09fbcd7e1c5..6ad13957c82db 100644 --- a/crates/next-core/src/next_shared/transforms/next_cjs_optimizer.rs +++ b/crates/next-core/src/next_shared/transforms/next_cjs_optimizer.rs @@ -54,8 +54,9 @@ pub fn get_next_cjs_optimizer_rule(enable_mdx_rs: bool) -> ModuleRule { ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_disallow_re_export_all_in_page.rs b/crates/next-core/src/next_shared/transforms/next_disallow_re_export_all_in_page.rs index 855ae62c15061..a581a16f8c6ee 100644 --- a/crates/next-core/src/next_shared/transforms/next_disallow_re_export_all_in_page.rs +++ b/crates/next-core/src/next_shared/transforms/next_disallow_re_export_all_in_page.rs @@ -19,8 +19,9 @@ pub fn get_next_disallow_export_all_in_page_rule( ModuleRule::new( module_rule_match_pages_page_file(enable_mdx_rs, pages_dir), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_dynamic.rs b/crates/next-core/src/next_shared/transforms/next_dynamic.rs index 0fb60d6bad27a..ceb173230be76 100644 --- a/crates/next-core/src/next_shared/transforms/next_dynamic.rs +++ b/crates/next-core/src/next_shared/transforms/next_dynamic.rs @@ -27,8 +27,9 @@ pub async fn get_next_dynamic_transform_rule( Ok(ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![dynamic_transform]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![dynamic_transform]), }], )) } diff --git a/crates/next-core/src/next_shared/transforms/next_edge_node_api_assert.rs b/crates/next-core/src/next_shared/transforms/next_edge_node_api_assert.rs index 657cf64efca70..5ebd7ceb70c1f 100644 --- a/crates/next-core/src/next_shared/transforms/next_edge_node_api_assert.rs +++ b/crates/next-core/src/next_shared/transforms/next_edge_node_api_assert.rs @@ -24,8 +24,9 @@ pub fn next_edge_node_api_assert( ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_font.rs b/crates/next-core/src/next_shared/transforms/next_font.rs index 0b81722d400aa..b40bcf080ff1c 100644 --- a/crates/next-core/src/next_shared/transforms/next_font.rs +++ b/crates/next-core/src/next_shared/transforms/next_font.rs @@ -28,8 +28,9 @@ pub fn get_next_font_transform_rule(enable_mdx_rs: bool) -> ModuleRule { // TODO: Only match in pages (not pages/api), app/, etc. module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_lint.rs b/crates/next-core/src/next_shared/transforms/next_lint.rs index 3009dc7f217fd..453e962683837 100644 --- a/crates/next-core/src/next_shared/transforms/next_lint.rs +++ b/crates/next-core/src/next_shared/transforms/next_lint.rs @@ -6,9 +6,14 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript::{CustomTransformer, TransformContext}; use super::get_ecma_transform_rule; +use crate::next_shared::transforms::EcmascriptTransformStage; pub fn get_next_lint_transform_rule(enable_mdx_rs: bool) -> ModuleRule { - get_ecma_transform_rule(Box::new(LintTransformer {}), enable_mdx_rs, true) + get_ecma_transform_rule( + Box::new(LintTransformer {}), + enable_mdx_rs, + EcmascriptTransformStage::Preprocess, + ) } #[derive(Debug)] diff --git a/crates/next-core/src/next_shared/transforms/next_middleware_dynamic_assert.rs b/crates/next-core/src/next_shared/transforms/next_middleware_dynamic_assert.rs index c23635607b19c..cc6eadc459329 100644 --- a/crates/next-core/src/next_shared/transforms/next_middleware_dynamic_assert.rs +++ b/crates/next-core/src/next_shared/transforms/next_middleware_dynamic_assert.rs @@ -15,8 +15,9 @@ pub fn get_middleware_dynamic_assert_rule(enable_mdx_rs: bool) -> ModuleRule { ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_optimize_server_react.rs b/crates/next-core/src/next_shared/transforms/next_optimize_server_react.rs index acbe54ce12714..5e5340e15e7be 100644 --- a/crates/next-core/src/next_shared/transforms/next_optimize_server_react.rs +++ b/crates/next-core/src/next_shared/transforms/next_optimize_server_react.rs @@ -20,8 +20,9 @@ pub fn get_next_optimize_server_react_rule( ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_page_config.rs b/crates/next-core/src/next_shared/transforms/next_page_config.rs index c95fe13a92685..69c0c9f77d1e4 100644 --- a/crates/next-core/src/next_shared/transforms/next_page_config.rs +++ b/crates/next-core/src/next_shared/transforms/next_page_config.rs @@ -9,16 +9,20 @@ use turbopack_ecmascript::{CustomTransformer, EcmascriptInputTransform, Transfor use super::module_rule_match_pages_page_file; -pub fn get_next_page_config_rule(enable_mdx_rs: bool, pages_dir: FileSystemPath) -> ModuleRule { +pub fn get_next_page_config_rule( + is_development: bool, + enable_mdx_rs: bool, + pages_dir: FileSystemPath, +) -> ModuleRule { let transformer = EcmascriptInputTransform::Plugin(ResolvedVc::cell(Box::new(NextPageConfig { - // [TODO]: update once turbopack build works - is_development: true, + is_development, }) as _)); ModuleRule::new( module_rule_match_pages_page_file(enable_mdx_rs, pages_dir), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_page_static_info.rs b/crates/next-core/src/next_shared/transforms/next_page_static_info.rs index 658c044adb33d..3217f8847b163 100644 --- a/crates/next-core/src/next_shared/transforms/next_page_static_info.rs +++ b/crates/next-core/src/next_shared/transforms/next_page_static_info.rs @@ -39,8 +39,9 @@ pub fn get_next_page_static_info_assert_rule( ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![transformer]), - append: ResolvedVc::cell(vec![]), + preprocess: ResolvedVc::cell(vec![transformer]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_pure.rs b/crates/next-core/src/next_shared/transforms/next_pure.rs index 8226499ecd47e..31baeca2947d4 100644 --- a/crates/next-core/src/next_shared/transforms/next_pure.rs +++ b/crates/next-core/src/next_shared/transforms/next_pure.rs @@ -14,8 +14,9 @@ pub fn get_next_pure_rule(enable_mdx_rs: bool) -> ModuleRule { ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_react_server_components.rs b/crates/next-core/src/next_shared/transforms/next_react_server_components.rs index cd0b1fe71e640..89a3e3ba984e5 100644 --- a/crates/next-core/src/next_shared/transforms/next_react_server_components.rs +++ b/crates/next-core/src/next_shared/transforms/next_react_server_components.rs @@ -11,7 +11,7 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript::{CustomTransformer, TransformContext}; use super::get_ecma_transform_rule; -use crate::next_config::NextConfig; +use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage}; /// Returns a rule which applies the Next.js react server components transform. /// This transform owns responsibility to assert various import / usage @@ -44,7 +44,7 @@ pub async fn get_next_react_server_components_transform_rule( app_dir, )), enable_mdx_rs, - true, + EcmascriptTransformStage::Preprocess, )) } diff --git a/crates/next-core/src/next_shared/transforms/next_shake_exports.rs b/crates/next-core/src/next_shared/transforms/next_shake_exports.rs index d8cc453ff975b..9a1bc958bfb94 100644 --- a/crates/next-core/src/next_shared/transforms/next_shake_exports.rs +++ b/crates/next-core/src/next_shared/transforms/next_shake_exports.rs @@ -16,8 +16,9 @@ pub fn get_next_shake_exports_rule(enable_mdx_rs: bool, ignore: Vec) -> ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![transformer]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![transformer]), }], ) } diff --git a/crates/next-core/src/next_shared/transforms/next_strip_page_exports.rs b/crates/next-core/src/next_shared/transforms/next_strip_page_exports.rs index a7df0711325b3..94c150bcf307f 100644 --- a/crates/next-core/src/next_shared/transforms/next_strip_page_exports.rs +++ b/crates/next-core/src/next_shared/transforms/next_strip_page_exports.rs @@ -40,8 +40,9 @@ pub async fn get_next_pages_transforms_rule( module_rule_match_js_no_url(enable_mdx_rs), ]), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![strip_transform]), + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![strip_transform]), }], )) } diff --git a/crates/next-core/src/next_shared/transforms/next_track_dynamic_imports.rs b/crates/next-core/src/next_shared/transforms/next_track_dynamic_imports.rs index 653df152afce8..abcec227dfc54 100644 --- a/crates/next-core/src/next_shared/transforms/next_track_dynamic_imports.rs +++ b/crates/next-core/src/next_shared/transforms/next_track_dynamic_imports.rs @@ -6,9 +6,14 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript::{CustomTransformer, TransformContext}; use super::get_ecma_transform_rule; +use crate::next_shared::transforms::EcmascriptTransformStage; pub fn get_next_track_dynamic_imports_transform_rule(mdx_rs: bool) -> ModuleRule { - get_ecma_transform_rule(Box::new(NextTrackDynamicImports {}), mdx_rs, false) + get_ecma_transform_rule( + Box::new(NextTrackDynamicImports {}), + mdx_rs, + EcmascriptTransformStage::Postprocess, + ) } #[derive(Debug)] diff --git a/crates/next-core/src/next_shared/transforms/react_remove_properties.rs b/crates/next-core/src/next_shared/transforms/react_remove_properties.rs index 7b0c62bcaa537..47a783211fd63 100644 --- a/crates/next-core/src/next_shared/transforms/react_remove_properties.rs +++ b/crates/next-core/src/next_shared/transforms/react_remove_properties.rs @@ -6,7 +6,10 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript::{CustomTransformer, TransformContext}; use super::get_ecma_transform_rule; -use crate::next_config::{NextConfig, ReactRemoveProperties}; +use crate::{ + next_config::{NextConfig, ReactRemoveProperties}, + next_shared::transforms::EcmascriptTransformStage, +}; /// Returns a rule which applies the react_remove_properties transform. pub async fn get_react_remove_properties_transform_rule( @@ -34,7 +37,7 @@ pub async fn get_react_remove_properties_transform_rule( get_ecma_transform_rule( Box::new(ReactRemovePropertiesTransformer { config }), enable_mdx_rs, - true, + EcmascriptTransformStage::Preprocess, ) }); diff --git a/crates/next-core/src/next_shared/transforms/relay.rs b/crates/next-core/src/next_shared/transforms/relay.rs index 6e2d9b27bb7de..51d22a30b3b72 100644 --- a/crates/next-core/src/next_shared/transforms/relay.rs +++ b/crates/next-core/src/next_shared/transforms/relay.rs @@ -5,7 +5,7 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript_plugins::transform::relay::RelayTransformer; use super::get_ecma_transform_rule; -use crate::next_config::NextConfig; +use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage}; /// Returns a transform rule for the relay graphql transform. pub async fn get_relay_transform_rule( @@ -17,7 +17,7 @@ pub async fn get_relay_transform_rule( get_ecma_transform_rule( Box::new(RelayTransformer::new(config, &project_path)), enable_mdx_rs, - true, + EcmascriptTransformStage::Preprocess, ) }); diff --git a/crates/next-core/src/next_shared/transforms/remove_console.rs b/crates/next-core/src/next_shared/transforms/remove_console.rs index b730a75f2a331..f454e86e46168 100644 --- a/crates/next-core/src/next_shared/transforms/remove_console.rs +++ b/crates/next-core/src/next_shared/transforms/remove_console.rs @@ -6,7 +6,10 @@ use turbopack::module_options::ModuleRule; use turbopack_ecmascript::{CustomTransformer, TransformContext}; use super::get_ecma_transform_rule; -use crate::next_config::{NextConfig, RemoveConsoleConfig}; +use crate::{ + next_config::{NextConfig, RemoveConsoleConfig}, + next_shared::transforms::EcmascriptTransformStage, +}; /// Returns a rule which applies the remove_console transform. pub async fn get_remove_console_transform_rule( @@ -37,7 +40,7 @@ pub async fn get_remove_console_transform_rule( get_ecma_transform_rule( Box::new(RemoveConsoleTransformer { config }), enable_mdx_rs, - true, + EcmascriptTransformStage::Preprocess, ) }); diff --git a/crates/next-core/src/next_shared/transforms/server_actions.rs b/crates/next-core/src/next_shared/transforms/server_actions.rs index 93ece0814ab76..12ba811184ed9 100644 --- a/crates/next-core/src/next_shared/transforms/server_actions.rs +++ b/crates/next-core/src/next_shared/transforms/server_actions.rs @@ -40,8 +40,9 @@ pub async fn get_server_actions_transform_rule( Ok(ModuleRule::new( module_rule_match_js_no_url(enable_mdx_rs), vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![transformer]), - append: ResolvedVc::cell(vec![]), + preprocess: ResolvedVc::cell(vec![transformer]), + main: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![]), }], )) } diff --git a/crates/next-core/src/next_shared/transforms/styled_components.rs b/crates/next-core/src/next_shared/transforms/styled_components.rs index 7b81974b1f8cc..ac3f5ef65d41f 100644 --- a/crates/next-core/src/next_shared/transforms/styled_components.rs +++ b/crates/next-core/src/next_shared/transforms/styled_components.rs @@ -5,7 +5,7 @@ use turbopack_ecmascript_plugins::transform::styled_components::StyledComponents use crate::{ next_config::{NextConfig, StyledComponentsTransformOptionsOrBoolean}, - next_shared::transforms::get_ecma_transform_rule, + next_shared::transforms::{EcmascriptTransformStage, get_ecma_transform_rule}, }; pub async fn get_styled_components_transform_rule( @@ -27,7 +27,13 @@ pub async fn get_styled_components_transform_rule( } _ => None, }) - .map(|transformer| get_ecma_transform_rule(Box::new(transformer), enable_mdx_rs, true)); + .map(|transformer| { + get_ecma_transform_rule( + Box::new(transformer), + enable_mdx_rs, + EcmascriptTransformStage::Main, + ) + }); Ok(module_rule) } diff --git a/crates/next-core/src/next_shared/transforms/styled_jsx.rs b/crates/next-core/src/next_shared/transforms/styled_jsx.rs index 04c4163bd59f1..28fdcf49fec3f 100644 --- a/crates/next-core/src/next_shared/transforms/styled_jsx.rs +++ b/crates/next-core/src/next_shared/transforms/styled_jsx.rs @@ -5,7 +5,7 @@ use turbopack_core::environment::RuntimeVersions; use turbopack_ecmascript_plugins::transform::styled_jsx::StyledJsxTransformer; use super::get_ecma_transform_rule; -use crate::next_config::NextConfig; +use crate::{next_config::NextConfig, next_shared::transforms::EcmascriptTransformStage}; /// Returns a transform rule for the styled jsx transform. pub async fn get_styled_jsx_transform_rule( @@ -19,6 +19,6 @@ pub async fn get_styled_jsx_transform_rule( Ok(Some(get_ecma_transform_rule( Box::new(transformer), enable_mdx_rs, - true, + EcmascriptTransformStage::Main, ))) } diff --git a/crates/next-core/src/next_shared/transforms/swc_ecma_transform_plugins.rs b/crates/next-core/src/next_shared/transforms/swc_ecma_transform_plugins.rs index f09a04f613caf..78fc1e0ca51f4 100644 --- a/crates/next-core/src/next_shared/transforms/swc_ecma_transform_plugins.rs +++ b/crates/next-core/src/next_shared/transforms/swc_ecma_transform_plugins.rs @@ -48,7 +48,7 @@ pub async fn get_swc_ecma_transform_rule_impl( SwcEcmaTransformPluginsTransformer, SwcPluginModule, }; - use crate::next_shared::transforms::get_ecma_transform_rule; + use crate::next_shared::transforms::{EcmascriptTransformStage, get_ecma_transform_rule}; let plugins = plugin_configs .iter() @@ -116,6 +116,6 @@ pub async fn get_swc_ecma_transform_rule_impl( Ok(Some(get_ecma_transform_rule( Box::new(SwcEcmaTransformPluginsTransformer::new(plugins)), enable_mdx_rs, - true, + EcmascriptTransformStage::Main, ))) } diff --git a/docs/01-app/01-getting-started/06-partial-prerendering.mdx b/docs/01-app/01-getting-started/06-partial-prerendering.mdx index 0acf3481d7737..8d4b776330b47 100644 --- a/docs/01-app/01-getting-started/06-partial-prerendering.mdx +++ b/docs/01-app/01-getting-started/06-partial-prerendering.mdx @@ -142,7 +142,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { } ``` -```jsx filename="/app/dashboard/layout.js" switcher +```jsx filename="/app/dashboard/layout.jsx" switcher export const experimental_ppr = true export default function Layout({ children }) { diff --git a/docs/01-app/02-guides/incremental-static-regeneration.mdx b/docs/01-app/02-guides/incremental-static-regeneration.mdx index 6609bbc5a9db1..bca3d8859a7ef 100644 --- a/docs/01-app/02-guides/incremental-static-regeneration.mdx +++ b/docs/01-app/02-guides/incremental-static-regeneration.mdx @@ -35,11 +35,6 @@ interface Post { // request comes in, at most once every 60 seconds. export const revalidate = 60 -// We'll prerender only the params from `generateStaticParams` at build time. -// If a request comes in for a path that hasn't been generated, -// Next.js will server-render the page on-demand. -export const dynamicParams = true // or false, to 404 on unknown paths - export async function generateStaticParams() { const posts: Post[] = await fetch('https://api.vercel.app/blog').then((res) => res.json() @@ -67,16 +62,11 @@ export default async function Page({ } ``` -```jsx filename="app/blog/[id]/page.js" switcher +```jsx filename="app/blog/[id]/page.jsx" switcher // Next.js will invalidate the cache when a // request comes in, at most once every 60 seconds. export const revalidate = 60 -// We'll prerender only the params from `generateStaticParams` at build time. -// If a request comes in for a path that hasn't been generated, -// Next.js will server-render the page on-demand. -export const dynamicParams = true // or false, to 404 on unknown paths - export async function generateStaticParams() { const posts = await fetch('https://api.vercel.app/blog').then((res) => res.json() @@ -100,6 +90,15 @@ export default async function Page({ params }) { } ``` +Here's how this example works: + +1. During `next build`, all known blog posts are generated +2. All requests made to these pages (e.g. `/blog/1`) are cached and instantaneous +3. After 60 seconds has passed, the next request will still return the cached (now stale) page +4. The cache is invalidated and a new version of the page begins generating in the background +5. Once generated successfully, the next request will return the updated page and cache it for subsequent requests +6. If `/blog/26` is requested, and it exists, the page will be generated on-demand. This behavior can be changed by using a different [dynamicParams](https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#dynamicparams) value. However, if the post does not exist, then 404 is returned. + @@ -125,10 +124,7 @@ export const getStaticPaths: GetStaticPaths = async () => { params: { id: String(post.id) }, })) - // We'll prerender only these paths at build time. - // { fallback: 'blocking' } will server-render pages - // on-demand if the path doesn't exist. - return { paths, fallback: false } + return { paths, fallback: 'blocking' } } export const getStaticProps: GetStaticProps = async ({ @@ -167,9 +163,7 @@ export async function getStaticPaths() { params: { id: post.id }, })) - // We'll prerender only these paths at build time. - // { fallback: false } means other routes should 404. - return { paths, fallback: false } + return { paths, fallback: 'blocking' } } export async function getStaticProps({ params }) { @@ -195,16 +189,16 @@ export default function Page({ post }) { } ``` - - Here's how this example works: -1. During `next build`, all known blog posts are generated (there are 25 in this example) +1. During `next build`, all known blog posts are generated 2. All requests made to these pages (e.g. `/blog/1`) are cached and instantaneous -3. After 60 seconds has passed, the next request will still show the cached (stale) page +3. After 60 seconds has passed, the next request will still return the cached (now stale) page 4. The cache is invalidated and a new version of the page begins generating in the background -5. Once generated successfully, Next.js will display and cache the updated page -6. If `/blog/26` is requested, Next.js will generate and cache this page on-demand +5. Once generated successfully, the next request will return the updated page and cache it for subsequent requests +6. If `/blog/26` is requested, and it exists, the page will be generated on-demand. This behavior can be changed by using a different [fallback](https://nextjs.org/docs/pages/api-reference/functions/get-static-paths#fallback-false) value. However, if the post does not exist, then 404 is returned. + + ## Reference @@ -237,7 +231,7 @@ Here's how this example works: ### Time-based revalidation -This fetches and displays a list of blog posts on `/blog`. After an hour, the cache for this page is invalidated on the next visit to the page. Then, in the background, a new version of the page is generated with the latest blog posts. +This fetches and displays a list of blog posts on /blog. After an hour has passed, the next visitor will still receive the cached (stale) version of the page immediately for a fast response. Simultaneously, Next.js triggers regeneration of a fresh version in the background. Once the new version is successfully generated, it replaces the cached version, and subsequent visitors will receive the updated content. ```tsx filename="app/blog/page.tsx" switcher interface Post { @@ -289,7 +283,7 @@ We recommend setting a high revalidation time. For instance, 1 hour instead of 1 For a more precise method of revalidation, invalidate pages on-demand with the `revalidatePath` function. -For example, this Server Action would get called after adding a new post. Regardless of how you retrieve your data in your Server Component, either using `fetch` or connecting to a database, this will clear the cache for the entire route and allow the Server Component to fetch fresh data. +For example, this Server Action would get called after adding a new post. Regardless of how you retrieve your data in your Server Component, either using `fetch` or connecting to a database, this will immediately clear the cache for the entire route. Unlike time-based revalidation, the next request after on-demand revalidation won't return stale data but will serve the updated version right away and cache it for subsequent requests. ```ts filename="app/actions.ts" switcher 'use server' diff --git a/docs/01-app/03-api-reference/08-turbopack.mdx b/docs/01-app/03-api-reference/08-turbopack.mdx index 5aafcd4cd3b94..06bb270786246 100644 --- a/docs/01-app/03-api-reference/08-turbopack.mdx +++ b/docs/01-app/03-api-reference/08-turbopack.mdx @@ -132,8 +132,6 @@ Turbopack can be configured via `next.config.js` (or `next.config.ts`) under the Change or extend file extensions for module resolution. - **`moduleIds`** Set how module IDs are generated (`'named'` vs `'deterministic'`). -- **`treeShaking`** - Enable or disable tree shaking in dev and future production builds. - **`memoryLimit`** Set a memory limit (in bytes) for Turbopack. diff --git a/lerna.json b/lerna.json index be7dbf64cac68..08d35255a24d0 100644 --- a/lerna.json +++ b/lerna.json @@ -16,5 +16,5 @@ "registry": "https://registry.npmjs.org/" } }, - "version": "15.4.2-canary.29" + "version": "15.4.2-canary.30" } diff --git a/package.json b/package.json index 4128e7406d2af..b42aeb347dd4b 100644 --- a/package.json +++ b/package.json @@ -173,7 +173,7 @@ "eslint-plugin-jsdoc": "48.0.4", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-react": "7.35.0", - "eslint-plugin-react-hooks": "0.0.0-experimental-be11cb5c-20250804", + "eslint-plugin-react-hooks": "0.0.0-experimental-7deda941-20250804", "eslint-v8": "npm:eslint@^8.57.0", "event-stream": "4.0.1", "execa": "2.0.3", @@ -233,16 +233,16 @@ "pretty-ms": "7.0.0", "random-seed": "0.3.0", "react": "19.0.0", - "react-builtin": "npm:react@19.2.0-canary-be11cb5c-20250804", + "react-builtin": "npm:react@19.2.0-canary-7deda941-20250804", "react-dom": "19.0.0", - "react-dom-builtin": "npm:react-dom@19.2.0-canary-be11cb5c-20250804", - "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-be11cb5c-20250804", - "react-experimental-builtin": "npm:react@0.0.0-experimental-be11cb5c-20250804", - "react-is-builtin": "npm:react-is@19.2.0-canary-be11cb5c-20250804", - "react-server-dom-turbopack": "19.2.0-canary-be11cb5c-20250804", - "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-be11cb5c-20250804", - "react-server-dom-webpack": "19.2.0-canary-be11cb5c-20250804", - "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-be11cb5c-20250804", + "react-dom-builtin": "npm:react-dom@19.2.0-canary-7deda941-20250804", + "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-7deda941-20250804", + "react-experimental-builtin": "npm:react@0.0.0-experimental-7deda941-20250804", + "react-is-builtin": "npm:react-is@19.2.0-canary-7deda941-20250804", + "react-server-dom-turbopack": "19.2.0-canary-7deda941-20250804", + "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-7deda941-20250804", + "react-server-dom-webpack": "19.2.0-canary-7deda941-20250804", + "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-7deda941-20250804", "react-ssr-prepass": "1.0.8", "react-virtualized": "9.22.3", "relay-compiler": "13.0.2", @@ -252,8 +252,8 @@ "resolve-from": "5.0.0", "sass": "1.54.0", "satori": "0.15.2", - "scheduler-builtin": "npm:scheduler@0.27.0-canary-be11cb5c-20250804", - "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-be11cb5c-20250804", + "scheduler-builtin": "npm:scheduler@0.27.0-canary-7deda941-20250804", + "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-7deda941-20250804", "seedrandom": "3.0.5", "semver": "7.3.7", "serve-handler": "6.1.6", @@ -297,10 +297,10 @@ "@types/react-dom": "19.1.6", "@types/retry": "0.12.0", "jest-snapshot": "30.0.0-alpha.6", - "react": "19.2.0-canary-be11cb5c-20250804", - "react-dom": "19.2.0-canary-be11cb5c-20250804", - "react-is": "19.2.0-canary-be11cb5c-20250804", - "scheduler": "0.27.0-canary-be11cb5c-20250804" + "react": "19.2.0-canary-7deda941-20250804", + "react-dom": "19.2.0-canary-7deda941-20250804", + "react-is": "19.2.0-canary-7deda941-20250804", + "scheduler": "0.27.0-canary-7deda941-20250804" }, "patchedDependencies": { "webpack-sources@3.2.3": "patches/webpack-sources@3.2.3.patch", diff --git a/packages/create-next-app/package.json b/packages/create-next-app/package.json index eeadcb988eaec..76378709edf28 100644 --- a/packages/create-next-app/package.json +++ b/packages/create-next-app/package.json @@ -1,6 +1,6 @@ { "name": "create-next-app", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "keywords": [ "react", "next", diff --git a/packages/eslint-config-next/package.json b/packages/eslint-config-next/package.json index 15b7409185168..f20f03df276aa 100644 --- a/packages/eslint-config-next/package.json +++ b/packages/eslint-config-next/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-next", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "description": "ESLint configuration used by Next.js.", "main": "index.js", "license": "MIT", @@ -10,7 +10,7 @@ }, "homepage": "https://nextjs.org/docs/app/api-reference/config/eslint", "dependencies": { - "@next/eslint-plugin-next": "15.4.2-canary.29", + "@next/eslint-plugin-next": "15.4.2-canary.30", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index e4919e29f9bee..4e070d7e0461b 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -1,7 +1,7 @@ { "name": "@next/eslint-plugin-internal", "private": true, - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "description": "ESLint plugin for working on Next.js.", "exports": { ".": "./src/eslint-plugin-internal.js" diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json index f3cd18c2d59da..ea002317f5fbe 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": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "description": "ESLint plugin for Next.js.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/font/package.json b/packages/font/package.json index 352ff38105d16..a5af286c37324 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,7 +1,7 @@ { "name": "@next/font", "private": true, - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "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 6c39d178fcf64..d82160a91eb3b 100644 --- a/packages/next-bundle-analyzer/package.json +++ b/packages/next-bundle-analyzer/package.json @@ -1,6 +1,6 @@ { "name": "@next/bundle-analyzer", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "main": "index.js", "types": "index.d.ts", "license": "MIT", diff --git a/packages/next-codemod/package.json b/packages/next-codemod/package.json index 85cabc01e3472..aeac419254a82 100644 --- a/packages/next-codemod/package.json +++ b/packages/next-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@next/codemod", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "license": "MIT", "repository": { "type": "git", diff --git a/packages/next-env/package.json b/packages/next-env/package.json index 8457e5915df23..724a3a50eb710 100644 --- a/packages/next-env/package.json +++ b/packages/next-env/package.json @@ -1,6 +1,6 @@ { "name": "@next/env", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "keywords": [ "react", "next", diff --git a/packages/next-mdx/package.json b/packages/next-mdx/package.json index dc78d9e59ceb5..37e025eefe211 100644 --- a/packages/next-mdx/package.json +++ b/packages/next-mdx/package.json @@ -1,6 +1,6 @@ { "name": "@next/mdx", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "main": "index.js", "license": "MIT", "repository": { diff --git a/packages/next-plugin-storybook/package.json b/packages/next-plugin-storybook/package.json index 3a4b64d8fa63a..846c0e99d6ae3 100644 --- a/packages/next-plugin-storybook/package.json +++ b/packages/next-plugin-storybook/package.json @@ -1,6 +1,6 @@ { "name": "@next/plugin-storybook", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "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 90a1e49c271ec..3e1e03e03aed2 100644 --- a/packages/next-polyfill-module/package.json +++ b/packages/next-polyfill-module/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-module", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "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 e43df0a08f540..d948a3e8cdd73 100644 --- a/packages/next-polyfill-nomodule/package.json +++ b/packages/next-polyfill-nomodule/package.json @@ -1,6 +1,6 @@ { "name": "@next/polyfill-nomodule", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "description": "A polyfill for non-dead, nomodule browsers.", "main": "dist/polyfill-nomodule.js", "license": "MIT", diff --git a/packages/next-rspack/package.json b/packages/next-rspack/package.json index 713715173f337..b9cb7fc9da8ba 100644 --- a/packages/next-rspack/package.json +++ b/packages/next-rspack/package.json @@ -1,6 +1,6 @@ { "name": "next-rspack", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "repository": { "url": "vercel/next.js", "directory": "packages/next-rspack" diff --git a/packages/next-swc/package.json b/packages/next-swc/package.json index ef5752f126e58..5753073e50f0f 100644 --- a/packages/next-swc/package.json +++ b/packages/next-swc/package.json @@ -1,6 +1,6 @@ { "name": "@next/swc", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "private": true, "files": [ "native/" diff --git a/packages/next/package.json b/packages/next/package.json index 08663a4144981..3cb1085bd31f0 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -1,6 +1,6 @@ { "name": "next", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "description": "The React Framework", "main": "./dist/server/next.js", "license": "MIT", @@ -102,7 +102,7 @@ ] }, "dependencies": { - "@next/env": "15.4.2-canary.29", + "@next/env": "15.4.2-canary.30", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -166,11 +166,11 @@ "@jest/types": "29.5.0", "@mswjs/interceptors": "0.23.0", "@napi-rs/triples": "1.2.0", - "@next/font": "15.4.2-canary.29", - "@next/polyfill-module": "15.4.2-canary.29", - "@next/polyfill-nomodule": "15.4.2-canary.29", - "@next/react-refresh-utils": "15.4.2-canary.29", - "@next/swc": "15.4.2-canary.29", + "@next/font": "15.4.2-canary.30", + "@next/polyfill-module": "15.4.2-canary.30", + "@next/polyfill-nomodule": "15.4.2-canary.30", + "@next/react-refresh-utils": "15.4.2-canary.30", + "@next/swc": "15.4.2-canary.30", "@opentelemetry/api": "1.6.0", "@playwright/test": "1.51.1", "@rspack/core": "1.4.5", diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js index 794f2131fa301..635ea92b23b73 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js @@ -31128,11 +31128,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -31169,10 +31169,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -31318,7 +31318,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js index 007f1977b0403..9dfb8206499cb 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js @@ -19231,14 +19231,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2167 = React.version; if ( - "19.2.0-experimental-be11cb5c-20250804" !== + "19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_2167 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2167, - "19.2.0-experimental-be11cb5c-20250804" + "19.2.0-experimental-7deda941-20250804" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -19260,10 +19260,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_2852 = { bundleType: 0, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2853 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -19370,4 +19370,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js index 41e8b590c5b98..c7b1f0562595f 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js @@ -31180,11 +31180,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -31221,10 +31221,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -31700,7 +31700,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js index 771fe6dbe549c..037f12ae913ce 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js @@ -20914,14 +20914,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2389 = React.version; if ( - "19.2.0-experimental-be11cb5c-20250804" !== + "19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_2389 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2389, - "19.2.0-experimental-be11cb5c-20250804" + "19.2.0-experimental-7deda941-20250804" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -20943,10 +20943,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_3076 = { bundleType: 0, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_3077 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -21213,7 +21213,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js index c19cbabc18d97..b4a0b64efeaaa 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js @@ -10523,5 +10523,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js index dd9d8d43b0e6c..f295668bc9799 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js @@ -7142,4 +7142,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js index 847f2ce2b876a..dd6e8896c5ca0 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js @@ -10523,5 +10523,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js index 172ec3e0976a2..bebbc4245c7fb 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js @@ -7245,4 +7245,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js index 14ea4367eb2cb..5d809e22b5ba6 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js @@ -9512,11 +9512,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react-experimental"), @@ -11335,5 +11335,5 @@ startWork(request); }); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js index 6cedf391c3056..fe8528c2920a9 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js @@ -7805,12 +7805,12 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion, - "19.2.0-experimental-be11cb5c-20250804" + "19.2.0-experimental-7deda941-20250804" ) ); } @@ -8065,4 +8065,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js index 3e78ac9853ae1..10a9709ee9628 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js @@ -7293,13 +7293,13 @@ function addToReplayParent(node, parentKeyPath, trackedPostpones) { } var isomorphicReactPackageVersion$jscomp$inline_869 = React.version; if ( - "19.2.0-experimental-be11cb5c-20250804" !== + "19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_869 ) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion$jscomp$inline_869 + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); exports.renderToReadableStream = function (children, options) { return new Promise(function (resolve, reject) { @@ -7390,4 +7390,4 @@ exports.renderToReadableStream = function (children, options) { startWork(request); }); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js index e8c1d8698de79..658c7bcda8def 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js @@ -9541,11 +9541,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react-experimental"), @@ -11360,5 +11360,5 @@ startWork(request); }); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js index 36a9b338bac91..22845b6c9b6cf 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js @@ -7923,11 +7923,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -8181,4 +8181,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js index 9552accce7dba..5e9efad3e6b1d 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js @@ -9402,11 +9402,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } function createDrainHandler(destination, request) { @@ -11531,5 +11531,5 @@ } }; }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js index ada52b5814637..3d00daee428f1 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js @@ -7803,11 +7803,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -8365,4 +8365,4 @@ exports.resumeToPipeableStream = function (children, postponedState, options) { } }; }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js index 2c4454752db9f..5fab990ecf481 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js @@ -31449,11 +31449,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-experimental-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-experimental-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-experimental-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -31490,10 +31490,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -31805,5 +31805,5 @@ } }; }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js index 53c7629f5b816..f799f87f54224 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js @@ -19547,14 +19547,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2196 = React.version; if ( - "19.2.0-experimental-be11cb5c-20250804" !== + "19.2.0-experimental-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_2196 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2196, - "19.2.0-experimental-be11cb5c-20250804" + "19.2.0-experimental-7deda941-20250804" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -19576,10 +19576,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_2886 = { bundleType: 0, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804" + reconcilerVersion: "19.2.0-experimental-7deda941-20250804" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2887 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -19837,4 +19837,4 @@ exports.observeVisibleRects = function ( } }; }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js index c4a5e800a4e31..469074b07b321 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js @@ -416,7 +416,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js index af550a5092b98..dabbadda59c1c 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js @@ -207,4 +207,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js index 1e4223227d3c0..a502b87dcfd96 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js @@ -336,5 +336,5 @@ })) : Internals.d.m(href)); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js index 0e98b6fddd607..37baa70deabab 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js @@ -149,4 +149,4 @@ exports.preloadModule = function (href, options) { }); } else Internals.d.m(href); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom-experimental/package.json b/packages/next/src/compiled/react-dom-experimental/package.json index c1e4b1ba69168..7440ae00bfe04 100644 --- a/packages/next/src/compiled/react-dom-experimental/package.json +++ b/packages/next/src/compiled/react-dom-experimental/package.json @@ -72,10 +72,10 @@ "./package.json": "./package.json" }, "dependencies": { - "scheduler": "0.0.0-experimental-be11cb5c-20250804" + "scheduler": "0.0.0-experimental-7deda941-20250804" }, "peerDependencies": { - "react": "0.0.0-experimental-be11cb5c-20250804" + "react": "0.0.0-experimental-7deda941-20250804" }, "browser": { "./server.js": "./server.browser.js", diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js index 7df9f2b8cbf8d..300bdbcd7d9d8 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js @@ -25519,11 +25519,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -25560,10 +25560,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804" + reconcilerVersion: "19.2.0-canary-7deda941-20250804" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -25701,7 +25701,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js index bc9995c8ee74b..f251d749aff5b 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js @@ -15695,14 +15695,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_1836 = React.version; if ( - "19.2.0-canary-be11cb5c-20250804" !== + "19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_1836 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_1836, - "19.2.0-canary-be11cb5c-20250804" + "19.2.0-canary-7deda941-20250804" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -15724,10 +15724,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_2329 = { bundleType: 0, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804" + reconcilerVersion: "19.2.0-canary-7deda941-20250804" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2330 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -15825,4 +15825,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js index 2e4d37129a633..8ca8a088d26c3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js @@ -25571,11 +25571,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -25612,10 +25612,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804" + reconcilerVersion: "19.2.0-canary-7deda941-20250804" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -26083,7 +26083,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js index ecf6b491a2570..97d6a8b8eee84 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js @@ -16396,14 +16396,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_1940 = React.version; if ( - "19.2.0-canary-be11cb5c-20250804" !== + "19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_1940 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_1940, - "19.2.0-canary-be11cb5c-20250804" + "19.2.0-canary-7deda941-20250804" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -16425,10 +16425,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_1947 = { bundleType: 0, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804", + reconcilerVersion: "19.2.0-canary-7deda941-20250804", getLaneLabelMap: function () { for ( var map = new Map(), lane = 1, index$281 = 0; @@ -16701,7 +16701,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js index b6352ae8cafa7..e2c283ea72022 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js @@ -9738,5 +9738,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js index ca959b40e7adb..c2a5d114be950 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js @@ -6491,4 +6491,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js index 0f30bde61e5f7..5956283d929a3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js @@ -9738,5 +9738,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js index d9d3b89fbb1c0..4cd59961a5836 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js @@ -6574,4 +6574,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js index ebc0404a98824..4eb9d4a3cdb07 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js @@ -8485,11 +8485,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react"), @@ -10179,5 +10179,5 @@ startWork(request); }); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js index 4f0fa8b7ae81f..adefc5177b24c 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js @@ -6875,12 +6875,12 @@ function addToReplayParent(node, parentKeyPath, trackedPostpones) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion, - "19.2.0-canary-be11cb5c-20250804" + "19.2.0-canary-7deda941-20250804" ) ); } @@ -7027,4 +7027,4 @@ exports.renderToReadableStream = function (children, options) { startWork(request); }); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js index 9705a83435915..99e696448d4a2 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js @@ -6523,13 +6523,13 @@ function addToReplayParent(node, parentKeyPath, trackedPostpones) { } var isomorphicReactPackageVersion$jscomp$inline_816 = React.version; if ( - "19.2.0-canary-be11cb5c-20250804" !== + "19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion$jscomp$inline_816 ) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion$jscomp$inline_816 + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); exports.renderToReadableStream = function (children, options) { return new Promise(function (resolve, reject) { @@ -6620,4 +6620,4 @@ exports.renderToReadableStream = function (children, options) { startWork(request); }); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js index d41a09ab45dcd..efbe542637f7e 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js @@ -8508,11 +8508,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react"), @@ -10198,5 +10198,5 @@ startWork(request); }); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js index 4d46e11bf4c9a..18c7672967e62 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js @@ -6973,11 +6973,11 @@ function addToReplayParent(node, parentKeyPath, trackedPostpones) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7123,4 +7123,4 @@ exports.renderToReadableStream = function (children, options) { startWork(request); }); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js index cefff10360490..feea0954497e3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js @@ -8383,11 +8383,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } function createDrainHandler(destination, request) { @@ -10258,5 +10258,5 @@ startWork(request); }); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js index 0e664c9d03cbe..ba9f07bf200f9 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js @@ -6865,11 +6865,11 @@ function addToReplayParent(node, parentKeyPath, trackedPostpones) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.2.0-canary-be11cb5c-20250804" !== isomorphicReactPackageVersion) + if ("19.2.0-canary-7deda941-20250804" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.2.0-canary-be11cb5c-20250804\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.2.0-canary-7deda941-20250804\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7207,4 +7207,4 @@ exports.renderToReadableStream = function (children, options) { startWork(request); }); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom.development.js index 2d59e4be19264..36ff8400767c3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.development.js @@ -416,7 +416,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom.production.js index 54a9fc94ead96..807576369ba4d 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.production.js @@ -207,4 +207,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js index 848a591847791..222e63e446401 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js @@ -336,5 +336,5 @@ })) : Internals.d.m(href)); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js index 636b40653ecb7..1185c4ef1c05d 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js @@ -149,4 +149,4 @@ exports.preloadModule = function (href, options) { }); } else Internals.d.m(href); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-dom/package.json b/packages/next/src/compiled/react-dom/package.json index 42d4dc628d0fe..c637d907c2d6d 100644 --- a/packages/next/src/compiled/react-dom/package.json +++ b/packages/next/src/compiled/react-dom/package.json @@ -67,10 +67,10 @@ "./package.json": "./package.json" }, "dependencies": { - "scheduler": "0.27.0-canary-be11cb5c-20250804" + "scheduler": "0.27.0-canary-7deda941-20250804" }, "peerDependencies": { - "react": "19.2.0-canary-be11cb5c-20250804" + "react": "19.2.0-canary-7deda941-20250804" }, "browser": { "./server.js": "./server.browser.js", diff --git a/packages/next/src/compiled/react-experimental/cjs/react.development.js b/packages/next/src/compiled/react-experimental/cjs/react.development.js index b03b277eeb845..4a304bb820dfb 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.development.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.development.js @@ -1328,7 +1328,7 @@ exports.useTransition = function () { return resolveDispatcher().useTransition(); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-experimental/cjs/react.production.js b/packages/next/src/compiled/react-experimental/cjs/react.production.js index c84fe4dcdecbe..66c4b6a6b3292 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.production.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.production.js @@ -605,4 +605,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactSharedInternals.H.useTransition(); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js b/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js index 40d6c8b22ccd2..b86b97e574ee5 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js @@ -996,5 +996,5 @@ exports.useMemo = function (create, deps) { return resolveDispatcher().useMemo(create, deps); }; - exports.version = "19.2.0-experimental-be11cb5c-20250804"; + exports.version = "19.2.0-experimental-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js b/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js index 05635737eec9a..26fe65c818cef 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js @@ -572,4 +572,4 @@ exports.useId = function () { exports.useMemo = function (create, deps) { return ReactSharedInternals.H.useMemo(create, deps); }; -exports.version = "19.2.0-experimental-be11cb5c-20250804"; +exports.version = "19.2.0-experimental-7deda941-20250804"; diff --git a/packages/next/src/compiled/react-is/package.json b/packages/next/src/compiled/react-is/package.json index 49bd58b0c86fd..679b8d3e6998a 100644 --- a/packages/next/src/compiled/react-is/package.json +++ b/packages/next/src/compiled/react-is/package.json @@ -1,6 +1,6 @@ { "name": "react-is", - "version": "19.2.0-canary-be11cb5c-20250804", + "version": "19.2.0-canary-7deda941-20250804", "description": "Brand checking of React Elements.", "main": "index.js", "sideEffects": false, diff --git a/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js index 6a660cee08a94..e2c04a09f152e 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js @@ -4417,10 +4417,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-server-dom-turbopack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804", + reconcilerVersion: "19.2.0-experimental-7deda941-20250804", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json b/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json index 298add9c57352..4da643fb14131 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json +++ b/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json @@ -48,7 +48,7 @@ "neo-async": "^2.6.1" }, "peerDependencies": { - "react": "0.0.0-experimental-be11cb5c-20250804", - "react-dom": "0.0.0-experimental-be11cb5c-20250804" + "react": "0.0.0-experimental-7deda941-20250804", + "react-dom": "0.0.0-experimental-7deda941-20250804" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js index 69fb8ee4f12fb..5b31b6419427b 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js @@ -3355,10 +3355,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-server-dom-turbopack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804", + reconcilerVersion: "19.2.0-canary-7deda941-20250804", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-turbopack/package.json b/packages/next/src/compiled/react-server-dom-turbopack/package.json index a33b74665522b..29634b17db685 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack/package.json +++ b/packages/next/src/compiled/react-server-dom-turbopack/package.json @@ -48,7 +48,7 @@ "neo-async": "^2.6.1" }, "peerDependencies": { - "react": "19.2.0-canary-be11cb5c-20250804", - "react-dom": "19.2.0-canary-be11cb5c-20250804" + "react": "19.2.0-canary-7deda941-20250804", + "react-dom": "19.2.0-canary-7deda941-20250804" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js index 04fc3281da21f..c27cc13a01b6d 100644 --- a/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js @@ -4433,10 +4433,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.2.0-experimental-be11cb5c-20250804", + version: "19.2.0-experimental-7deda941-20250804", rendererPackageName: "react-server-dom-webpack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-experimental-be11cb5c-20250804", + reconcilerVersion: "19.2.0-experimental-7deda941-20250804", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json b/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json index 4619288d1979b..afe31e063d114 100644 --- a/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json +++ b/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json @@ -64,8 +64,8 @@ "webpack-sources": "^3.2.0" }, "peerDependencies": { - "react": "0.0.0-experimental-be11cb5c-20250804", - "react-dom": "0.0.0-experimental-be11cb5c-20250804", + "react": "0.0.0-experimental-7deda941-20250804", + "react-dom": "0.0.0-experimental-7deda941-20250804", "webpack": "^5.59.0" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js index 9d975a57b7abe..dadd73d16e982 100644 --- a/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js @@ -3371,10 +3371,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.2.0-canary-be11cb5c-20250804", + version: "19.2.0-canary-7deda941-20250804", rendererPackageName: "react-server-dom-webpack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.2.0-canary-be11cb5c-20250804", + reconcilerVersion: "19.2.0-canary-7deda941-20250804", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-webpack/package.json b/packages/next/src/compiled/react-server-dom-webpack/package.json index 63ec2aa3e5d5d..12538ce8fe77e 100644 --- a/packages/next/src/compiled/react-server-dom-webpack/package.json +++ b/packages/next/src/compiled/react-server-dom-webpack/package.json @@ -64,8 +64,8 @@ "webpack-sources": "^3.2.0" }, "peerDependencies": { - "react": "19.2.0-canary-be11cb5c-20250804", - "react-dom": "19.2.0-canary-be11cb5c-20250804", + "react": "19.2.0-canary-7deda941-20250804", + "react-dom": "19.2.0-canary-7deda941-20250804", "webpack": "^5.59.0" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react/cjs/react.development.js b/packages/next/src/compiled/react/cjs/react.development.js index 53973dcf9195c..e819a61e79d00 100644 --- a/packages/next/src/compiled/react/cjs/react.development.js +++ b/packages/next/src/compiled/react/cjs/react.development.js @@ -1244,7 +1244,7 @@ exports.useTransition = function () { return resolveDispatcher().useTransition(); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react/cjs/react.production.js b/packages/next/src/compiled/react/cjs/react.production.js index d45d8f371111e..fb53553d26dd6 100644 --- a/packages/next/src/compiled/react/cjs/react.production.js +++ b/packages/next/src/compiled/react/cjs/react.production.js @@ -543,4 +543,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactSharedInternals.H.useTransition(); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/react/cjs/react.react-server.development.js b/packages/next/src/compiled/react/cjs/react.react-server.development.js index 5e1514efd38bb..8ec5244a05af8 100644 --- a/packages/next/src/compiled/react/cjs/react.react-server.development.js +++ b/packages/next/src/compiled/react/cjs/react.react-server.development.js @@ -816,5 +816,5 @@ exports.useMemo = function (create, deps) { return resolveDispatcher().useMemo(create, deps); }; - exports.version = "19.2.0-canary-be11cb5c-20250804"; + exports.version = "19.2.0-canary-7deda941-20250804"; })(); diff --git a/packages/next/src/compiled/react/cjs/react.react-server.production.js b/packages/next/src/compiled/react/cjs/react.react-server.production.js index 52c561b93dfcb..82e0a9f7d2804 100644 --- a/packages/next/src/compiled/react/cjs/react.react-server.production.js +++ b/packages/next/src/compiled/react/cjs/react.react-server.production.js @@ -430,4 +430,4 @@ exports.useId = function () { exports.useMemo = function (create, deps) { return ReactSharedInternals.H.useMemo(create, deps); }; -exports.version = "19.2.0-canary-be11cb5c-20250804"; +exports.version = "19.2.0-canary-7deda941-20250804"; diff --git a/packages/next/src/compiled/unistore/unistore.js b/packages/next/src/compiled/unistore/unistore.js index 8d9211f2f02ff..b19d492f965c3 100644 --- a/packages/next/src/compiled/unistore/unistore.js +++ b/packages/next/src/compiled/unistore/unistore.js @@ -1 +1 @@ -(()=>{var t={910:t=>{function n(t,i){for(var _ in i)t[_]=i[_];return t}t.exports=function(t){var i=[];function u(t){for(var _=[],a=0;a{var t={231:t=>{function n(t,i){for(var _ in i)t[_]=i[_];return t}t.exports=function(t){var i=[];function u(t){for(var _=[],a=0;a= 500) { + // For 5xx status codes: SHOULD be set to 'Error' span status. + // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status + span.setStatus({ + code: SpanStatusCode.ERROR, + }) + // For span status 'Error', SHOULD set 'error.type' attribute. + span.setAttribute('error.type', res.statusCode.toString()) + } + const rootSpanAttributes = tracer.getRootSpanAttributes() // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) return diff --git a/packages/next/src/server/lib/trace/tracer.ts b/packages/next/src/server/lib/trace/tracer.ts index e6f1dfe31e5a2..8304b1c2bdbcb 100644 --- a/packages/next/src/server/lib/trace/tracer.ts +++ b/packages/next/src/server/lib/trace/tracer.ts @@ -56,6 +56,7 @@ const closeSpanWithError = (span: Span, error?: Error) => { } else { if (error) { span.recordException(error) + span.setAttribute('error.type', error.name) } span.setStatus({ code: SpanStatusCode.ERROR, message: error?.message }) } diff --git a/packages/react-refresh-utils/package.json b/packages/react-refresh-utils/package.json index 35f6a0ca70b1c..601a1f089f14c 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": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "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 5f317e7a870b9..33aae304ec1f6 100644 --- a/packages/third-parties/package.json +++ b/packages/third-parties/package.json @@ -1,6 +1,6 @@ { "name": "@next/third-parties", - "version": "15.4.2-canary.29", + "version": "15.4.2-canary.30", "repository": { "url": "vercel/next.js", "directory": "packages/third-parties" @@ -26,7 +26,7 @@ "third-party-capital": "1.0.20" }, "devDependencies": { - "next": "15.4.2-canary.29", + "next": "15.4.2-canary.30", "outdent": "0.8.0", "prettier": "2.5.1", "typescript": "5.8.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ee92e26da969..9bb4b1949892b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,10 +17,10 @@ overrides: '@types/react-dom': 19.1.6 '@types/retry': 0.12.0 jest-snapshot: 30.0.0-alpha.6 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 - react-is: 19.2.0-canary-be11cb5c-20250804 - scheduler: 0.27.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 + react-is: 19.2.0-canary-7deda941-20250804 + scheduler: 0.27.0-canary-7deda941-20250804 patchedDependencies: '@ampproject/toolbox-optimizer@2.8.3': @@ -87,7 +87,7 @@ importers: version: 11.11.0 '@emotion/react': specifier: 11.11.1 - version: 11.11.1(@types/react@19.1.8)(react@19.2.0-canary-be11cb5c-20250804) + version: 11.11.1(@types/react@19.1.8)(react@19.2.0-canary-7deda941-20250804) '@fullhuman/postcss-purgecss': specifier: 1.3.0 version: 1.3.0 @@ -99,7 +99,7 @@ importers: version: 2.2.1(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))) '@mdx-js/react': specifier: 2.2.1 - version: 2.2.1(react@19.2.0-canary-be11cb5c-20250804) + version: 2.2.1(react@19.2.0-canary-7deda941-20250804) '@next/bundle-analyzer': specifier: workspace:* version: link:packages/next-bundle-analyzer @@ -165,7 +165,7 @@ importers: version: 6.1.2(@jest/globals@29.7.0)(@types/jest@29.5.5)(jest@29.7.0(@types/node@20.17.6(patch_hash=rvl3vkomen3tospgr67bzubfyu))(babel-plugin-macros@3.1.0))(vitest@3.0.4(@types/node@20.17.6(patch_hash=rvl3vkomen3tospgr67bzubfyu))(sass@1.54.0)(tsx@4.19.2)) '@testing-library/react': specifier: ^15.0.5 - version: 15.0.7(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + version: 15.0.7(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) '@types/busboy': specifier: 1.5.3 version: 1.5.3 @@ -308,8 +308,8 @@ importers: specifier: 7.35.0 version: 7.35.0(eslint@9.12.0) eslint-plugin-react-hooks: - specifier: 0.0.0-experimental-be11cb5c-20250804 - version: 0.0.0-experimental-be11cb5c-20250804(eslint@9.12.0) + specifier: 0.0.0-experimental-7deda941-20250804 + version: 0.0.0-experimental-7deda941-20250804(eslint@9.12.0) eslint-v8: specifier: npm:eslint@^8.57.0 version: eslint@8.57.1 @@ -485,44 +485,44 @@ importers: specifier: 0.3.0 version: 0.3.0 react: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804 + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804 react-builtin: - specifier: npm:react@19.2.0-canary-be11cb5c-20250804 - version: react@19.2.0-canary-be11cb5c-20250804 + specifier: npm:react@19.2.0-canary-7deda941-20250804 + version: react@19.2.0-canary-7deda941-20250804 react-dom: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) react-dom-builtin: - specifier: npm:react-dom@19.2.0-canary-be11cb5c-20250804 - version: react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + specifier: npm:react-dom@19.2.0-canary-7deda941-20250804 + version: react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) react-dom-experimental-builtin: - specifier: npm:react-dom@0.0.0-experimental-be11cb5c-20250804 - version: react-dom@0.0.0-experimental-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + specifier: npm:react-dom@0.0.0-experimental-7deda941-20250804 + version: react-dom@0.0.0-experimental-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) react-experimental-builtin: - specifier: npm:react@0.0.0-experimental-be11cb5c-20250804 - version: react@0.0.0-experimental-be11cb5c-20250804 + specifier: npm:react@0.0.0-experimental-7deda941-20250804 + version: react@0.0.0-experimental-7deda941-20250804 react-is-builtin: - specifier: npm:react-is@19.2.0-canary-be11cb5c-20250804 - version: react-is@19.2.0-canary-be11cb5c-20250804 + specifier: npm:react-is@19.2.0-canary-7deda941-20250804 + version: react-is@19.2.0-canary-7deda941-20250804 react-server-dom-turbopack: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) react-server-dom-turbopack-experimental: - specifier: npm:react-server-dom-turbopack@0.0.0-experimental-be11cb5c-20250804 - version: react-server-dom-turbopack@0.0.0-experimental-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + specifier: npm:react-server-dom-turbopack@0.0.0-experimental-7deda941-20250804 + version: react-server-dom-turbopack@0.0.0-experimental-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) react-server-dom-webpack: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))) + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))) react-server-dom-webpack-experimental: - specifier: npm:react-server-dom-webpack@0.0.0-experimental-be11cb5c-20250804 - version: react-server-dom-webpack@0.0.0-experimental-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))) + specifier: npm:react-server-dom-webpack@0.0.0-experimental-7deda941-20250804 + version: react-server-dom-webpack@0.0.0-experimental-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))) react-ssr-prepass: specifier: 1.0.8 - version: 1.0.8(react-is@19.2.0-canary-eaee5308-20250728)(react@19.2.0-canary-be11cb5c-20250804) + version: 1.0.8(react-is@19.2.0-canary-eaee5308-20250728)(react@19.2.0-canary-7deda941-20250804) react-virtualized: specifier: 9.22.3 - version: 9.22.3(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + version: 9.22.3(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) relay-compiler: specifier: 13.0.2 version: 13.0.2 @@ -545,11 +545,11 @@ importers: specifier: 0.15.2 version: 0.15.2 scheduler-builtin: - specifier: npm:scheduler@0.27.0-canary-be11cb5c-20250804 - version: scheduler@0.27.0-canary-be11cb5c-20250804 + specifier: npm:scheduler@0.27.0-canary-7deda941-20250804 + version: scheduler@0.27.0-canary-7deda941-20250804 scheduler-experimental-builtin: - specifier: npm:scheduler@0.0.0-experimental-be11cb5c-20250804 - version: scheduler@0.0.0-experimental-be11cb5c-20250804 + specifier: npm:scheduler@0.0.0-experimental-7deda941-20250804 + version: scheduler@0.0.0-experimental-7deda941-20250804 seedrandom: specifier: 3.0.5 version: 3.0.5 @@ -567,13 +567,13 @@ importers: version: 6.0.0 styled-jsx: specifier: 5.1.6 - version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-be11cb5c-20250804) + version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-7deda941-20250804) styled-jsx-plugin-postcss: specifier: 3.0.2 version: 3.0.2 swr: specifier: ^2.2.4 - version: 2.2.4(react@19.2.0-canary-be11cb5c-20250804) + version: 2.2.4(react@19.2.0-canary-7deda941-20250804) tailwindcss: specifier: 3.2.7 version: 3.2.7(postcss@8.4.31) @@ -676,6 +676,9 @@ importers: next: specifier: workspace:* version: link:../../packages/next + playwright: + specifier: ^1.40.0 + version: 1.48.0 rimraf: specifier: 6.0.1 version: 6.0.1 @@ -851,7 +854,7 @@ importers: packages/eslint-config-next: dependencies: '@next/eslint-plugin-next': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../eslint-plugin-next '@rushstack/eslint-patch': specifier: ^1.10.3 @@ -921,7 +924,7 @@ importers: packages/next: dependencies: '@next/env': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../next-env '@swc/helpers': specifier: 0.5.15 @@ -933,17 +936,17 @@ importers: specifier: 8.4.31 version: 8.4.31 react: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804 + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804 react-dom: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) sass: specifier: ^1.3.0 version: 1.77.8 styled-jsx: specifier: 5.1.6 - version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-be11cb5c-20250804) + version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-7deda941-20250804) optionalDependencies: sharp: specifier: ^0.34.3 @@ -1017,7 +1020,7 @@ importers: version: 7.27.0 '@base-ui-components/react': specifier: 1.0.0-beta.2 - version: 1.0.0-beta.2(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + version: 1.0.0-beta.2(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) '@capsizecss/metrics': specifier: 3.4.0 version: 3.4.0 @@ -1046,19 +1049,19 @@ importers: specifier: 1.2.0 version: 1.2.0 '@next/font': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../font '@next/polyfill-module': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../next-polyfill-module '@next/polyfill-nomodule': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../next-polyfill-nomodule '@next/react-refresh-utils': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../react-refresh-utils '@next/swc': - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../next-swc '@opentelemetry/api': specifier: 1.6.0 @@ -1083,13 +1086,13 @@ importers: version: 3.0.0(@swc/helpers@0.5.15)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)) '@storybook/blocks': specifier: 8.6.0 - version: 8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3)) + version: 8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3)) '@storybook/react': specifier: 8.6.0 - version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) + version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) '@storybook/react-webpack5': specifier: 8.6.0 - version: 8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) + version: 8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) '@storybook/test': specifier: 8.6.0 version: 8.6.0(storybook@8.6.0(prettier@3.3.3)) @@ -1581,7 +1584,7 @@ importers: version: 1.0.35 unistore: specifier: 3.4.1 - version: 3.4.1(react@19.2.0-canary-be11cb5c-20250804) + version: 3.4.1(react@19.2.0-canary-7deda941-20250804) util: specifier: 0.12.4 version: 0.12.4 @@ -1754,14 +1757,14 @@ importers: packages/third-parties: dependencies: react: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804 + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804 third-party-capital: specifier: 1.0.20 version: 1.0.20 devDependencies: next: - specifier: 15.4.2-canary.29 + specifier: 15.4.2-canary.30 version: link:../next outdent: specifier: 0.8.0 @@ -1818,14 +1821,14 @@ importers: specifier: 29.5.0 version: 29.5.0 react: - specifier: 19.2.0-canary-be11cb5c-20250804 - version: 19.2.0-canary-be11cb5c-20250804 + specifier: 19.2.0-canary-7deda941-20250804 + version: 19.2.0-canary-7deda941-20250804 react-test-renderer: specifier: 18.2.0 - version: 18.2.0(react@19.2.0-canary-be11cb5c-20250804) + version: 18.2.0(react@19.2.0-canary-7deda941-20250804) styled-jsx: specifier: ^5.1.2 - version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-be11cb5c-20250804) + version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-7deda941-20250804) turbopack/packages/devlow-bench: dependencies: @@ -2753,8 +2756,8 @@ packages: engines: {node: '>=14.0.0'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -2763,8 +2766,8 @@ packages: resolution: {integrity: sha512-9+uaWyF1o/PgXqHLJnC81IIG0HlV3o9eFCQ5hWZDMx5NHrFk0rrwqEFGQOB8lti/rnbxNPi+kYYw1D4e8xSn/Q==} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -2979,7 +2982,7 @@ packages: resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} peerDependencies: '@types/react': '*' - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -2996,7 +2999,7 @@ packages: '@emotion/use-insertion-effect-with-fallbacks@1.0.1': resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@emotion/utils@1.2.1': resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} @@ -3663,20 +3666,20 @@ packages: '@floating-ui/react-dom@2.1.0': resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 '@floating-ui/react-dom@2.1.5': resolution: {integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 '@floating-ui/react@0.26.16': resolution: {integrity: sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} @@ -4400,13 +4403,13 @@ packages: resolution: {integrity: sha512-l9ypojKN3PjwO1CSLIsqxi7mA25+7w+xc71Q+JuCCREI0tuGwkZsKbIOpuTATIJOjPh8ycLiW7QxX1LYsRTq6w==} peerDependencies: '@mantine/hooks': 7.10.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 '@mantine/hooks@7.11.2': resolution: {integrity: sha512-jhyVe/sbDEG2U8rr2lMecUPgQxcfr5hh9HazqGfkS7ZRIMDO7uJ947yAcTMGGkp5Lxtt5TBFt1Cb6tiB2/1agg==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -4429,13 +4432,13 @@ packages: '@mdx-js/react@2.2.1': resolution: {integrity: sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@mdx-js/react@3.1.0': resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@module-federation/error-codes@0.15.0': resolution: {integrity: sha512-CFJSF+XKwTcy0PFZ2l/fSUpR4z247+Uwzp1sXVkdIfJ/ATsnqf0Q01f51qqSEA6MYdQi6FKos9FIcu3dCpQNdg==} @@ -5135,8 +5138,8 @@ packages: '@storybook/blocks@8.6.0': resolution: {integrity: sha512-3PNxlB5Ooj8CIhttbDxeV6kW7ui+2GEdTngtqhnsUHVjzeTKpilsk2lviOeUzqlyq5FDK+rhpZ3L3DJ9pDvioA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 storybook: ^8.6.0 peerDependenciesMeta: react: @@ -5186,8 +5189,8 @@ packages: resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} engines: {node: '>=14.0.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 '@storybook/instrumenter@8.6.0': resolution: {integrity: sha512-eEY/Hfa3Vj5Nv4vHRHlSqjoyW6oAKNK3rKIXfL/eawQwb7rKhzijDLG5YBH44Hh7dEPIqUp0LEdgpyIY7GXezg==} @@ -5203,8 +5206,8 @@ packages: resolution: {integrity: sha512-04T86VG0UJtiozgZkTR5sY1qM3E0Rgwqwllvyy7kFFdkV+Sv/VsPjW9sC38s9C8FtCYRL8pJZz81ey3oylpIMA==} engines: {node: '>=18.0.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 storybook: ^8.6.0 typescript: '*' peerDependenciesMeta: @@ -5225,16 +5228,16 @@ packages: '@storybook/react-dom-shim@8.6.0': resolution: {integrity: sha512-5Y+vMHhcx0xnaNsLQMbkmjc3zkDn/fGBNsiLH2e4POvW3ZQvOxjoyxAsEQaKwLtFgsdCFSd2tR89F6ItYrA2JQ==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 storybook: ^8.6.0 '@storybook/react-webpack5@8.6.0': resolution: {integrity: sha512-2L9CYDPn1OL0B8K5EU/Wpo9Slg8f0vkYPaPioQnmcK3Q4SJR4JAuDVWHUtNdxhaPOkHIy887Tfrf6BEC/blMaQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 storybook: ^8.6.0 typescript: '>= 4.2.x' peerDependenciesMeta: @@ -5246,8 +5249,8 @@ packages: engines: {node: '>=18.0.0'} peerDependencies: '@storybook/test': 8.6.0 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 storybook: ^8.6.0 typescript: '>= 4.2.x' peerDependenciesMeta: @@ -5427,8 +5430,8 @@ packages: engines: {node: '>=18'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -8885,8 +8888,8 @@ packages: peerDependencies: eslint: '>=8.0.0' - eslint-plugin-react-hooks@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-sfoekdgk/OgtL+FiCNU+PEBiN0W53TMa+IyQqUdmPvrtAb0rp6XVLfpmr7pMISNRFwA3R58Jvg+Qnnx7EnTdiA==} + eslint-plugin-react-hooks@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-uui2eQlHy3huW4+Eu75x/hi01EIcGA0Z9ohTbiCPc4zI3EqPGOSwp2KsgYfITD+HlfLT3PUPJ0fAhCH3nJ2vfA==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -11582,7 +11585,7 @@ packages: lucide-react@0.383.0: resolution: {integrity: sha512-13xlG0CQCJtzjSQYwwJ3WRqMHtRj3EXmLlorrARt7y+IHnxUCp3XyFNL1DfaGySWxHObDvnu1u1dV+0VMKHUSg==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} @@ -14112,23 +14115,23 @@ packages: resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} engines: {node: '>=16.14.0'} - react-dom@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-QX+S/Z6v8n9bAdjqGuojvrEFMlJWZ2aLVWnipHwrYoNGjWDsGkQqdmBnX5r5lWDxBiVF0rknMk6EtBQ5fiF4tA==} + react-dom@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-nRvCsRrvM5B4/7gwSl/iXOU3+ZREl5Eq4fRXCrMQmnyUL3aC5BS2oi5Uc0eLViu+68hMkJE+tx2cOf1R+wBrqg==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 - react-dom@19.2.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-nqm87rLGffhbHmlQR1VyiUrDD6XnADkOKbnE8KNdlhTXvqAkK6Ti9pKRewTLqaqlEKkSdr2n0k5+kK7RYXVDnQ==} + react-dom@19.2.0-canary-7deda941-20250804: + resolution: {integrity: sha512-UhSmZxvaDZYUOAZXl45Lt1Qw0ANWJ6OhsPhpxEbaF/TbyNIBcyyINIc8HJb4ejFr+ZDiCi01pSaaP6dQavIO5Q==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-dom@19.2.0-canary-eaee5308-20250728: resolution: {integrity: sha512-MVLdI3bsHF962avEiCIMIQ8yO6p6cRIGGTeBl4K1Lw3Yq/KsFxkpRbBqV4C1DVoDe5EXIGDezoTEPDpZcRFUow==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 - react-is@19.2.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-JQpu/zmiZmZz3SzH5i5dL0LK2jnxkkhTpWs2N6m2Fl5C1Z85LceNUx697g/JccsCTvTvmGKEZ8kAbjkOFAgoTQ==} + react-is@19.2.0-canary-7deda941-20250804: + resolution: {integrity: sha512-El0Z4BTAHU6rO3ECwhlg3As1ndIxWrv7N/Oov7+jG682gaTycErYgLUFhdA8Ys8YBuvjt9zTrdVNRM6SOItSqg==} react-is@19.2.0-canary-eaee5308-20250728: resolution: {integrity: sha512-kaeTCRQJulmP27MCI7/AEiWE9c0lRCIGumFD9A9NXvxtBR1QDHcPLJDQ7B8A3we9uuJJhW5iY2IrCHWERX194w==} @@ -14139,8 +14142,8 @@ packages: react-number-format@5.4.0: resolution: {integrity: sha512-NWdICrqLhI7rAS8yUeLVd6Wr4cN7UjJ9IBTS0f/a9i7UB4x4Ti70kGnksBtZ7o4Z7YRbvCMMR/jQmkoOBa/4fg==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 react-refresh@0.12.0: resolution: {integrity: sha512-suLIhrU2IHKL5JEKR/fAwJv7bbeq4kJ+pJopf77jHwuR+HmJS/HbrPIGsTBUVfw7tXPOmYv7UJ7PCaN49e8x4A==} @@ -14151,7 +14154,7 @@ packages: engines: {node: '>=10'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -14161,58 +14164,58 @@ packages: engines: {node: '>=10'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true - react-server-dom-turbopack@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-jDpEH8nwHCIjYGO1b4HRCcIe4AYjHEIN2PzdWbbC8RCDX9LB/4SDZyIycCkR9RZZlHVy63boBf0Vgx+xkAjuCQ==} + react-server-dom-turbopack@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-0hi0pQKcGzYii7MKPBJvu55tWInYiwegl/nTgvf+KnUWAZCOlGFivE0FlS8t7hQMDiv//z2U9iR9qGLOmQiMtQ==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 - react-server-dom-turbopack@19.2.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-v4ObEfFndvctiH/jU20FXGA2H2aDl4s3McSIX1PwUJFK0ytgZS934dlw3VNZ5fnWCHTvOds5TVSIrip9WR7DEw==} + react-server-dom-turbopack@19.2.0-canary-7deda941-20250804: + resolution: {integrity: sha512-3aX+xNTmM5MyUtGHiQZ+dSoBgPqOLiIiZ8Vzq30isXyOCp+YtdhzUXFFselfM7uJ8pM90OBQn9XWCe2q1aaxSg==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 - react-server-dom-webpack@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-O2HO0kZukHNJxEmxmBO3JHiNhNbtYU39KsSxnx25CDlUcsyZ+YBb8pI6gIx+u0aJQfFEmbkssp6sdYJA/esoDQ==} + react-server-dom-webpack@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-WeNpXJBKH84eW/JxlnDuLK04trW9oyTDmY4mjFzfUP+dZBoIGShPphUOH7JNI04zpu1x7K4bVJThVX86U5Kh/A==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 webpack: 5.98.0 - react-server-dom-webpack@19.2.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-x05BRw7DEDXLdbokh8Na+su2r+Pu725FBJDrrPpzkylnMWez0WhflgwzJZ5TS/Wq90izfFqpdi6pwa+n54gg/Q==} + react-server-dom-webpack@19.2.0-canary-7deda941-20250804: + resolution: {integrity: sha512-Es6DR7keZ1KvcugV/TBTu5RaoxviktzNhfI0zwnhcRz0K1koevms2n6bAtbPry9ffqLQy9n3+YL+GotdaBxxzw==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 webpack: 5.98.0 react-shallow-renderer@16.15.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-ssr-prepass@1.0.8: resolution: {integrity: sha512-O0gfRA1SaK+9ITKxqfnXsej2jF+OHGP/+GxD4unROQaM/0/UczGF9fuF+wTboxaQoKdIf4FvS3h/OigWh704VA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-is: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-is: 19.2.0-canary-7deda941-20250804 react-style-singleton@2.2.1: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -14220,26 +14223,26 @@ packages: react-test-renderer@18.2.0: resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-textarea-autosize@8.5.3: resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} engines: {node: '>=10'} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-virtualized@9.22.3: resolution: {integrity: sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804 - react@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-LKWOlelksDl/1hYiUUe28eBQqxrdTcu96YktfWYpJGuBlvuk4sO6F8ZNMzFeld8Pw9DQS7fsv1b+ziIDH5LqIw==} + react@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-D0wNWESHm5fpfDnM47I8A7Y6Odl+6FEga1mAWsZ47Wh/1/Tab6OgrK8ULc7eJqo1AYewCnjt/USH3HiGMB1SpQ==} engines: {node: '>=0.10.0'} - react@19.2.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-mww1+eX3MSU8b6JYbLJIEV9GKs3O9z5cEL92yK47uUm9Jb6NVp+pnGtsK3KN5as4c5PZHuZVCFHyLwd6t8ijVA==} + react@19.2.0-canary-7deda941-20250804: + resolution: {integrity: sha512-L0AMEsQT1GDXkOdkNvtzzBxoRyIUEvaxHYJk7WjjD6qmcEND7ApMhC3B5GiBfFmLdwGkTzb+LGWELytF/AdrBg==} engines: {node: '>=0.10.0'} react@19.2.0-canary-eaee5308-20250728: @@ -14801,11 +14804,11 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.0.0-experimental-be11cb5c-20250804: - resolution: {integrity: sha512-YcZSKriZalsj8xWGy7t+Amh2TDsCIEWbwaoKYWgDYY2Jyc8OxNFqcM6UrRhw25vs2lc1YWNQMKBHQ3Fy0UhXdw==} + scheduler@0.0.0-experimental-7deda941-20250804: + resolution: {integrity: sha512-zGUZf5AgXcQb+JvHnIhja3Inrp0UkTROgdK1AjXsDup1f++WRn5aoximQZxD6xXtwMIrxIOLaGVuJRhNKPDkPA==} - scheduler@0.27.0-canary-be11cb5c-20250804: - resolution: {integrity: sha512-cVoL0no5dn8hvkqwiYmN1+iNY6OpWRz0VY/UHdbNwGZyKN6QvzeqzCw/n7g2BTwxJ6GtJ5xZDod6ZWEuiFTS0A==} + scheduler@0.27.0-canary-7deda941-20250804: + resolution: {integrity: sha512-36qAbVBOy3rPhS8rtdx6oqS/+5C3Pc4JGw0SMTgGhI1zcgQs/SF5v3qBknTcJ5lI0DeMIXENaefrVtGbOwE0fw==} schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} @@ -15464,7 +15467,7 @@ packages: peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@babel/core': optional: true @@ -15545,7 +15548,7 @@ packages: swr@2.2.4: resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 symbol-observable@1.0.1: resolution: {integrity: sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==} @@ -16337,7 +16340,7 @@ packages: engines: {node: '>=10'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -16345,13 +16348,13 @@ packages: use-composed-ref@1.3.0: resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 use-isomorphic-layout-effect@1.1.2: resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -16360,7 +16363,7 @@ packages: resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -16370,7 +16373,7 @@ packages: engines: {node: '>=10'} peerDependencies: '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 peerDependenciesMeta: '@types/react': optional: true @@ -16378,12 +16381,12 @@ packages: use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 use-sync-external-store@1.5.0: resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} peerDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -18073,28 +18076,28 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@base-ui-components/react@1.0.0-beta.2(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)': + '@base-ui-components/react@1.0.0-beta.2(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)': dependencies: '@babel/runtime': 7.27.6 - '@base-ui-components/utils': 0.1.0(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) - '@floating-ui/react-dom': 2.1.5(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + '@base-ui-components/utils': 0.1.0(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) + '@floating-ui/react-dom': 2.1.5(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) '@floating-ui/utils': 0.2.10 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) reselect: 5.1.1 tabbable: 6.2.0 - use-sync-external-store: 1.5.0(react@19.2.0-canary-be11cb5c-20250804) + use-sync-external-store: 1.5.0(react@19.2.0-canary-7deda941-20250804) optionalDependencies: '@types/react': 19.1.8 - '@base-ui-components/utils@0.1.0(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)': + '@base-ui-components/utils@0.1.0(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)': dependencies: '@babel/runtime': 7.27.6 '@floating-ui/utils': 0.2.10 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) reselect: 5.1.1 - use-sync-external-store: 1.5.0(react@19.2.0-canary-be11cb5c-20250804) + use-sync-external-store: 1.5.0(react@19.2.0-canary-7deda941-20250804) optionalDependencies: '@types/react': 19.1.8 @@ -18427,17 +18430,17 @@ snapshots: '@emotion/memoize@0.8.1': {} - '@emotion/react@11.11.1(@types/react@19.1.8)(react@19.2.0-canary-be11cb5c-20250804)': + '@emotion/react@11.11.1(@types/react@19.1.8)(react@19.2.0-canary-7deda941-20250804)': dependencies: '@babel/runtime': 7.27.0 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.2.0-canary-be11cb5c-20250804) + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.2.0-canary-7deda941-20250804) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 hoist-non-react-statics: 3.3.2 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 optionalDependencies: '@types/react': 19.1.8 transitivePeerDependencies: @@ -18455,9 +18458,9 @@ snapshots: '@emotion/unitless@0.8.1': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.2.0-canary-be11cb5c-20250804)': + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.2.0-canary-7deda941-20250804)': dependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@emotion/utils@1.2.1': {} @@ -18981,11 +18984,11 @@ snapshots: react: 19.2.0-canary-eaee5308-20250728 react-dom: 19.2.0-canary-eaee5308-20250728(react@19.2.0-canary-eaee5308-20250728) - '@floating-ui/react-dom@2.1.5(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)': + '@floating-ui/react-dom@2.1.5(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)': dependencies: '@floating-ui/dom': 1.7.3 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) '@floating-ui/react@0.26.16(react-dom@19.2.0-canary-eaee5308-20250728(react@19.2.0-canary-eaee5308-20250728))(react@19.2.0-canary-eaee5308-20250728)': dependencies: @@ -20144,11 +20147,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@2.2.1(react@19.2.0-canary-be11cb5c-20250804)': + '@mdx-js/react@2.2.1(react@19.2.0-canary-7deda941-20250804)': dependencies: '@types/mdx': 2.0.3 '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@mdx-js/react@2.2.1(react@19.2.0-canary-eaee5308-20250728)': dependencies: @@ -20156,11 +20159,11 @@ snapshots: '@types/react': 19.1.8 react: 19.2.0-canary-eaee5308-20250728 - '@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.2.0-canary-be11cb5c-20250804)': + '@mdx-js/react@3.1.0(@types/react@19.1.8)(react@19.2.0-canary-7deda941-20250804)': dependencies: '@types/mdx': 2.0.3 '@types/react': 19.1.8 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 '@module-federation/error-codes@0.15.0': {} @@ -20920,12 +20923,12 @@ snapshots: '@storybook/addon-docs@8.6.0(@types/react@19.1.8)(storybook@8.6.0(prettier@3.3.3))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.2.0-canary-be11cb5c-20250804) - '@storybook/blocks': 8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3)) + '@mdx-js/react': 3.1.0(@types/react@19.1.8)(react@19.2.0-canary-7deda941-20250804) + '@storybook/blocks': 8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3)) '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3)) - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + '@storybook/react-dom-shim': 8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3)) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) storybook: 8.6.0(prettier@3.3.3) ts-dedent: 2.2.0 transitivePeerDependencies: @@ -20990,14 +20993,14 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/blocks@8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))': + '@storybook/blocks@8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))': dependencies: - '@storybook/icons': 1.3.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804) + '@storybook/icons': 1.3.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804) storybook: 8.6.0(prettier@3.3.3) ts-dedent: 2.2.0 optionalDependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) '@storybook/builder-webpack5@8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': dependencies: @@ -21076,10 +21079,10 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@1.3.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)': + '@storybook/icons@1.3.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)': dependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) '@storybook/instrumenter@8.6.0(storybook@8.6.0(prettier@3.3.3))': dependencies: @@ -21091,17 +21094,17 @@ snapshots: dependencies: storybook: 8.6.0(prettier@3.3.3) - '@storybook/preset-react-webpack@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': + '@storybook/preset-react-webpack@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': dependencies: '@storybook/core-webpack': 8.6.0(storybook@8.6.0(prettier@3.3.3)) - '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.2)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)) '@types/semver': 7.5.6 find-up: 5.0.0 magic-string: 0.30.17 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-docgen: 7.1.0 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) resolve: 1.22.10 semver: 7.6.3 storybook: 8.6.0(prettier@3.3.3) @@ -21135,19 +21138,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))': + '@storybook/react-dom-shim@8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))': dependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) storybook: 8.6.0(prettier@3.3.3) - '@storybook/react-webpack5@8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': + '@storybook/react-webpack5@8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': dependencies: '@storybook/builder-webpack5': 8.6.0(@rspack/core@1.4.5(@swc/helpers@0.5.15))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) - '@storybook/preset-react-webpack': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) - '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + '@storybook/preset-react-webpack': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) storybook: 8.6.0(prettier@3.3.3) optionalDependencies: typescript: 5.8.2 @@ -21160,16 +21163,16 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': + '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.3.3)))(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3))(typescript@5.8.2)': dependencies: '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.3.3)) '@storybook/global': 5.0.0 '@storybook/manager-api': 8.6.0(storybook@8.6.0(prettier@3.3.3)) '@storybook/preview-api': 8.6.0(storybook@8.6.0(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.0(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(storybook@8.6.0(prettier@3.3.3)) + '@storybook/react-dom-shim': 8.6.0(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(storybook@8.6.0(prettier@3.3.3)) '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.3.3)) - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) storybook: 8.6.0(prettier@3.3.3) optionalDependencies: '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.3.3)) @@ -21376,13 +21379,13 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/react@15.0.7(@types/react@19.1.8)(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)': + '@testing-library/react@15.0.7(@types/react@19.1.8)(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)': dependencies: '@babel/runtime': 7.27.0 '@testing-library/dom': 10.1.0 '@types/react-dom': 19.1.6(@types/react@19.1.8) - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) optionalDependencies: '@types/react': 19.1.8 @@ -25658,7 +25661,7 @@ snapshots: - bluebird - supports-color - eslint-plugin-react-hooks@0.0.0-experimental-be11cb5c-20250804(eslint@9.12.0): + eslint-plugin-react-hooks@0.0.0-experimental-7deda941-20250804(eslint@9.12.0): dependencies: '@babel/core': 7.26.10 '@babel/parser': 7.27.0 @@ -27181,7 +27184,7 @@ snapshots: hoist-non-react-statics@3.3.2: dependencies: - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 homedir-polyfill@1.0.3: dependencies: @@ -32122,25 +32125,25 @@ snapshots: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 pretty-format@29.5.0: dependencies: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 pretty-format@30.0.0-alpha.6: dependencies: '@jest/schemas': 30.0.0-alpha.6 ansi-styles: 5.2.0 - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 pretty-ms@7.0.0: dependencies: @@ -32203,7 +32206,7 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 19.2.0-canary-be11cb5c-20250804 + react-is: 19.2.0-canary-7deda941-20250804 property-information@5.6.0: dependencies: @@ -32414,22 +32417,22 @@ snapshots: transitivePeerDependencies: - supports-color - react-dom@0.0.0-experimental-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804): + react-dom@0.0.0-experimental-7deda941-20250804(react@19.2.0-canary-7deda941-20250804): dependencies: - react: 19.2.0-canary-be11cb5c-20250804 - scheduler: 0.27.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + scheduler: 0.27.0-canary-7deda941-20250804 - react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804): + react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804): dependencies: - react: 19.2.0-canary-be11cb5c-20250804 - scheduler: 0.27.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + scheduler: 0.27.0-canary-7deda941-20250804 react-dom@19.2.0-canary-eaee5308-20250728(react@19.2.0-canary-eaee5308-20250728): dependencies: react: 19.2.0-canary-eaee5308-20250728 - scheduler: 0.27.0-canary-be11cb5c-20250804 + scheduler: 0.27.0-canary-7deda941-20250804 - react-is@19.2.0-canary-be11cb5c-20250804: {} + react-is@19.2.0-canary-7deda941-20250804: {} react-is@19.2.0-canary-eaee5308-20250728: {} @@ -32462,48 +32465,48 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - react-server-dom-turbopack@0.0.0-experimental-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804): + react-server-dom-turbopack@0.0.0-experimental-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) - react-server-dom-turbopack@19.2.0-canary-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804): + react-server-dom-turbopack@19.2.0-canary-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) - react-server-dom-webpack@0.0.0-experimental-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): + react-server-dom-webpack@0.0.0-experimental-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15)) webpack-sources: 3.2.3(patch_hash=jbynf5dc46ambamq3wuyho6hkq) - react-server-dom-webpack@19.2.0-canary-be11cb5c-20250804(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): + react-server-dom-webpack@19.2.0-canary-7deda941-20250804(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15)) webpack-sources: 3.2.3(patch_hash=jbynf5dc46ambamq3wuyho6hkq) - react-shallow-renderer@16.15.0(react@19.2.0-canary-be11cb5c-20250804): + react-shallow-renderer@16.15.0(react@19.2.0-canary-7deda941-20250804): dependencies: object-assign: 4.1.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-is: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-is: 19.2.0-canary-7deda941-20250804 - react-ssr-prepass@1.0.8(react-is@19.2.0-canary-eaee5308-20250728)(react@19.2.0-canary-be11cb5c-20250804): + react-ssr-prepass@1.0.8(react-is@19.2.0-canary-eaee5308-20250728)(react@19.2.0-canary-7deda941-20250804): dependencies: object-is: 1.0.2 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 react-is: 19.2.0-canary-eaee5308-20250728 react-style-singleton@2.2.1(@types/react@19.1.8)(react@19.2.0-canary-eaee5308-20250728): @@ -32515,12 +32518,12 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - react-test-renderer@18.2.0(react@19.2.0-canary-be11cb5c-20250804): + react-test-renderer@18.2.0(react@19.2.0-canary-7deda941-20250804): dependencies: - react: 19.2.0-canary-be11cb5c-20250804 - react-is: 19.2.0-canary-be11cb5c-20250804 - react-shallow-renderer: 16.15.0(react@19.2.0-canary-be11cb5c-20250804) - scheduler: 0.27.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 + react-is: 19.2.0-canary-7deda941-20250804 + react-shallow-renderer: 16.15.0(react@19.2.0-canary-7deda941-20250804) + scheduler: 0.27.0-canary-7deda941-20250804 react-textarea-autosize@8.5.3(@types/react@19.1.8)(react@19.2.0-canary-eaee5308-20250728): dependencies: @@ -32531,20 +32534,20 @@ snapshots: transitivePeerDependencies: - '@types/react' - react-virtualized@9.22.3(react-dom@19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804))(react@19.2.0-canary-be11cb5c-20250804): + react-virtualized@9.22.3(react-dom@19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804))(react@19.2.0-canary-7deda941-20250804): dependencies: '@babel/runtime': 7.27.0 clsx: 1.1.1 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.0-canary-be11cb5c-20250804 - react-dom: 19.2.0-canary-be11cb5c-20250804(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + react-dom: 19.2.0-canary-7deda941-20250804(react@19.2.0-canary-7deda941-20250804) react-lifecycles-compat: 3.0.4 - react@0.0.0-experimental-be11cb5c-20250804: {} + react@0.0.0-experimental-7deda941-20250804: {} - react@19.2.0-canary-be11cb5c-20250804: {} + react@19.2.0-canary-7deda941-20250804: {} react@19.2.0-canary-eaee5308-20250728: {} @@ -33314,9 +33317,9 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.0.0-experimental-be11cb5c-20250804: {} + scheduler@0.0.0-experimental-7deda941-20250804: {} - scheduler@0.27.0-canary-be11cb5c-20250804: {} + scheduler@0.27.0-canary-7deda941-20250804: {} schema-utils@2.7.1: dependencies: @@ -34117,10 +34120,10 @@ snapshots: postcss: 7.0.32 postcss-load-plugins: 2.3.0 - styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-be11cb5c-20250804): + styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.2.0-canary-7deda941-20250804): dependencies: client-only: 0.0.1 - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 optionalDependencies: '@babel/core': 7.26.10 babel-plugin-macros: 3.1.0 @@ -34214,11 +34217,11 @@ snapshots: '@swc/counter': 0.1.3 webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.24.2) - swr@2.2.4(react@19.2.0-canary-be11cb5c-20250804): + swr@2.2.4(react@19.2.0-canary-7deda941-20250804): dependencies: client-only: 0.0.1 - react: 19.2.0-canary-be11cb5c-20250804 - use-sync-external-store: 1.2.0(react@19.2.0-canary-be11cb5c-20250804) + react: 19.2.0-canary-7deda941-20250804 + use-sync-external-store: 1.2.0(react@19.2.0-canary-7deda941-20250804) symbol-observable@1.0.1: {} @@ -35015,9 +35018,9 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unistore@3.4.1(react@19.2.0-canary-be11cb5c-20250804): + unistore@3.4.1(react@19.2.0-canary-7deda941-20250804): optionalDependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 universal-github-app-jwt@1.1.1: dependencies: @@ -35143,13 +35146,13 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - use-sync-external-store@1.2.0(react@19.2.0-canary-be11cb5c-20250804): + use-sync-external-store@1.2.0(react@19.2.0-canary-7deda941-20250804): dependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 - use-sync-external-store@1.5.0(react@19.2.0-canary-be11cb5c-20250804): + use-sync-external-store@1.5.0(react@19.2.0-canary-7deda941-20250804): dependencies: - react: 19.2.0-canary-be11cb5c-20250804 + react: 19.2.0-canary-7deda941-20250804 util-deprecate@1.0.2: {} diff --git a/test/e2e/opentelemetry/instrumentation/app/app/[param]/rsc-fetch/error/page.tsx b/test/e2e/opentelemetry/instrumentation/app/app/[param]/rsc-fetch/error/page.tsx new file mode 100644 index 0000000000000..b5aa96e8d6122 --- /dev/null +++ b/test/e2e/opentelemetry/instrumentation/app/app/[param]/rsc-fetch/error/page.tsx @@ -0,0 +1,13 @@ +export default async function Page({ + searchParams, +}: { + searchParams: Promise<{ [key: string]: string | string[] | undefined }> +}) { + const { status } = await searchParams + + if (status === 'error') { + throw new Error('Error from Server Component') + } + + return

Page

+} diff --git a/test/e2e/opentelemetry/instrumentation/opentelemetry.test.ts b/test/e2e/opentelemetry/instrumentation/opentelemetry.test.ts index a33b9850ef84a..e891a3d3a18ff 100644 --- a/test/e2e/opentelemetry/instrumentation/opentelemetry.test.ts +++ b/test/e2e/opentelemetry/instrumentation/opentelemetry.test.ts @@ -529,6 +529,136 @@ describe('opentelemetry', () => { }, ]) }) + + it('should handle error in RSC', async () => { + await next.fetch( + '/app/param/rsc-fetch/error?status=error', + env.fetchInit + ) + + await expectTrace(getCollector(), [ + { + name: 'GET /app/[param]/rsc-fetch/error', + attributes: { + 'http.method': 'GET', + 'http.route': '/app/[param]/rsc-fetch/error', + 'http.status_code': 500, + 'http.target': '/app/param/rsc-fetch/error?status=error', + 'next.route': '/app/[param]/rsc-fetch/error', + 'next.rsc': false, + 'next.span_name': 'GET /app/[param]/rsc-fetch/error', + 'next.span_type': 'BaseServer.handleRequest', + 'error.type': '500', + }, + kind: 1, + status: { code: 2 }, + traceId: env.span.traceId, + parentId: env.span.rootParentId, + spans: [ + { + name: 'render route (app) /app/[param]/rsc-fetch/error', + attributes: { + 'next.route': '/app/[param]/rsc-fetch/error', + 'next.span_name': + 'render route (app) /app/[param]/rsc-fetch/error', + 'next.span_type': 'AppRender.getBodyResult', + }, + kind: 0, + status: { code: 2 }, + spans: [ + { + name: 'build component tree', + attributes: { + 'next.span_name': 'build component tree', + 'next.span_type': + 'NextNodeServer.createComponentTree', + }, + kind: 0, + status: { code: 0 }, + spans: [ + { + name: 'resolve segment modules', + attributes: { + 'next.segment': '__PAGE__', + 'next.span_name': 'resolve segment modules', + 'next.span_type': + 'NextNodeServer.getLayoutOrPageModule', + }, + kind: 0, + status: { code: 0 }, + }, + { + name: 'resolve segment modules', + attributes: { + 'next.segment': '[param]', + 'next.span_name': 'resolve segment modules', + 'next.span_type': + 'NextNodeServer.getLayoutOrPageModule', + }, + kind: 0, + status: { code: 0 }, + }, + ], + }, + { + name: 'generateMetadata /app/[param]/layout', + attributes: { + 'next.page': '/app/[param]/layout', + 'next.span_name': + 'generateMetadata /app/[param]/layout', + 'next.span_type': 'ResolveMetadata.generateMetadata', + }, + kind: 0, + status: { code: 0 }, + }, + { + name: 'generateMetadata /app/[param]/layout', + attributes: { + 'next.page': '/app/[param]/layout', + 'next.span_name': + 'generateMetadata /app/[param]/layout', + 'next.span_type': 'ResolveMetadata.generateMetadata', + }, + kind: 0, + status: { code: 0 }, + }, + { + attributes: { + 'next.clientComponentLoadCount': isNextDev ? 9 : 8, + 'next.span_type': + 'NextNodeServer.clientComponentLoading', + }, + kind: 0, + name: 'NextNodeServer.clientComponentLoading', + status: { + code: 0, + }, + }, + { + name: 'start response', + attributes: { + 'next.span_name': 'start response', + 'next.span_type': 'NextNodeServer.startResponse', + }, + kind: 0, + status: { code: 0 }, + }, + ], + }, + { + name: 'resolve page components', + attributes: { + 'next.route': '/app/[param]/rsc-fetch/error', + 'next.span_name': 'resolve page components', + 'next.span_type': 'NextNodeServer.findPageComponents', + }, + kind: 0, + status: { code: 0 }, + }, + ], + }, + ]) + }) }) describe('pages', () => { diff --git a/test/e2e/styled-jsx/index.test.ts b/test/e2e/styled-jsx/index.test.ts index 3e4bebe999d7d..c3f39f2c72abe 100644 --- a/test/e2e/styled-jsx/index.test.ts +++ b/test/e2e/styled-jsx/index.test.ts @@ -41,4 +41,13 @@ describe('styled-jsx', () => { const html = await next.render('/amp') expect(html).toMatch(/color:.*?cyan/) }) + + it('should render styles inside TypeScript', async () => { + const browser = await next.browser('/typescript') + const color = await browser.eval( + `getComputedStyle(document.querySelector('button')).color` + ) + + expect(color).toMatch('255, 0, 0') + }) }) diff --git a/test/e2e/styled-jsx/pages/typescript.tsx b/test/e2e/styled-jsx/pages/typescript.tsx new file mode 100644 index 0000000000000..1dfbf4409eef2 --- /dev/null +++ b/test/e2e/styled-jsx/pages/typescript.tsx @@ -0,0 +1,20 @@ +interface Props { + color: string +} + +function Test(p: Props) { + return ( +
+ + +
+ ) +} + +export default function Page() { + return +} diff --git a/turbopack/crates/turbo-tasks-fs/src/lib.rs b/turbopack/crates/turbo-tasks-fs/src/lib.rs index f7d195e482293..59205def86e6a 100644 --- a/turbopack/crates/turbo-tasks-fs/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fs/src/lib.rs @@ -474,7 +474,7 @@ impl DiskFileSystem { self.inner.watcher.stop_watching(); } - pub async fn to_sys_path(&self, fs_path: FileSystemPath) -> Result { + pub fn to_sys_path(&self, fs_path: FileSystemPath) -> Result { // just in case there's a windows unc path prefix we remove it with `dunce` let path = self.inner.root_path(); Ok(if fs_path.path.is_empty() { @@ -545,7 +545,7 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn read(&self, fs_path: FileSystemPath) -> Result> { mark_session_dependent(); - let full_path = self.to_sys_path(fs_path).await?; + let full_path = self.to_sys_path(fs_path)?; self.inner.register_read_invalidator(&full_path)?; let _lock = self.inner.lock_path(&full_path).await; @@ -571,7 +571,7 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn raw_read_dir(&self, fs_path: FileSystemPath) -> Result> { mark_session_dependent(); - let full_path = self.to_sys_path(fs_path).await?; + let full_path = self.to_sys_path(fs_path)?; self.inner.register_dir_invalidator(&full_path)?; // we use the sync std function here as it's a lot faster (600%) in @@ -626,7 +626,7 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn read_link(&self, fs_path: FileSystemPath) -> Result> { mark_session_dependent(); - let full_path = self.to_sys_path(fs_path.clone()).await?; + let full_path = self.to_sys_path(fs_path.clone())?; self.inner.register_read_invalidator(&full_path)?; let _lock = self.inner.lock_path(&full_path).await; @@ -716,7 +716,7 @@ impl FileSystem for DiskFileSystem { // `write` purely declares a side effect and does not need to be reexecuted in the next // session. All side effects are reexecuted in general. - let full_path = self.to_sys_path(fs_path).await?; + let full_path = self.to_sys_path(fs_path)?; let content = content.await?; let inner = self.inner.clone(); let invalidator = turbo_tasks::get_invalidator(); @@ -851,7 +851,7 @@ impl FileSystem for DiskFileSystem { // `write_link` purely declares a side effect and does not need to be reexecuted in the next // session. All side effects are reexecuted in general. - let full_path = self.to_sys_path(fs_path).await?; + let full_path = self.to_sys_path(fs_path)?; let content = target.await?; let inner = self.inner.clone(); let invalidator = turbo_tasks::get_invalidator(); @@ -975,7 +975,7 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn metadata(&self, fs_path: FileSystemPath) -> Result> { mark_session_dependent(); - let full_path = self.to_sys_path(fs_path).await?; + let full_path = self.to_sys_path(fs_path)?; self.inner.register_read_invalidator(&full_path)?; let _lock = self.inner.lock_path(&full_path).await; @@ -2308,7 +2308,7 @@ pub async fn to_sys_path(mut path: FileSystemPath) -> Result> { } if let Some(fs) = Vc::try_resolve_downcast_type::(path.fs()).await? { - let sys_path = fs.await?.to_sys_path(path).await?; + let sys_path = fs.await?.to_sys_path(path)?; return Ok(Some(sys_path)); } diff --git a/turbopack/crates/turbo-tasks-fs/src/util.rs b/turbopack/crates/turbo-tasks-fs/src/util.rs index c72853f6d099e..f87b5bf34908e 100644 --- a/turbopack/crates/turbo-tasks-fs/src/util.rs +++ b/turbopack/crates/turbo-tasks-fs/src/util.rs @@ -152,8 +152,7 @@ pub async fn uri_from_file(root: FileSystemPath, path: Option<&str>) -> Result root.join(path)?, None => root, - }) - .await? + })? .to_string_lossy() ) .split('/') @@ -171,12 +170,10 @@ pub async fn uri_from_file(root: FileSystemPath, path: Option<&str>) -> Result root.join(path.into())?, - None => root, - }) - .await?; + let sys_path = root_fs.to_sys_path(match path { + Some(path) => root.join(path.into())?, + None => root, + })?; let raw_path = sys_path.to_string_lossy().to_string(); let normalized_path = raw_path.replace('\\', "/"); diff --git a/turbopack/crates/turbopack-cli-utils/src/runtime_entry.rs b/turbopack/crates/turbopack-cli-utils/src/runtime_entry.rs index 1b8149cb6e747..d184c702bbb70 100644 --- a/turbopack/crates/turbopack-cli-utils/src/runtime_entry.rs +++ b/turbopack/crates/turbopack-cli-utils/src/runtime_entry.rs @@ -5,6 +5,7 @@ use turbopack_core::{ chunk::{EvaluatableAsset, EvaluatableAssetExt, EvaluatableAssets}, context::AssetContext, module::Module, + reference_type::CommonJsReferenceSubType, resolve::{origin::PlainResolveOrigin, parse::Request}, source::Source, }; @@ -35,6 +36,7 @@ impl RuntimeEntry { let modules = cjs_resolve( Vc::upcast(PlainResolveOrigin::new(asset_context, path.clone())), **request, + CommonJsReferenceSubType::Undefined, None, false, ) diff --git a/turbopack/crates/turbopack-cli/src/contexts.rs b/turbopack/crates/turbopack-cli/src/contexts.rs index 1a6c933deff70..a00803a23ac10 100644 --- a/turbopack/crates/turbopack-cli/src/contexts.rs +++ b/turbopack/crates/turbopack-cli/src/contexts.rs @@ -8,8 +8,8 @@ use turbopack::{ ModuleAssetContext, ecmascript::TreeShakingMode, module_options::{ - EcmascriptOptionsContext, JsxTransformOptions, ModuleOptionsContext, ModuleRule, - ModuleRuleEffect, RuleCondition, TypescriptTransformOptions, + EcmascriptOptionsContext, JsxTransformOptions, ModuleOptionsContext, + TypescriptTransformOptions, }, }; use turbopack_browser::react_refresh::assert_can_resolve_react_refresh; @@ -135,21 +135,6 @@ async fn get_client_module_options_context( .resolved_cell(), ); - let conditions = RuleCondition::any(vec![ - RuleCondition::ResourcePathEndsWith(".js".to_string()), - RuleCondition::ResourcePathEndsWith(".jsx".to_string()), - RuleCondition::ResourcePathEndsWith(".ts".to_string()), - RuleCondition::ResourcePathEndsWith(".tsx".to_string()), - ]); - - let module_rules = ModuleRule::new( - conditions, - vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![]), - append: ResolvedVc::cell(vec![]), - }], - ); - let module_options_context = ModuleOptionsContext { ecmascript: EcmascriptOptionsContext { enable_jsx, @@ -164,7 +149,6 @@ async fn get_client_module_options_context( foreign_code_context_condition(), module_options_context.clone().resolved_cell(), )], - module_rules: vec![module_rules], ..module_options_context } .cell(); diff --git a/turbopack/crates/turbopack-core/src/module_graph/mod.rs b/turbopack/crates/turbopack-core/src/module_graph/mod.rs index 2d5bcc610a991..43116c5b7189c 100644 --- a/turbopack/crates/turbopack-core/src/module_graph/mod.rs +++ b/turbopack/crates/turbopack-core/src/module_graph/mod.rs @@ -2074,7 +2074,7 @@ pub mod tests { impl Asset for MockModule { #[turbo_tasks::function] fn content(&self) -> Vc { - todo!() + panic!("MockModule::content shouldn't be called") } } diff --git a/turbopack/crates/turbopack-core/src/output.rs b/turbopack/crates/turbopack-core/src/output.rs index 7b808e1335b51..381ad568eeaa0 100644 --- a/turbopack/crates/turbopack-core/src/output.rs +++ b/turbopack/crates/turbopack-core/src/output.rs @@ -59,6 +59,3 @@ impl OutputAssets { /// A set of [OutputAsset]s #[turbo_tasks::value(transparent)] pub struct OutputAssetsSet(FxIndexSet>>); - -// TODO All Vc::try_resolve_downcast::> calls should be -// removed diff --git a/turbopack/crates/turbopack-core/src/source.rs b/turbopack/crates/turbopack-core/src/source.rs index 2d0e8a131107b..2954179b90900 100644 --- a/turbopack/crates/turbopack-core/src/source.rs +++ b/turbopack/crates/turbopack-core/src/source.rs @@ -17,5 +17,3 @@ pub struct OptionSource(Option>>); #[turbo_tasks::value(transparent)] pub struct Sources(Vec>>); - -// TODO All Vc::try_resolve_downcast::> calls should be removed diff --git a/turbopack/crates/turbopack-css/src/references/compose.rs b/turbopack/crates/turbopack-css/src/references/compose.rs index ceef4646e4e66..c2a54ef81c6ff 100644 --- a/turbopack/crates/turbopack-css/src/references/compose.rs +++ b/turbopack/crates/turbopack-css/src/references/compose.rs @@ -38,9 +38,7 @@ impl ModuleReference for CssModuleComposeReference { *self.origin, *self.request, CssReferenceSubType::Compose, - // TODO: add real issue source, currently impossible because `CssClassName` doesn't - // contain the source span - // https://docs.rs/swc_css_modules/0.21.16/swc_css_modules/enum.CssClassName.html + // TODO: add real issue source, currently impossible None, ) } diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs index 585e6eab8c24f..b654a75eb48f4 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/emotion.rs @@ -102,15 +102,12 @@ impl EmotionTransformer { enabled: Some(true), sourcemap: config.sourcemap, label_format: config.label_format.as_deref().map(From::from), - auto_label: if let Some(auto_label) = config.auto_label.as_ref() { - match auto_label { - EmotionLabelKind::Always => Some(true), - EmotionLabelKind::Never => Some(false), - // [TODO]: this is not correct coerece, need to be fixed - EmotionLabelKind::DevOnly => None, - } - } else { - None + auto_label: match config.auto_label.as_ref() { + Some(EmotionLabelKind::Always) => Some(true), + Some(EmotionLabelKind::Never) => Some(false), + // [TODO]: this is not correct (doesn't take current mode into account) + Some(EmotionLabelKind::DevOnly) => None, + None => None, }, import_map: config.import_map.as_ref().map(|map| { map.iter() diff --git a/turbopack/crates/turbopack-ecmascript-runtime/src/asset_context.rs b/turbopack/crates/turbopack-ecmascript-runtime/src/asset_context.rs index 8ca989aaf100c..b6b77a79676d7 100644 --- a/turbopack/crates/turbopack-ecmascript-runtime/src/asset_context.rs +++ b/turbopack/crates/turbopack-ecmascript-runtime/src/asset_context.rs @@ -22,7 +22,8 @@ pub async fn get_runtime_asset_context( ), ..Default::default() }, - // TODO: Somehow this fails to compile when enabled. + // TODO: This fails when enabled, we cannot insert helpers for the runtime code as this + // happens after bundling. // environment: Some(environment), environment: None, tree_shaking_mode: Some(TreeShakingMode::ReexportsOnly), diff --git a/turbopack/crates/turbopack-ecmascript-runtime/src/browser_runtime.rs b/turbopack/crates/turbopack-ecmascript-runtime/src/browser_runtime.rs index d56ec35fb172a..47948bd63b706 100644 --- a/turbopack/crates/turbopack-ecmascript-runtime/src/browser_runtime.rs +++ b/turbopack/crates/turbopack-ecmascript-runtime/src/browser_runtime.rs @@ -73,7 +73,6 @@ pub async fn get_browser_runtime_code( runtime_backend_code.push("browser/runtime/dom/dev-backend-dom.ts"); } (ChunkLoading::Dom, RuntimeType::Production) => { - // TODO runtime_backend_code.push("browser/runtime/dom/runtime-backend-dom.ts"); } diff --git a/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs b/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs index c6a03d9c8bf03..c9227b47c23b2 100644 --- a/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs +++ b/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs @@ -622,7 +622,6 @@ impl EvalContext { if let Expr::Member(MemberExpr { obj, prop, .. }) = unparen(callee) { let obj = Box::new(self.eval(obj)); let prop = Box::new(match prop { - // TODO avoid clone MemberProp::Ident(i) => i.sym.clone().into(), MemberProp::PrivateName(_) => { return JsValue::unknown_empty( diff --git a/turbopack/crates/turbopack-ecmascript/src/references/amd.rs b/turbopack/crates/turbopack-ecmascript/src/references/amd.rs index 8f577810e2bf8..adc0a3183c3ec 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/amd.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/amd.rs @@ -19,6 +19,7 @@ use turbopack_core::{ chunk::{ChunkableModuleReference, ChunkingContext}, issue::IssueSource, reference::ModuleReference, + reference_type::CommonJsReferenceSubType, resolve::{ModuleResolveResult, origin::ResolveOrigin, parse::Request}, }; use turbopack_resolve::ecmascript::cjs_resolve; @@ -67,6 +68,7 @@ impl ModuleReference for AmdDefineAssetReference { cjs_resolve( *self.origin, *self.request, + CommonJsReferenceSubType::Undefined, Some(self.issue_source), self.in_try, ) @@ -176,6 +178,7 @@ impl AmdDefineWithDependenciesCodeGen { cjs_resolve( *self.origin, **request, + CommonJsReferenceSubType::Undefined, Some(self.issue_source), self.in_try, ), diff --git a/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs b/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs index 512ef7322dff6..736cbd6204e4b 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/cjs.rs @@ -13,6 +13,7 @@ use turbopack_core::{ chunk::{ChunkableModuleReference, ChunkingContext}, issue::IssueSource, reference::ModuleReference, + reference_type::CommonJsReferenceSubType, resolve::{ModuleResolveResult, origin::ResolveOrigin, parse::Request}, }; use turbopack_resolve::ecmascript::cjs_resolve; @@ -61,6 +62,7 @@ impl ModuleReference for CjsAssetReference { cjs_resolve( *self.origin, *self.request, + CommonJsReferenceSubType::Undefined, Some(self.issue_source), self.in_try, ) @@ -112,6 +114,7 @@ impl ModuleReference for CjsRequireAssetReference { cjs_resolve( *self.origin, *self.request, + CommonJsReferenceSubType::Undefined, Some(self.issue_source), self.in_try, ) @@ -236,6 +239,7 @@ impl ModuleReference for CjsRequireResolveAssetReference { cjs_resolve( *self.origin, *self.request, + CommonJsReferenceSubType::Undefined, Some(self.issue_source), self.in_try, ) diff --git a/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs b/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs index d485342c84b20..ef7f5e6916b6b 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/esm/binding.rs @@ -92,7 +92,6 @@ impl EsmBinding { visit_mut_prop, |prop: &mut Prop| { if let Prop::Shorthand(ident) = prop { - // TODO: Merge with the above condition when https://rust-lang.github.io/rfcs/2497-if-let-chains.html lands. match &imported_ident { ImportedIdent::Module(imported_ident) => { *prop = Prop::KeyValue(KeyValueProp { diff --git a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs index 145c1a693b6be..c11d07af74853 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs @@ -3039,9 +3039,15 @@ async fn require_resolve_visitor( Ok(if args.len() == 1 { let pat = js_value_to_pattern(&args[0]); let request = Request::parse(pat.clone()); - let resolved = cjs_resolve_source(origin, request, None, true) - .resolve() - .await?; + let resolved = cjs_resolve_source( + origin, + request, + CommonJsReferenceSubType::Undefined, + None, + true, + ) + .resolve() + .await?; let mut values = resolved .primary_sources() .await? diff --git a/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs b/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs index 4becb1d9e72a7..bdf49bd5b9dc3 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/require_context.rs @@ -31,6 +31,7 @@ use turbopack_core::{ module::Module, module_graph::ModuleGraph, reference::{ModuleReference, ModuleReferences}, + reference_type::CommonJsReferenceSubType, resolve::{ModuleResolveResult, origin::ResolveOrigin, parse::Request}, source::Source, }; @@ -196,9 +197,15 @@ impl RequireContextMap { let request = Request::parse(origin_relative.clone().into()) .to_resolved() .await?; - let result = cjs_resolve(origin, *request, issue_source, is_optional) - .to_resolved() - .await?; + let result = cjs_resolve( + origin, + *request, + CommonJsReferenceSubType::Undefined, + issue_source, + is_optional, + ) + .to_resolved() + .await?; map.insert( context_relative.clone(), diff --git a/turbopack/crates/turbopack-ecmascript/src/typescript/mod.rs b/turbopack/crates/turbopack-ecmascript/src/typescript/mod.rs index 4388fad979863..4175e6d0cea95 100644 --- a/turbopack/crates/turbopack-ecmascript/src/typescript/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/typescript/mod.rs @@ -205,7 +205,13 @@ impl CompilerReference { impl ModuleReference for CompilerReference { #[turbo_tasks::function] fn resolve_reference(&self) -> Vc { - cjs_resolve(*self.origin, *self.request, None, false) + cjs_resolve( + *self.origin, + *self.request, + CommonJsReferenceSubType::Undefined, + None, + false, + ) } } @@ -281,7 +287,13 @@ impl TsNodeRequireReference { impl ModuleReference for TsNodeRequireReference { #[turbo_tasks::function] fn resolve_reference(&self) -> Vc { - cjs_resolve(*self.origin, *self.request, None, false) + cjs_resolve( + *self.origin, + *self.request, + CommonJsReferenceSubType::Undefined, + None, + false, + ) } } diff --git a/turbopack/crates/turbopack-nodejs/src/chunking_context.rs b/turbopack/crates/turbopack-nodejs/src/chunking_context.rs index 535fd67cd6fbf..558290ac78b41 100644 --- a/turbopack/crates/turbopack-nodejs/src/chunking_context.rs +++ b/turbopack/crates/turbopack-nodejs/src/chunking_context.rs @@ -484,9 +484,7 @@ impl ChunkingContext for NodeJsChunkingContext { _module_graph: Vc, _availability_info: AvailabilityInfo, ) -> Result> { - // TODO(alexkirsz) This method should be part of a separate trait that is - // only implemented for client/edge runtimes. - bail!("the build chunking context does not support evaluated chunk groups") + bail!("the Node.js chunking context does not support evaluated chunk groups") } #[turbo_tasks::function] diff --git a/turbopack/crates/turbopack-resolve/src/ecmascript.rs b/turbopack/crates/turbopack-resolve/src/ecmascript.rs index c45d1c0b99c23..4d11c186896c3 100644 --- a/turbopack/crates/turbopack-resolve/src/ecmascript.rs +++ b/turbopack/crates/turbopack-resolve/src/ecmascript.rs @@ -104,11 +104,11 @@ pub async fn esm_resolve( pub async fn cjs_resolve( origin: Vc>, request: Vc, + ty: CommonJsReferenceSubType, issue_source: Option, is_optional: bool, ) -> Result> { - // TODO pass CommonJsReferenceSubType - let ty = ReferenceType::CommonJs(CommonJsReferenceSubType::Undefined); + let ty = ReferenceType::CommonJs(ty); let options = apply_cjs_specific_options(origin.resolve_options(ty.clone()).await?) .resolve() .await?; @@ -119,11 +119,11 @@ pub async fn cjs_resolve( pub async fn cjs_resolve_source( origin: ResolvedVc>, request: ResolvedVc, + ty: CommonJsReferenceSubType, issue_source: Option, is_optional: bool, ) -> Result> { - // TODO pass CommonJsReferenceSubType - let ty = ReferenceType::CommonJs(CommonJsReferenceSubType::Undefined); + let ty = ReferenceType::CommonJs(ty); let options = apply_cjs_specific_options(origin.resolve_options(ty.clone()).await?) .resolve() .await?; diff --git a/turbopack/crates/turbopack-tests/tests/snapshot.rs b/turbopack/crates/turbopack-tests/tests/snapshot.rs index ca2b7a478a530..2507613e23967 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot.rs +++ b/turbopack/crates/turbopack-tests/tests/snapshot.rs @@ -321,7 +321,8 @@ async fn run_test_operation(resource: RcStr) -> Result> { let module_rules = ModuleRule::new( conditions, vec![ModuleRuleEffect::ExtendEcmascriptTransforms { - prepend: ResolvedVc::cell(vec![ + preprocess: ResolvedVc::cell(vec![]), + main: ResolvedVc::cell(vec![ EcmascriptInputTransform::Plugin(ResolvedVc::cell(Box::new( EmotionTransformer::new(&EmotionTransformConfig::default()) .expect("Should be able to create emotion transformer"), @@ -330,7 +331,7 @@ async fn run_test_operation(resource: RcStr) -> Result> { StyledComponentsTransformer::new(&StyledComponentsTransformConfig::default()), ) as _)), ]), - append: ResolvedVc::cell(vec![]), + postprocess: ResolvedVc::cell(vec![]), }], ); let asset_context: Vc> = Vc::upcast(ModuleAssetContext::new( @@ -559,14 +560,7 @@ async fn walk_asset( diff(path.clone(), asset.content()).await?; } - queue.extend( - asset - .references() - .await? - .iter() - .copied() - .flat_map(ResolvedVc::try_downcast::>), - ); + queue.extend(asset.references().await?.iter().copied()); Ok(()) } diff --git a/turbopack/crates/turbopack/src/lib.rs b/turbopack/crates/turbopack/src/lib.rs index eebe8672d570a..678164f2e6202 100644 --- a/turbopack/crates/turbopack/src/lib.rs +++ b/turbopack/crates/turbopack/src/lib.rs @@ -12,7 +12,6 @@ pub mod global_module_ids; mod graph; pub mod module_options; pub mod transition; -pub(crate) mod unsupported_sass; use anyhow::{Result, bail}; use css::{CssModuleAsset, ModuleCssAsset}; @@ -80,17 +79,23 @@ async fn apply_module_type( let module_type = &*module_type.await?; Ok(ProcessResult::Module(match module_type { ModuleType::Ecmascript { - transforms, + preprocess, + main, + postprocess, options, } | ModuleType::Typescript { - transforms, + preprocess, + main, + postprocess, tsx: _, analyze_types: _, options, } | ModuleType::TypescriptDeclaration { - transforms, + preprocess, + main, + postprocess, options, } => { let context_for_module = match module_type { @@ -107,7 +112,11 @@ async fn apply_module_type( let mut builder = EcmascriptModuleAsset::builder( source, ResolvedVc::upcast(context_for_module), - *transforms, + preprocess + .extend(**main) + .extend(**postprocess) + .to_resolved() + .await?, *options, module_asset_context .compile_time_info() @@ -555,28 +564,44 @@ async fn process_default_internal( ModuleRuleEffect::ModuleType(module) => { current_module_type = Some(module.clone()); } - ModuleRuleEffect::ExtendEcmascriptTransforms { prepend, append } => { + ModuleRuleEffect::ExtendEcmascriptTransforms { + preprocess: extend_preprocess, + main: extend_main, + postprocess: extend_postprocess, + } => { current_module_type = match current_module_type { Some(ModuleType::Ecmascript { - transforms, + preprocess, + main, + postprocess, options, }) => Some(ModuleType::Ecmascript { - transforms: prepend - .extend(*transforms) - .extend(**append) + preprocess: extend_preprocess + .extend(*preprocess) + .to_resolved() + .await?, + main: extend_main.extend(*main).to_resolved().await?, + postprocess: postprocess + .extend(**extend_postprocess) .to_resolved() .await?, options, }), Some(ModuleType::Typescript { - transforms, + preprocess, + main, + postprocess, tsx, analyze_types, options, }) => Some(ModuleType::Typescript { - transforms: prepend - .extend(*transforms) - .extend(**append) + preprocess: extend_preprocess + .extend(*preprocess) + .to_resolved() + .await?, + main: extend_main.extend(*main).to_resolved().await?, + postprocess: postprocess + .extend(**extend_postprocess) .to_resolved() .await?, tsx, diff --git a/turbopack/crates/turbopack/src/module_options/mod.rs b/turbopack/crates/turbopack/src/module_options/mod.rs index 3d71f94998871..e946dfe47fffd 100644 --- a/turbopack/crates/turbopack/src/module_options/mod.rs +++ b/turbopack/crates/turbopack/src/module_options/mod.rs @@ -149,7 +149,9 @@ impl ModuleOptions { .. } = *module_options_context.await?; - let mut transforms = vec![]; + let mut ts_preprocess = vec![]; + let mut ecma_preprocess = vec![]; + let mut postprocess = vec![]; // Order of transforms is important. e.g. if the React transform occurs before // Styled JSX, there won't be JSX nodes for Styled JSX to transform. @@ -158,7 +160,7 @@ impl ModuleOptions { if let Some(enable_jsx) = enable_jsx { let jsx = enable_jsx.await?; - transforms.push(EcmascriptInputTransform::React { + postprocess.push(EcmascriptInputTransform::React { development: jsx.development, refresh: jsx.react_refresh, import_source: ResolvedVc::cell(jsx.import_source.clone()), @@ -178,11 +180,11 @@ impl ModuleOptions { let ecmascript_options_vc = ecmascript_options.resolved_cell(); if let Some(environment) = environment { - transforms.push(EcmascriptInputTransform::PresetEnv(environment)); + postprocess.push(EcmascriptInputTransform::PresetEnv(environment)); } if let Some(enable_typeof_window_inlining) = enable_typeof_window_inlining { - transforms.push(EcmascriptInputTransform::GlobalTypeofs { + postprocess.push(EcmascriptInputTransform::GlobalTypeofs { window_value: match enable_typeof_window_inlining { TypeofWindow::Object => rcstr!("object"), TypeofWindow::Undefined => rcstr!("undefined"), @@ -214,43 +216,30 @@ impl ModuleOptions { None }; - let vendor_transforms = Vc::::cell(vec![]); - let ts_app_transforms = if let Some(transform) = &ts_transform { - let base_transforms = if let Some(decorators_transform) = &decorators_transform { - vec![decorators_transform.clone(), transform.clone()] - } else { - vec![transform.clone()] - }; - Vc::::cell( - base_transforms - .iter() - .cloned() - .chain(transforms.iter().cloned()) - .collect(), - ) - } else { - Vc::cell(transforms.clone()) - }; - - // Apply decorators transform for the ModuleType::Ecmascript as well after - // constructing ts_app_transforms. Ecmascript can have decorators for - // the cases of 1. using jsconfig, to enable ts-specific runtime - // decorators (i.e legacy) 2. ecma spec decorators - // - // Since typescript transform (`ts_app_transforms`) needs to apply decorators - // _before_ stripping types, we create ts_app_transforms first in a - // specific order with typescript, then apply decorators to app_transforms. - let app_transforms = Vc::::cell( + if let Some(ts_transform) = &ts_transform { if let Some(decorators_transform) = &decorators_transform { - vec![decorators_transform.clone()] + ts_preprocess.splice(0..0, [decorators_transform.clone(), ts_transform.clone()]); } else { - vec![] + ts_preprocess.splice(0..0, [ts_transform.clone()]); } - .iter() - .cloned() - .chain(transforms.iter().cloned()) - .collect(), - ); + } + if let Some(decorators_transform) = &decorators_transform { + // Apply decorators transform for the ModuleType::Ecmascript as well after + // constructing ts_app_transforms. Ecmascript can have decorators for + // the cases of 1. using jsconfig, to enable ts-specific runtime + // decorators (i.e legacy) 2. ecma spec decorators + // + // Since typescript transform (`ts_app_transforms`) needs to apply decorators + // _before_ stripping types, we create ts_app_transforms first in a + // specific order with typescript, then apply decorators to app_transforms. + ecma_preprocess.splice(0..0, [decorators_transform.clone()]); + } + + let ts_preprocess = ResolvedVc::cell(ts_preprocess); + let ecma_preprocess = ResolvedVc::cell(ecma_preprocess); + let main = ResolvedVc::::cell(vec![]); + let postprocess = ResolvedVc::cell(postprocess); + let empty = ResolvedVc::::cell(vec![]); let mut rules = vec![ ModuleRule::new_all( @@ -268,14 +257,18 @@ impl ModuleOptions { RuleCondition::ContentTypeStartsWith("text/javascript".to_string()), ]), vec![ModuleRuleEffect::ModuleType(ModuleType::Ecmascript { - transforms: app_transforms.to_resolved().await?, + preprocess: ecma_preprocess, + main, + postprocess, options: ecmascript_options_vc, })], ), ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".mjs".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Ecmascript { - transforms: app_transforms.to_resolved().await?, + preprocess: ecma_preprocess, + main, + postprocess, options: EcmascriptOptions { specified_module_type: SpecifiedModuleType::EcmaScript, ..ecmascript_options @@ -286,7 +279,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".cjs".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Ecmascript { - transforms: app_transforms.to_resolved().await?, + preprocess: ecma_preprocess, + main, + postprocess, options: EcmascriptOptions { specified_module_type: SpecifiedModuleType::CommonJs, ..ecmascript_options @@ -297,7 +292,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".ts".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: false, analyze_types: enable_types, options: ecmascript_options_vc, @@ -306,7 +303,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".tsx".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: true, analyze_types: enable_types, options: ecmascript_options_vc, @@ -315,7 +314,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".mts".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: false, analyze_types: enable_types, options: EcmascriptOptions { @@ -328,7 +329,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".mtsx".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: true, analyze_types: enable_types, options: EcmascriptOptions { @@ -341,7 +344,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".cts".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: false, analyze_types: enable_types, options: EcmascriptOptions { @@ -354,7 +359,9 @@ impl ModuleOptions { ModuleRule::new_all( RuleCondition::ResourcePathEndsWith(".ctsx".to_string()), vec![ModuleRuleEffect::ModuleType(ModuleType::Typescript { - transforms: ts_app_transforms.to_resolved().await?, + preprocess: ts_preprocess, + main, + postprocess, tsx: true, analyze_types: enable_types, options: EcmascriptOptions { @@ -368,7 +375,9 @@ impl ModuleOptions { RuleCondition::ResourcePathEndsWith(".d.ts".to_string()), vec![ModuleRuleEffect::ModuleType( ModuleType::TypescriptDeclaration { - transforms: vendor_transforms.to_resolved().await?, + preprocess: empty, + main: empty, + postprocess: empty, options: ecmascript_options_vc, }, )], @@ -404,7 +413,9 @@ impl ModuleOptions { RuleCondition::ContentTypeEmpty, ]), vec![ModuleRuleEffect::ModuleType(ModuleType::Ecmascript { - transforms: vendor_transforms.to_resolved().await?, + preprocess: empty, + main: empty, + postprocess: empty, options: ecmascript_options_vc, })], ), diff --git a/turbopack/crates/turbopack/src/module_options/module_rule.rs b/turbopack/crates/turbopack/src/module_options/module_rule.rs index 66fb41f5736ce..9cf9f48fcb44c 100644 --- a/turbopack/crates/turbopack/src/module_options/module_rule.rs +++ b/turbopack/crates/turbopack/src/module_options/module_rule.rs @@ -67,11 +67,14 @@ impl ModuleRule { pub enum ModuleRuleEffect { ModuleType(ModuleType), /// Allow to extend an existing Ecmascript module rules for the additional - /// transforms. First argument will prepend the existing transforms, and - /// the second argument will append the new transforms. + /// transforms ExtendEcmascriptTransforms { - prepend: ResolvedVc, - append: ResolvedVc, + /// Transforms to run first: transpile TypeScript, decorators, ... + preprocess: ResolvedVc, + /// Transforms to execute on standard EcmaScript (plus JSX): styled-jsx, swc plugins, ... + main: ResolvedVc, + /// Transforms to run last: JSX, preset-env, scan for imports, ... + postprocess: ResolvedVc, }, SourceTransforms(ResolvedVc), Ignore, @@ -81,12 +84,22 @@ pub enum ModuleRuleEffect { #[derive(Hash, Debug, Clone)] pub enum ModuleType { Ecmascript { - transforms: ResolvedVc, + /// Transforms to run first: transpile TypeScript, decorators, ... + preprocess: ResolvedVc, + /// Transforms to execute on standard EcmaScript (plus JSX): styled-jsx, swc plugins, ... + main: ResolvedVc, + /// Transforms to run last: JSX, preset-env, scan for imports, ... + postprocess: ResolvedVc, #[turbo_tasks(trace_ignore)] options: ResolvedVc, }, Typescript { - transforms: ResolvedVc, + /// Transforms to run first: transpile TypeScript, decorators, ... + preprocess: ResolvedVc, + /// Transforms to execute on standard EcmaScript (plus JSX): styled-jsx, swc plugins, ... + main: ResolvedVc, + /// Transforms to run last: JSX, preset-env, scan for imports, ... + postprocess: ResolvedVc, // parse JSX syntax. tsx: bool, // follow references to imported types. @@ -95,7 +108,12 @@ pub enum ModuleType { options: ResolvedVc, }, TypescriptDeclaration { - transforms: ResolvedVc, + /// Transforms to run first: transpile TypeScript, decorators, ... + preprocess: ResolvedVc, + /// Transforms to execute on standard EcmaScript (plus JSX): styled-jsx, swc plugins, ... + main: ResolvedVc, + /// Transforms to run last: JSX, preset-env, scan for imports, ... + postprocess: ResolvedVc, #[turbo_tasks(trace_ignore)] options: ResolvedVc, }, diff --git a/turbopack/crates/turbopack/src/unsupported_sass.rs b/turbopack/crates/turbopack/src/unsupported_sass.rs deleted file mode 100644 index 7804c941aad43..0000000000000 --- a/turbopack/crates/turbopack/src/unsupported_sass.rs +++ /dev/null @@ -1,108 +0,0 @@ -//! TODO(WEB-741) Remove this file once Sass is supported. - -use anyhow::Result; -use turbo_rcstr::rcstr; -use turbo_tasks::{ResolvedVc, Vc}; -use turbo_tasks_fs::{FileSystemPath, glob::Glob}; -use turbopack_core::{ - issue::{Issue, IssueExt, IssueSeverity, IssueStage, OptionStyledString, StyledString}, - reference_type::ReferenceType, - resolve::{ - ResolveResultOption, - parse::Request, - plugin::{AfterResolvePlugin, AfterResolvePluginCondition}, - }, -}; - -/// Resolve plugins that warns when importing a sass file. -#[turbo_tasks::value] -pub(crate) struct UnsupportedSassResolvePlugin { - root: FileSystemPath, -} - -#[turbo_tasks::value_impl] -impl UnsupportedSassResolvePlugin { - #[turbo_tasks::function] - pub fn new(root: FileSystemPath) -> Vc { - UnsupportedSassResolvePlugin { root }.cell() - } -} - -#[turbo_tasks::value_impl] -impl AfterResolvePlugin for UnsupportedSassResolvePlugin { - #[turbo_tasks::function] - async fn after_resolve_condition(&self) -> Result> { - Ok(AfterResolvePluginCondition::new( - self.root.root().owned().await?, - Glob::new(rcstr!("**/*.{sass,scss}")), - )) - } - - #[turbo_tasks::function] - async fn after_resolve( - &self, - fs_path: FileSystemPath, - lookup_path: FileSystemPath, - _reference_type: ReferenceType, - request: ResolvedVc, - ) -> Result> { - let extension = fs_path.extension(); - if ["sass", "scss"].contains(&extension) { - UnsupportedSassModuleIssue { - file_path: lookup_path, - request, - } - .resolved_cell() - .emit(); - } - - Ok(ResolveResultOption::none()) - } -} - -#[turbo_tasks::value(shared)] -struct UnsupportedSassModuleIssue { - // TODO(PACK-4879): The `file_path` is incorrect for this issue and we should supply - // detailed source information. - file_path: FileSystemPath, - request: ResolvedVc, -} - -#[turbo_tasks::value_impl] -impl Issue for UnsupportedSassModuleIssue { - fn severity(&self) -> IssueSeverity { - IssueSeverity::Warning - } - - #[turbo_tasks::function] - async fn title(&self) -> Result> { - Ok(StyledString::Text( - format!( - "Unsupported Sass request: {}", - self.request.await?.request().unwrap_or(rcstr!("N/A")) - ) - .into(), - ) - .cell()) - } - - #[turbo_tasks::function] - fn file_path(&self) -> Vc { - self.file_path.clone().cell() - } - - #[turbo_tasks::function] - fn description(&self) -> Vc { - Vc::cell(Some( - StyledString::Text(rcstr!( - "Turbopack does not yet support importing Sass modules." - )) - .resolved_cell(), - )) - } - - #[turbo_tasks::function] - fn stage(&self) -> Vc { - IssueStage::Unsupported.cell() - } -}