From 95f9a41e7b60a9cd387edd1e4ccb150dbf68de3a Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Fri, 26 Jun 2026 14:12:45 -0700 Subject: [PATCH 1/4] fix(0.81): add zero-initialization in RCTComponentData --- .../Tests/Views/RCTComponentDataTests.mm | 150 ++++++++++++++++++ .../React/Views/RCTComponentData.mm | 2 +- 2 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 packages/react-native/React/Tests/Views/RCTComponentDataTests.mm diff --git a/packages/react-native/React/Tests/Views/RCTComponentDataTests.mm b/packages/react-native/React/Tests/Views/RCTComponentDataTests.mm new file mode 100644 index 000000000000..1b4161c1d716 --- /dev/null +++ b/packages/react-native/React/Tests/Views/RCTComponentDataTests.mm @@ -0,0 +1,150 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import + +@interface RCTComponentDataTestViewManager : RCTViewManager +@end + +@implementation RCTComponentDataTestViewManager + ++ (NSArray *)propConfig_customInt +{ + return @[ @"int" ]; +} + ++ (NSString *)moduleName +{ + return @"RCTComponentDataTestView"; +} + +- (RCTPlatformView *)view +{ + return [RCTPlatformView new]; +} + +@end + +@interface RCTComponentDataNoGetterTarget : NSObject +@property (nonatomic, assign, readonly) int storedValue; +@property (nonatomic, assign, readonly) NSInteger setterCallCount; +@end + +@implementation RCTComponentDataNoGetterTarget { + int _storedValue; + NSInteger _setterCallCount; +} + +- (void)setCustomInt:(int)value +{ + _storedValue = value; + _setterCallCount += 1; +} + +- (int)storedValue +{ + return _storedValue; +} + +- (NSInteger)setterCallCount +{ + return _setterCallCount; +} + +- (NSNumber *)reactTag +{ + return @1; +} + +@end + +@interface RCTComponentDataGetterTarget : NSObject +@property (nonatomic, assign, readonly) int storedValue; +@end + +@implementation RCTComponentDataGetterTarget { + int _storedValue; +} + +- (void)setCustomInt:(int)value +{ + _storedValue = value; +} + +- (int)customInt +{ + return _storedValue; +} + +- (int)storedValue +{ + return _storedValue; +} + +- (NSNumber *)reactTag +{ + return @2; +} + +@end + +@interface RCTComponentDataTests : XCTestCase +@end + +@implementation RCTComponentDataTests + +- (RCTComponentData *)makeComponentData +{ + return [[RCTComponentData alloc] initWithManagerClass:[RCTComponentDataTestViewManager class] + bridge:nil + eventDispatcher:nil]; +} + +- (void)testNoGetterResetsToZeroAfterNonNullSet +{ + RCTComponentData *componentData = [self makeComponentData]; + RCTComponentDataNoGetterTarget *target = [RCTComponentDataNoGetterTarget new]; + + [componentData setProps:@{ @"customInt" : @42 } forView:(id)target]; + XCTAssertEqual(target.storedValue, 42); + + XCTAssertNoThrow([ + componentData setProps:@{ @"customInt" : [NSNull null] } forView:(id)target]); + XCTAssertEqual(target.storedValue, 0); +} + +- (void)testFirstNullIsNoOpForNoGetter +{ + RCTComponentData *componentData = [self makeComponentData]; + RCTComponentDataNoGetterTarget *target = [RCTComponentDataNoGetterTarget new]; + + [target setCustomInt:7]; + NSInteger callCountBefore = target.setterCallCount; + + [componentData setProps:@{ @"customInt" : [NSNull null] } forView:(id)target]; + + XCTAssertEqual(target.storedValue, 7); + XCTAssertEqual(target.setterCallCount, callCountBefore); +} + +- (void)testGetterPathStillRestoresOriginalDefault +{ + RCTComponentData *componentData = [self makeComponentData]; + RCTComponentDataGetterTarget *target = [RCTComponentDataGetterTarget new]; + + [target setCustomInt:9]; + + [componentData setProps:@{ @"customInt" : @42 } forView:(id)target]; + XCTAssertEqual(target.storedValue, 42); + + [componentData setProps:@{ @"customInt" : [NSNull null] } forView:(id)target]; + XCTAssertEqual(target.storedValue, 9); +} + +@end diff --git a/packages/react-native/React/Views/RCTComponentData.mm b/packages/react-native/React/Views/RCTComponentData.mm index f74a65edf66d..e52ec9d71b5e 100644 --- a/packages/react-native/React/Views/RCTComponentData.mm +++ b/packages/react-native/React/Views/RCTComponentData.mm @@ -286,7 +286,7 @@ - (RCTPropBlock)createPropBlock:(NSString *)name isShadowView:(BOOL)isShadowView #define RCT_CASE(_value, _type) \ case _value: { \ __block BOOL setDefaultValue = NO; \ - __block _type defaultValue; \ + __block _type defaultValue{}; \ _type (*convert)(id, SEL, id) = (__typeof(convert))objc_msgSend; \ _type (*get)(id, SEL) = (__typeof(get))objc_msgSend; \ void (*set)(id, SEL, _type) = (__typeof(set))objc_msgSend; \ From 40af2e582e155e6d6609d8ad9270c4d70a07b040 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Fri, 26 Jun 2026 15:06:13 -0700 Subject: [PATCH 2/4] Include RCTComponentDataTests.m in RNTester unit tests --- .../RNTesterPods.xcodeproj/project.pbxproj | 66 ++++++++++++++++++- .../RCTComponentDataTests.m} | 0 2 files changed, 64 insertions(+), 2 deletions(-) rename packages/{react-native/React/Tests/Views/RCTComponentDataTests.mm => rn-tester/RNTesterUnitTests/RCTComponentDataTests.m} (100%) diff --git a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj index 90e6c295ce0e..842c7c003929 100644 --- a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj +++ b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj @@ -19,6 +19,8 @@ 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; 409F3AA7B46A343B8F9B9C4D /* libPods-RNTester-visionOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 48FE22C718456032D87881A5 /* libPods-RNTester-visionOS.a */; }; 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; + 6621675A2FEF2F19000DE81C /* RCTComponentDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 662167592FEF2F19000DE81C /* RCTComponentDataTests.m */; }; + 6621675B2FEF2F19000DE81C /* RCTComponentDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 662167592FEF2F19000DE81C /* RCTComponentDataTests.m */; }; 8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; }; 832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; }; 918A215FD4EF5A828705D765 /* libPods-RNTester-macOSIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 474EC5CD967949D41527EECF /* libPods-RNTester-macOSIntegrationTests.a */; }; @@ -163,8 +165,9 @@ 493798899A582E2398010242 /* Pods-RNTester-visionOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-visionOS.release.xcconfig"; path = "Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS.release.xcconfig"; sourceTree = ""; }; 59BCC6695B251DC95CFA6A67 /* Pods-RNTester-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOS.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS.debug.xcconfig"; sourceTree = ""; }; 5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = ""; }; + 662167592FEF2F19000DE81C /* RCTComponentDataTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTComponentDataTests.m; sourceTree = ""; }; 66C3087F2D5BF762FE9E6422 /* Pods-RNTesterIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.debug.xcconfig"; sourceTree = ""; }; - 714974E163024D0E0A9FA2F5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; + 714974E163024D0E0A9FA2F5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; 77E101C7D8E22A8E70EE76DF /* libPods-RNTesterIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7CDA7A212644C6BB8C0D00D8 /* Pods-RNTesterIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.release.xcconfig"; sourceTree = ""; }; 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNTester/LaunchScreen.storyboard; sourceTree = ""; }; @@ -175,7 +178,7 @@ 9BD1BBDA193F1DB661EDB0CF /* Pods-RNTester-macOSIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester-macOSIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests.debug.xcconfig"; sourceTree = ""; }; 9C88AE81E635231C7F0F3BA4 /* libPods-RNTester-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTNetworkTaskTests.m; sourceTree = ""; }; - AC276E71CF27E40DFA22979F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; + AC276E71CF27E40DFA22979F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ../PrivacyInfo.xcprivacy; sourceTree = ""; }; AC474BFB29BBD4A1002BDAED /* RNTester.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = RNTester.xctestplan; path = RNTester/RNTester.xctestplan; sourceTree = ""; }; AC474BFE29BBF793002BDAED /* RNTester-macOS.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "RNTester-macOS.xctestplan"; sourceTree = ""; }; AC78A60A2B5738FB00121555 /* RNTester-visionOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester-visionOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -504,6 +507,7 @@ E7DB20B222B2BAA4005AC45F /* RCTAnimationUtilsTests.m */, E7DB20AB22B2BAA3005AC45F /* RCTBlobManagerTests.m */, E7DB20A922B2BAA3005AC45F /* RCTBundleURLProviderTests.m */, + 662167592FEF2F19000DE81C /* RCTComponentDataTests.m */, E7DB20CC22B2BAA5005AC45F /* RCTComponentPropsTests.m */, E7DB20CA22B2BAA5005AC45F /* RCTConvert_NSURLTests.m */, E7DB20CE22B2BAA5005AC45F /* RCTConvert_YGValueTests.m */, @@ -821,10 +825,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources.sh\"\n"; @@ -838,10 +846,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks.sh\"\n"; @@ -855,10 +867,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-resources.sh\"\n"; @@ -872,10 +888,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-frameworks.sh\"\n"; @@ -889,10 +909,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOS/Pods-RNTester-macOS-resources.sh\"\n"; @@ -950,10 +974,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources.sh\"\n"; @@ -967,10 +995,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSUnitTests/Pods-RNTester-macOSUnitTests-frameworks.sh\"\n"; @@ -1000,10 +1032,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks.sh\"\n"; @@ -1017,10 +1053,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-frameworks.sh\"\n"; @@ -1074,10 +1114,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-frameworks.sh\"\n"; @@ -1133,10 +1177,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-visionOS/Pods-RNTester-visionOS-resources.sh\"\n"; @@ -1194,10 +1242,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources.sh\"\n"; @@ -1233,10 +1285,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester-macOSIntegrationTests/Pods-RNTester-macOSIntegrationTests-resources.sh\"\n"; @@ -1250,10 +1306,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks.sh\"\n"; @@ -1301,6 +1361,7 @@ AC73FD0929B131E10003586F /* RCTURLUtilsTests.m in Sources */, AC73FD0029B131C30003586F /* RCTModuleInitNotificationRaceTests.m in Sources */, AC73FD0A29B131E50003586F /* RCTViewTests.m in Sources */, + 6621675A2FEF2F19000DE81C /* RCTComponentDataTests.m in Sources */, AC73FCFE29B131BE0003586F /* RCTJSONTests.m in Sources */, AC73FCF629B1319F0003586F /* RCTDevMenuTests.m in Sources */, AC73FD0329B131CD0003586F /* RCTMultipartStreamReaderTests.m in Sources */, @@ -1364,6 +1425,7 @@ E7DB20E522B2BAA6005AC45F /* RCTDevMenuTests.m in Sources */, E7DB20DE22B2BAA6005AC45F /* RCTUnicodeDecodeTests.m in Sources */, CD10C7A5290BD4EB0033E1ED /* RCTEventEmitterTests.m in Sources */, + 6621675B2FEF2F19000DE81C /* RCTComponentDataTests.m in Sources */, E7DB20E422B2BAA6005AC45F /* RCTFormatErrorTests.m in Sources */, E7DB20EB22B2BAA6005AC45F /* RCTConvert_YGValueTests.m in Sources */, E7DB20E922B2BAA6005AC45F /* RCTComponentPropsTests.m in Sources */, diff --git a/packages/react-native/React/Tests/Views/RCTComponentDataTests.mm b/packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m similarity index 100% rename from packages/react-native/React/Tests/Views/RCTComponentDataTests.mm rename to packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m From 896d2701c6af1ebe1cd0426a16c81eddb54bc387 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Fri, 26 Jun 2026 15:20:42 -0700 Subject: [PATCH 3/4] Add [macOS] tag --- packages/react-native/React/Views/RCTComponentData.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/React/Views/RCTComponentData.mm b/packages/react-native/React/Views/RCTComponentData.mm index e52ec9d71b5e..fe7e4fe5d881 100644 --- a/packages/react-native/React/Views/RCTComponentData.mm +++ b/packages/react-native/React/Views/RCTComponentData.mm @@ -286,7 +286,7 @@ - (RCTPropBlock)createPropBlock:(NSString *)name isShadowView:(BOOL)isShadowView #define RCT_CASE(_value, _type) \ case _value: { \ __block BOOL setDefaultValue = NO; \ - __block _type defaultValue{}; \ + __block _type defaultValue{}; /*[macOS]*/ \ _type (*convert)(id, SEL, id) = (__typeof(convert))objc_msgSend; \ _type (*get)(id, SEL) = (__typeof(get))objc_msgSend; \ void (*set)(id, SEL, _type) = (__typeof(set))objc_msgSend; \ From 0b2b99f3fb2f1317782fd4f68b25e6d55ea85c12 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Fri, 26 Jun 2026 15:45:33 -0700 Subject: [PATCH 4/4] Another [macOS] tag --- packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m b/packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m index 1b4161c1d716..e1f4f9544d27 100644 --- a/packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m +++ b/packages/rn-tester/RNTesterUnitTests/RCTComponentDataTests.m @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +// [macOS] + #import #import #import