From ceda5aa563367fc4c655b5abf9f67655cf646c2c Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Wed, 19 Nov 2025 09:38:27 -0600 Subject: [PATCH 1/2] fix default with optional props --- packages/core-macro/src/props/mod.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/core-macro/src/props/mod.rs b/packages/core-macro/src/props/mod.rs index 31b62945cd..a13587cd7f 100644 --- a/packages/core-macro/src/props/mod.rs +++ b/packages/core-macro/src/props/mod.rs @@ -238,9 +238,10 @@ mod field_info { || !builder_attr.ignore_option && type_from_inside_option(&field.ty).is_some(); if !builder_attr.strip_option && strip_option_auto { builder_attr.strip_option = true; - builder_attr.default = Some( - syn::parse(quote!(::core::default::Default::default()).into()).unwrap(), - ); + // only change the default if it isn't manually set above + builder_attr.default.get_or_insert_with(|| { + syn::parse(quote!(::core::default::Default::default()).into()).unwrap() + }); } Ok(FieldInfo { From 21b11a90ea6777205c73571ee8e6b90b5658867d Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Wed, 19 Nov 2025 12:24:28 -0600 Subject: [PATCH 2/2] fix core macro tests --- packages/core-macro/tests/rsx.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core-macro/tests/rsx.rs b/packages/core-macro/tests/rsx.rs index f25b1b05b6..596864ebd7 100644 --- a/packages/core-macro/tests/rsx.rs +++ b/packages/core-macro/tests/rsx.rs @@ -35,13 +35,13 @@ mod test_default_into { pub str_default: String, // Test options - #[props(into, default = Some("abc"))] + #[props(into, default = Some("abc".into()))] pub opt_into_w_default_val: Option, #[props(into, default)] pub opt_into_w_default: Option, - #[props(default = Some("abc"))] + #[props(default = Some("abc".into()))] pub opt_default: Option, // Test no default