React-Native 0.75 버전이 릴리즈 됐습니다 👏 (CHANGELOG)
gap 스타일에 % 지원
number만 지원되던 gap 스타일에 이제%를 사용할 수 있습니다.<View style={{ gap: '10%' }}> <Box /> <Box /> <Box /> </View>translation 에 % 지원
마찬가지로 transform 스타일에 translate 에
%를 사용할 수 있습니다.<View style={{ backgroundColor: 'red', width: 100, height: 100, transform: [{translateY: '100%'}, {translateX: '100%'}] }} />

react-native-mmkv, react-native-vision-camera 등의 메인테이너 mrousavy 가 네이티브 모듈을 엄청난 성능으로 C++, Kotlin, Swift 로 작성할 수 있는 Nitro module 을 작업하고 있는것도 한가지 흥미로운 소식입니다. (그의 고군분투)
벤치마크: https://github.com/mrousavy/NitroBenchmarks
코드: https://github.com/mrousavy/nitrohttps://www.npmjs.com/package/react-native-nitro-modules?activeTab=code (깃허브는 현재 비공개 상태)
Sunsetting react-native init
놀랍게도 이제 새로운 프로젝트를 생성할 때 Expo 를 사용해서 생성하도록 권장이 됩니다.
react-native init커맨드는 올해가 지나면 더이상 사용할 수 없습니다. 템플릿은 https://github.com/react-native-community/template 레포로 이동됐고, 이제 새로운 프로젝트를 생성하려면npx @react-native-community/cli init를 사용해야 합니다.![]()
의도는 명확해 보입니다. Expo 프레임워크(혹은 커뮤니티) 진영으로 넘어가야만 사용자들에게 추가적인 이득을 더 얻을 수 있게 만들겠다는 방향성이 보입니다. 이러한 프레임워크에 대한 전폭적인 지원은 코어 팀과의 긴밀한 협력으로 이어질거고, 이는 더욱 안정되고 발전된 생태계로 이어지지 않을까 생각을 해봅니다.
Auto linking 성능 개선
https://github.com/react-native-community/discussions-and-proposals/discussions/814
0.75 버전에서 Expo 를 사용할 경우, auto linking 이 Android에서 ~6.5배, iOS ~1.5배 빨라진다고 합니다.
TouchablesOpacity 와 TouchableHighlights 컴포넌트가 함수형 컴포넌트로 변환됐습니다.
이제 아래와 같이 타입을 사용하게 되면 타입 에러가 발생합니다.
import { TouchableHighlight } from 'react-native';
const ref = useRef<TouchableHighlight>();
//                ^^^ TS2749: TouchableHighlight refers to a value, but is being used as a type here.
//                            Did you mean typeof TouchableHighlight?
아래처럼 변경이 필요합니다.
import { TouchableHighlight } from 'react-native';
const ref = useRef<React.ElementRef<typeof TouchableHighlight>>();
ReactContext
ReactContext 와 ReactApplicationContext 가 추상 클래스로 변경되었습니다. 대신 BridgeReactContext 와 BridgelessReactContext 를 사용하세요ReactContext.initializeWithInstance() 대신 BridgeReactInstance 를 사용하세요BridgelessReactContext.getJavaScriptContextHolder() 와 ReactContext.getRuntimeExecutor() 대신 BridgelessCatalystInstance 를 사용하세요PushNotificationIOS
[RCTPushNotificationManager didReceiveLocalNotification], [RCTPushNotificationManager didReceiveRemoteNotification] 제거PushNotificationIOS.alertAction, PushNotificationIOS.repeatInterval 제거Image.getSize, Image.getSizeWithHeaders 메소드에 콜백을 넘기지 않을 경우 promise 지원 (2c1bcbac8)StyleSheet.compose의 퍼포먼스 최적화 (34331af9c)Animated 컴포넌트들의 퍼포먼스 개선 (452373b5b)Pressable 컴포넌트의 퍼포먼스 개선 (cfa784c5c)ScrollView의 maintainVisibleContentPosition 속성이 Android에서 제대로 동작하지 않던 버그 수정 (a9e6759bb, 252ef19c8d)LogBox에서 컴포넌트 스택 지원 (#43166)TextInput에 모든 returnKeyType 지원 (#43362)resizeMultiplier 프롭 추가 (#44803)Text, TextInput에서 overflow 적용 가능, ScrollView 자식 요소에 borderRadius 같은 요소 적용 가능 (#44734)borderRadius의 버그 수정 (#44529, #44602)