diff --git a/packages/cli/src/serve/runner.rs b/packages/cli/src/serve/runner.rs index 04f237d8f..696c40a3c 100644 --- a/packages/cli/src/serve/runner.rs +++ b/packages/cli/src/serve/runner.rs @@ -166,11 +166,18 @@ impl AppServer { let client = AppBuilder::new(&client)?; let server = server.map(|server| AppBuilder::new(&server)).transpose()?; - let tw_watcher = TailwindCli::serve( - client.build.package_manifest_dir(), - client.build.config.application.tailwind_input.clone(), - client.build.config.application.tailwind_output.clone(), - ); + // Only start Tailwind watcher for client builds that serve assets (not server builds or fullstack mode) + // In fullstack mode, the client build's prebuild() handles Tailwind generation to avoid race conditions + let tw_watcher = if client.build.platform != Platform::Server && !fullstack { + TailwindCli::serve( + client.build.package_manifest_dir(), + client.build.config.application.tailwind_input.clone(), + client.build.config.application.tailwind_output.clone(), + ) + } else { + // Return a dummy task that immediately completes for server builds or fullstack mode + tokio::spawn(async { Ok(()) }) + }; _ = client.build.start_simulators().await;