안녕하세요, 여러분! 오늘은 React Native 0.77의 주요 업데이트 내용을 간략하게 정리해보려고 합니다. 📝 이번 버전에서는 새로운 스타일링 기능, Android의 16KB 페이지 지원, Swift 템플릿 등 다양한 변화가 포함되어 있어요. 그럼 주요 업데이트를 하나씩 살펴볼까요?
React Native 0.77에서는 레이아웃, 사이징, 블렌딩을 더욱 간편하게 할 수 있는 새로운 CSS 속성들이 추가되었습니다. 🖌️
display: contentsdisplay: contents는 요소를 레이아웃 구조에서 제거하고, 자식 요소들을 그대로 렌더링하도록 합니다. 이를 통해 불필요한 래퍼 요소를 줄이고, CSS 스타일링을 간소화할 수 있어요.
display: contents 스타일 적용 가능 여부안녕하세요! 😊 display: contents을 사용하면서 스타일을 적용할 수 있는지 궁금하신가요? 함께 살펴볼게요! 🔍✨
display: contents는 요소 자체의 레이아웃 박스를 제거하고, 자식 요소들이 부모의 직접 자식으로 렌더링되도록 합니다. 따라서, 일부 스타일은 적용이 가능하지만, 일부는 적용되지 않습니다. 🛠️
color, font-size, font-weight 등 텍스트 속성은 자식 요소에 상속되어 적용됩니다. 📝margin, padding, border 등은 요소 자체가 박스를 생성하지 않기 때문에 적용되지 않습니다. 🚫display, position, flex 등 레이아웃을 조절하는 속성도 영향을 미치지 않습니다.import React from "react";
import { View, Text } from "react-native";
import "./styles/StyledContainer.css";
function StyledContainer() {
return (
<View className="container">
<Text>안녕하세요!</Text>
</View>
);
}
export default StyledContainer;
.container {
display: contents;
color: blue; /* 적용 가능 */
background-color: red; /* 적용되지 않음 */
}
위 예시에서 container에 display: contents를 설정하면, color: blue는 텍스트에 적용되지만, background-color: red는 적용되지 않습니다. 🟦❌
display: contents는 레이아웃을 단순화하고 불필요한 래퍼 요소를 줄이는 데 유용하지만, 스타일 적용에 제한이 있으므로 필요에 맞게 신중하게 사용해야 합니다! 🧠👍
궁금한 점 있으면 언제든지 물어봐주세요! 😊✨
#해시태그 #CSS #ReactNative #프로그래밍 #WebDevelopment #스타일링 #개발자팁
boxSizing prop은 요소의 사이징 방식을 정의합니다. border-box와 content-box 중 선택할 수 있으며, 기본값은 border-box입니다. 이는 웹의 기본값과 다르니 유의하세요. 🛡️
📌 중요 알림:
React Native 0.77 이전 버전에서는 box-sizing 속성을 지원하지 않았습니다. 이번 업데이트로 웹 스타일링과의 일관성이 개선되었어요! 🎉
과거 동작 방식 🔄
border-box 방식 적용0.77 변경 사항 🆕
// 이제 웹처럼 동작 선택 가능!
<View style={{
boxSizing: 'content-box',
width: 100,
padding: 20 // → 실제 너비 140
}}>
mixBlendMode prop은 요소의 색상이 다른 요소와 어떻게 블렌딩될지를 제어합니다. 다양한 블렌딩 모드를 지원하여 더 풍부한 디자인이 가능해졌습니다.
🎚️ isolation 속성 추가
isolation: isolate를 설정하면 뷰가 별도의 스태킹 컨텍스트를 형성합니다. 특정 영역의 블렌딩 범위를 제한할 때 유용해요!
<View style={{isolation: 'isolate'}}> {/* 이 영역 안에서만 블렌딩 */}
<Image source={...} style={styles.image} />
<View style={[styles.overlay, {mixBlendMode: 'multiply'}]} />
</View>
📜 Blend Mode 값 종류
| 모드 | 설명 |
|---|---|
normal | 기본 블렌딩 없음 |
multiply | 색상 값 곱셈 (어두운 효과) |
screen | 반전 색상 곱셈 후 재반전 (밝은 효과) |
overlay | 배경색에 따라 multiply/screen 조합 |
darken | 더 어두운 색상 선택 |
lighten | 더 밝은 색상 선택 |
color-dodge | 배경 밝게 (검정색 무효화) |
color-burn | 배경 어둡게 (흰색 무효화) |
hard-light | 강한 스포트라이트 효과 |
soft-light | 부드러운 스포트라이트 효과 |
difference | 색상 차이 반전 |
exclusion | difference보다 낮은 대비 |
hue | 소스 색조 + 배경 채도/명도 |
saturation | 소스 채도 + 배경 색조/명도 |
color | 소스 색조/채도 + 배경 명도 |
luminosity | 소스 명도 + 배경 색조/채도 |
추가된 핵심 기능:
outlineWidth, outlineStyle, outlineSpread, outlineColor 등의 속성들이 추가되어 레이아웃에 영향을 주지 않고 요소를 강조할 수 있습니다.
React Native 0.77은 Android 16KB 메모리 페이지 크기를 완벽하게 지원합니다. 이는 성능 향상과 더불어 미래 디바이스 호환성을 준비하기 위한 중요한 업데이트입니다. 🚀
Android 15에서 targetSdk 35로 빌드 시 강제 엣지-투-엣지 디스플레이를 지원합니다. 기존 앱의 UI가 깨지지 않도록 react-native-safe-area-context를 사용하는 것이 권장됩니다.
참고:
react-native-safe-area-context를 사용하면 강제 엣지-투-엣지 디스플레이를 자동으로 처리해줍니다.Android 15은 16KB 메모리 페이지 크기를 지원하여, 앱의 성능을 향상시킵니다. React Native 0.77은 이를 완벽하게 지원하여 개발자들이 쉽게 테스트하고 앱을 출시할 수 있게 되었습니다. 📦
참고:
React Native 0.77에서는 커뮤니티 CLI와 템플릿에 주요 변경 사항이 포함되었습니다. 🛠️
react-native init 명령어 폐지이제부터는 react-native init 명령어를 사용할 수 없으며, 대신 다음 명령어를 사용해야 합니다:
npx create-expo-app MyProjectnpx @react-native-community/cli init MyProject --version latestiOS 템플릿이 Swift로 마이그레이션되었습니다. Objective-C를 선호하는 개발자도 여전히 지원되니 참고하세요.
예시:
npx @react-native-community/cli@latest init MyProject --template swift
주의사항:
console.log() 스트리밍 완전 제거 🚫# 기존 방식 (0.76 이전)
react-native log-android# React Native DevTools 사용
npx react-native start --devtools// 변경 전: 매 루프 종료시 상태 업데이트
// 변경 후: 상태 업데이트 중지
useNativeDriver: true 사용 시 주의 필요| 변경 유형 | 세부 내용 | 영향 범위 |
|---|---|---|
| Kotlin 2.0 | 2.0.21 버전 적용 | 전체 프로젝트 |
| API 개선 | ReactHost.createSurface() → Non-nullable | Kotlin 개발자 |
| 내부 API 제거 | 20+ 내부 API 사용 불가 | 커스텀 네이티브 모듈 |
CGColorRef → UIColor 전면 교체// 필수 구현 사항
[RCTDependencyProvider loadDependencies];# 0.78 미리 체험 (React 19 포함)
npx @react-native-community/cli init RN78Preview --version 0.78.0-rc.0React Native 0.77은 161명의 기여자가 참여한 1061개의 커밋으로 완성되었습니다. 모든 분들께 감사드립니다! 🎉
React Native 프로젝트를 0.77으로 업그레이드하려면 React Native Upgrade Helper를 참고하세요. Expo를 사용하는 경우, Expo SDK 52에서 지원됩니다.
더 자세한 내용은 React Native 공식 블로그를 참고해주세요! 📖✨
#해시태그 #ReactNative #업데이트 #모바일개발 #프로그래밍 #CSS #WebDevelopment #접근성 #개발자팁