From c68a47b2d3a73a3501bbf4522c131a2df0391109 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Sun, 28 Dec 2025 17:24:03 +0000 Subject: [PATCH] CLI: only push a dioxus/* fallback feature if the crate being compiled (#5143) depends on the `dioxus` crate. --- packages/cli/src/build/request.rs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/packages/cli/src/build/request.rs b/packages/cli/src/build/request.rs index 5b8a64838..2f7c33f9a 100644 --- a/packages/cli/src/build/request.rs +++ b/packages/cli/src/build/request.rs @@ -826,12 +826,12 @@ impl BuildRequest { // Add any features required to turn on the client if let Some(renderer) = renderer { - features.push(Self::feature_for_platform_and_renderer( - main_package, - &triple, - renderer, - )); - features.dedup(); + if let Some(feature) = + Self::feature_for_platform_and_renderer(main_package, &triple, renderer) + { + features.push(feature); + features.dedup(); + } } // Set the profile of the build if it's not already set @@ -3571,7 +3571,7 @@ impl BuildRequest { package: &krates::cm::Package, triple: &Triple, renderer: Renderer, - ) -> String { + ) -> Option { // Try to find the feature that activates the dioxus feature for the given platform let dioxus_feature = renderer.feature_name(triple); @@ -3611,12 +3611,17 @@ impl BuildRequest { None }); - res.unwrap_or_else(|| { - let fallback = format!("dioxus/{dioxus_feature}"); - tracing::debug!( - "Could not find explicit feature for renderer {renderer}, passing `fallback` instead" - ); - fallback + res.or_else(|| { + let depends_on_dioxus = package.dependencies.iter().any(|dep| dep.name == "dioxus"); + if depends_on_dioxus { + let fallback = format!("dioxus/{dioxus_feature}"); + tracing::debug!( + "Could not find explicit feature for renderer {renderer}, passing `fallback` instead" + ); + Some(fallback) + } else { + None + } }) }