React Native 0.85 (2026): ์๋ก์ด ์ ๋๋ฉ์ด์ ๋ฐฑ์๋, ์๊ฒฉํ TypeScript API ๋ฐ ๋ฉด์ ์ง๋ฌธ
React Native 0.85์ ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋, ํฌ์คํธ ๋ธ๋ฆฌ์ง ์ํคํ ์ฒ, Metro TLS์ ๋ํด ์ฝ๋ ์์ ์ ๋ฉด์ ์ง๋ฌธ์ ํตํด ์ฌ์ธต ๋ถ์ํฉ๋๋ค.

React Native 0.85๋ 2026๋ 4์์ ์ถ์๋์ด, ํ๋ ์์ํฌ ์ฐฝ์ค ์ด๋ ๊ฐ์ฅ ์ค์ํ ์ ๋๋ฉ์ด์ ์์คํ ๊ฐํธ์ ์ ๊ณตํฉ๋๋ค. 58๋ช ์ ๊ธฐ์ฌ์๊ฐ ์ฐธ์ฌํ 604๊ฐ์ ์ปค๋ฐ์ ํฌํจํ๋ ์ด๋ฒ ๋ฆด๋ฆฌ์ค์์๋ ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋(Shared Animation Backend)๋ฅผ ๋์ ํ๊ณ , ํฌ์คํธ ๋ธ๋ฆฌ์ง ์ ํ์ ์๋ฃํ๋ฉฐ, ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ ์ํ Metro TLS ์ง์์ ์ถ๊ฐํฉ๋๋ค.
React Native 0.85๋ Animated์ Reanimated ์ ๋๋ฉ์ด์ ์์ง์ ๋จ์ผ ๊ณต์ ๋ฐฑ์๋๋ก ํตํฉํฉ๋๋ค. width, height, flex์ ๊ฐ์ ๋ ์ด์์ ์์ฑ์ useNativeDriver: true๋ก ์ ๋๋ฉ์ด์ ํ ์ ์๊ฒ ๋์์ต๋๋ค. 5๋ ์ด์ ๊ฐ๋ฐ์๋ค์ ์ข์ ์์ผฐ๋ ์ ํ์ด ๋ง์นจ๋ด ํด๊ฒฐ๋์์ต๋๋ค.
๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋: Animated์ Reanimated์ ํตํฉ
React Native 0.85์ ํต์ฌ ๊ธฐ๋ฅ์ Software Mansion๊ณผ์ ํ์ ์ผ๋ก ๊ฐ๋ฐ๋ ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋์ ๋๋ค. ์ด์ ์๋ ๋ด์ฅ Animated ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ปค๋ฎค๋ํฐ Reanimated ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ์กฐ์ ๋ฃจํ๋ฅผ ์ ์งํ์ต๋๋ค. ๊ฐ ์์คํ ์ด ๊ณ ์ ํ ๋ด๋ถ ๋ก์ง์ผ๋ก ์ ๋๋ฉ์ด์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ฉํ๋ฉด์, ํ์ชฝ์ ์ฑ๋ฅ ๊ฐ์ ์ด ๋ค๋ฅธ ์ชฝ์ ํํ์ ์ค ์ ์๋ ์ฌ์ผ๋กํ๋ ์ํ๊ณ๋ฅผ ํ์ฑํ๊ณ ์์์ต๋๋ค.
๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋๋ ํต์ฌ ์ ๋๋ฉ์ด์ ์ ๋ฐ์ดํธ ๋ก์ง์ React Native ๋ ๋๋ฌ์ ์ง์ ๋ด์ฅํฉ๋๋ค. ์ ๋๋ฉ์ด์ ๊ธฐ๋ฐ ์ปค๋ฐ์ด React ๋ฐ ์คํ์ผ๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Shadow Tree๋ฅผ ๋๊ณ ๊ฒฝ์ํ๋ ๋์ , ์ ์ฉ ๋ฉ์ปค๋์ฆ์ด ๋ณ๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
import { Animated, Pressable, View, StyleSheet } from 'react-native';
import { useRef, useState } from 'react';
function ExpandableCard() {
const widthAnim = useRef(new Animated.Value(120)).current;
const heightAnim = useRef(new Animated.Value(80)).current;
const [expanded, setExpanded] = useState(false);
const toggle = () => {
const toWidth = expanded ? 120 : 300;
const toHeight = expanded ? 80 : 200;
// Layout props with useNativeDriver โ new in 0.85
Animated.parallel([
Animated.spring(widthAnim, {
toValue: toWidth,
useNativeDriver: true, // Now supports layout props
}),
Animated.spring(heightAnim, {
toValue: toHeight,
useNativeDriver: true,
}),
]).start();
setExpanded(!expanded);
};
return (
<Pressable onPress={toggle}>
<Animated.View
style={[
styles.card,
{ width: widthAnim, height: heightAnim },
]}
/>
</Pressable>
);
}
const styles = StyleSheet.create({
card: {
backgroundColor: '#61DAFB',
borderRadius: 8,
},
});0.85 ์ด์ ์๋ width๋ height์ ๊ฐ์ ๋ ์ด์์ ์์ฑ์ useNativeDriver: true๋ฅผ ์ค์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ถ๋๋ฌ์ด 60fps ์ ๋๋ฉ์ด์
(๋ค์ดํฐ๋ธ ๋๋ผ์ด๋ฒ ์ฌ์ฉ, transform๊ณผ opacity๋ก ์ ํ)๊ณผ ๋ ์ด์์ ๋ณ๊ฒฝ์ ์ํ ๋ฒ๋ฒ
์ด๋ JS ์ค๋ ๋ ์ ๋๋ฉ์ด์
์ฌ์ด์์ ์ ํํด์ผ ํ์ต๋๋ค. ๊ณต์ ์ ๋๋ฉ์ด์
๋ฐฑ์๋๋ ์ด 5๋
๋ ์ ํ์ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
์ ๋๋ฉ์ด์ ๋ฐฑ์๋์ ๋ด๋ถ ๋์ ์๋ฆฌ
์ด์ ์ -DRN_USE_ANIMATION_BACKEND ์ปดํ์ผ๋ฌ ํ๋๊ทธ ๋ค์ ์จ๊ฒจ์ ธ ์๋ C++ ์ ๋๋ฉ์ด์
๋ฐฑ์๋๊ฐ 0.85์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. ์ด ์์คํ
์ ๋ ๊ฐ์ง ์ ์ฉ ์
๋ฐ์ดํธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค:
- synchronouslyUpdateProps โ ๋ ์ด์์์ด ์๋ ๋ณ๊ฒฝ ์ฌํญ(opacity, transform)์ ์ํ ๋น ๋ฅธ ๊ฒฝ๋ก๋ก, ์ ์ฒด Fabric ์ปค๋ฐ ์ฌ์ดํด์ ์ฐํํฉ๋๋ค
- ์ ์ฒด Fabric ์ปค๋ฐ โ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ(width, height, flex, padding)์๋ง ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค
์ด ๋์ผ ๊ฒฝ๋ก ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ ๋จ์ํ opacity ํ์ด๋๋ ์ด์ ๊ณผ ๋์ผํ ์๋๋ฅผ ์ ์งํ๋ฉด์, ๋ ์ด์์ ์ ๋๋ฉ์ด์ ์ ํ๊ท ์์ด ๋ค์ดํฐ๋ธ ์ค๋ ๋ ์ฑ๋ฅ์ ํ๋ณดํ ์ ์์ต๋๋ค.
Reanimated 4.x(ํ์ฌ ๋ฒ ํ)๋ ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋์ ์์ ํ ํตํฉ๋ฉ๋๋ค. ๊ธฐ์กด Reanimated 3.x ์ํฌ๋ฆฟ์ ๊ณ์ ์๋ํ์ง๋ง, ๊ณต์ ๋ฐฑ์๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด ์ด์ ์๋ ๋ถ๊ฐ๋ฅํ๋ ์ฑ๋ฅ ํฅ์์ด ๊ฐ๋ฅํด์ง๋๋ค. ํนํ 120Hz์์ ์คํ๋๋ ๋ ์ด์์ ์ ๋๋ฉ์ด์ ์์ ํฐ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
ํฌ์คํธ ๋ธ๋ฆฌ์ง ์ํคํ ์ฒ: ๋ธ๋ฆฌ์ง์ ์์ ํ ์ ๊ฑฐ
React Native 0.85๋ ๋ธ๋ฆฌ์ง ํด๋ฐฑ์ด๋ ๋ ๊ฑฐ์ ์ํธ ์ด์ฉ ๋ ์ด์ด๊ฐ ์ ํ ์๋ ์ต์ด์ ์์ ๋ฆด๋ฆฌ์ค์ ๋๋ค. JSI(JavaScript Interface) ๊ธฐ๋ฐ์ ์๋ก์ด ์ํคํ ์ฒ๋ JavaScript์ ๋ค์ดํฐ๋ธ ์ฝ๋ ๊ฐ์ ์ง์ ์ ์ธ ๋๊ธฐ ํต์ ์ 2ms ๋ฏธ๋ง์ ์ธํฐ๋กญ ์ง์ฐ ์๊ฐ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
๋ฉด์ ์ค๋น๋ฅผ ์ํ ์ค์ง์ ์๋ฏธ:
// TurboModules now lazy-load by default in 0.85
// Cold-start memory reduced by ~40%
import { TurboModuleRegistry } from 'react-native';
// Module loads only when first accessed, not at app startup
const CameraModule = TurboModuleRegistry.getEnforcing('Camera');
// Direct synchronous call via JSI โ no bridge serialization
const hasPermission = CameraModule.checkPermission();0.85์์๋ TurboModules๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ฐ ๋ก๋๋์ด ์ฝ๋ ์คํํธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฝ 40% ๊ฐ์ํฉ๋๋ค. ๋ชจ๋ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ์ฆ์ ๋ฑ๋กํ๋ ์คํํธ์ ํ๋ํฐ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ์ด๋ React Native ์ฑ๋ฅ ์ต์ ํ์ ๊ดํ ๋ฉด์ ์์ ์์ฃผ ์ถ์ ๋๋ ์ฃผ์ ์ ๋๋ค.
Metro TLS: ๊ฐ๋ฐ ์๋ฒ์ HTTPS ์ง์
๊ธฐ์ ํ๋ก์ ๋ค์์ ์์ ํ๊ฑฐ๋ ๋ณด์ ์ ์ฉ API๋ฅผ ํ ์คํธํ๋ ์ํฐํ๋ผ์ด์ฆ ํ์ Metro์ HTTP ์ ์ฉ ๊ฐ๋ฐ ์๋ฒ์ ๋ํ ์ฐํ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค. Metro๋ ์ด์ TLS๋ฅผ ๋ค์ดํฐ๋ธ๋ก ์ง์ํฉ๋๋ค:
const fs = require('fs');
const { getDefaultConfig } = require('@react-native/metro-config');
const config = getDefaultConfig(__dirname);
// Enable HTTPS + WSS (Fast Refresh over secure WebSocket)
config.server.tls = {
ca: fs.readFileSync('./certs/ca.pem'),
cert: fs.readFileSync('./certs/cert.pem'),
key: fs.readFileSync('./certs/key.pem'),
};
module.exports = config;๋ก์ปฌ ๊ฐ๋ฐ ์ mkcert๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ CA ์ค์น ์์ด ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. TLS๊ฐ ํ์ฑํ๋๋ฉด Fast Refresh๊ฐ WSS๋ฅผ ํตํด ์๋ํ์ฌ ๋ณด์ ํ๊ฒฝ์์๋ ํซ ๋ฆฌ๋ก๋๊ฐ ์ ์์ ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค.
React Native ๋ฉด์ ์ค๋น๊ฐ ๋์ จ๋์?
์ธํฐ๋ํฐ๋ธ ์๋ฎฌ๋ ์ดํฐ, flashcards, ๊ธฐ์ ํ ์คํธ๋ก ์ฐ์ตํ์ธ์.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋
์ ๊ทธ๋ ์ด๋ ์ ์ฃผ์๊ฐ ํ์ํ ์ฌ๋ฌ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค:
Jest ํ๋ฆฌ์
๋ถ๋ฆฌ โ ๋ด์ฅ ํ๋ฆฌ์
์ด @react-native/jest-preset์ผ๋ก ์ด๋ํ์ต๋๋ค:
module.exports = {
preset: 'react-native',
};
// jest.config.js โ after
module.exports = {
preset: '@react-native/jest-preset',
};StyleSheet.absoluteFillObject ์ ๊ฑฐ โ StyleSheet.absoluteFill๋ก ๋์ฒดํฉ๋๋ค:
const overlay = StyleSheet.absoluteFillObject;
// After (0.85+)
const overlay = StyleSheet.absoluteFill;Node.js ๋ฒ์ ์๊ตฌ ์ฌํญ โ ์ต์ Node.js 20.19.4๊ฐ ํ์ํฉ๋๋ค. ๋ฒ์ 21๊ณผ 23(๋ชจ๋ EOL)์ ์ง์๋์ง ์์ต๋๋ค.
ํ
์คํธ ์ค๋ฒํ๋ก ๋์ ๋ณ๊ฒฝ โ borderRadius ๊ฒฝ๊ณ ๋ฐ์ ํ
์คํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์จ๊ฒจ์ง๋๋ค. ๋ฅ๊ทผ ๋ชจ์๋ฆฌ๋ฅผ ๋์ด ํ์๋๋ ํ
์คํธ์ ์์กดํ๋ ์ปดํฌ๋ํธ๋ ๋ช
์์ ์ผ๋ก overflow: 'visible' ์คํ์ผ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
ReactTextUpdate๊ฐ ๋ด๋ถ API๋ก ๋ณ๊ฒฝ๋๊ณ , ReactZIndexedViewGroup๊ณผ UIManagerHelper๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, CatalystInstanceImpl์ด ์์ ํ ์ ๊ฑฐ๋์์ต๋๋ค. ์ด๋ฌํ API์ ์ง์ ์ ๊ทผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ 0.85๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ ์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
DevTools: ์ฌ๋ฌ ๋๋ฒ๊ฑฐ ๋์ ์ฐ๊ฒฐ
React Native 0.85๋ ์ฌ๋ฌ Chrome DevTools Protocol(CDP) ์ฐ๊ฒฐ์ ๋์ ์ฌ์ฉ์ ์ง์ํฉ๋๋ค. VS Code, React Native DevTools, AI ์ฝ๋ฉ ์์ด์ ํธ๊ฐ ์๋ก์ ์ธ์ ์ ์ข ๋ฃํ์ง ์๊ณ ๋์์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด๋ ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ๊ฒฐํฉํ ๋๋ฒ๊น ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ ํ์ ํนํ ๊ด๋ จ์ด ์์ต๋๋ค. Android ๋คํธ์ํฌ ํจ๋์์๋ ์ด์ ๋ฒ์ ์์ ๋ฐ์ํ ์์ฒญ ๋ณธ๋ฌธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ๊ท๊ฐ ์์ ๋์์ต๋๋ค.
Shadow Tree ์ปค๋ฐ ๋ธ๋์นญ
์๋ก์ด Fabric ์ปค๋ฐ ๋ธ๋์นญ ๋ฉ์ปค๋์ฆ์ React Native๊ฐ Shadow Tree์ ์ ๋ฐ์ดํธ๋ฅผ ์ปค๋ฐํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ด์ ์๋ ์ ๋๋ฉ์ด์ ์ปค๋ฐ๊ณผ React ์ํ ์ ๋ฐ์ดํธ๊ฐ ๋์ผํ ์ปค๋ฐ ๊ฒฝ๋ก๋ฅผ ๋๊ณ ๊ฒฝ์ํ๋ฉด์, ๋ฆฌ๋ ๋๋ง์ ๋๋ฐํ๋ ๋ณต์กํ ์ ๋๋ฉ์ด์ ์ค์ ํ๋ ์ ๋๋กญ์ด ๋ฐ์ํ์ต๋๋ค.
๋ธ๋์นญ ๋ฉ์ปค๋์ฆ์ ์ด๋ฌํ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ์ ๋๋ฉ์ด์ ๋ฐฑ์๋๋ ์์ฒด ๋ธ๋์น์์ ์๋ํ๊ณ , React ์ปค๋ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์งํ๋ฉ๋๋ค. ๋ ๋ธ๋์น๋ ๊ฐ ํ๋ ์์ ๋์์ ์กฐ์ ๋์ด, ์ ๋๋ฉ์ด์ ํค๋๊ฐ ์๋ ๋ฆฌ์คํธ ์คํฌ๋กค ์ค์ ๋ฐ์ํ๋ ์๊ฐ์ ๊ธ๋ฆฌ์น๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
View Transition API (์ธํ๋ผ)
์๋ก์ด ๊ธฐ๋ฅ ํ๋๊ทธ viewTransitionEnabled๋ ๋ทฐ ๊ฐ ์ ๋๋ฉ์ด์
์ ํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํฅํ View Transition API์ ๊ธฐ๋ฐ์
๋๋ค. 0.85์์๋ ๊ธฐ๋ณธ๊ฐ์ด false๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, ์ฌ์ฉ์ ๋์ ๊ธฐ๋ฅ์ด ์๋ ์ธํ๋ผ ์์ค์ ์ค๋น ๋จ๊ณ์
๋๋ค. ์ด๋ ์น์ View Transitions API์ ์ ์ฌํ ๋ด์ฅ ๋ด๋น๊ฒ์ด์
์ ํ์ ํฅํ React Native์ ๋ฐฉํฅ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
๋ฉด์ ์ง๋ฌธ: React Native 0.85 ์ํคํ ์ฒ
React Native ๋ฉด์ ์ ์ค๋นํ๋ ๋ถ๋ค์ ์ํด 0.85 ์ํคํ ์ฒ๋ฅผ ๋ฐ์ํ ํต์ฌ ์ง๋ฌธ์ ์ ๋ฆฌํฉ๋๋ค:
Q: ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋๊ฐ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น?
๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋๋ ์ด์ ์ ๋ถ๋ฆฌ๋์ด ์๋ ๋ ๊ฐ์ ์ ๋๋ฉ์ด์ ์กฐ์ ์์คํ (Animated์ Reanimated)์ React Native ์ฝ์ด์ ๋จ์ผ ์์ง์ผ๋ก ํตํฉํฉ๋๋ค. 0.85 ์ด์ ์๋ ํ ์์คํ ์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ๋ค๋ฅธ ์์คํ ์ ํํ์ ์ค ์ ์์์ต๋๋ค. ๊ณต์ ๋ฐฑ์๋๋ ๋ํ ๋ค์ดํฐ๋ธ ๋๋ผ์ด๋ฒ๋ก ๋ ์ด์์ ์์ฑ ์ ๋๋ฉ์ด์ ์ ๋ฐฉํดํ๋ ์ ํ์ ์ ๊ฑฐํฉ๋๋ค.
Q: 0.85์์ TurboModules๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ฐ ๋ก๋๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์คํํธ์ ์ ๋ชจ๋ TurboModules๋ฅผ ์ฆ์ ๋ฑ๋กํ๋ฉด ์ธ์ ๋์ ์ฌ์ฉ๋์ง ์์ ์ ์๋ ๋ชจ๋์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋น๋ฉ๋๋ค. ์ง์ฐ ๋ก๋๋ ์ฒซ ๋ฒ์งธ ์ ๊ทผ ์๊น์ง ์ธ์คํด์คํ๋ฅผ ์ง์ฐ์์ผ, ๊ฐ๋ฐ์ ๋์ API๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ์ฝ๋ ์คํํธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ 40% ์ ๊ฐํฉ๋๋ค.
Q: ์ ๋๋ฉ์ด์ ๋ฐฑ์๋์ ๋ ๊ฐ์ง ์ ๋ฐ์ดํธ ๊ฒฝ๋ก๋ฅผ ์ค๋ช ํ์ญ์์ค.
synchronouslyUpdateProps๋ Fabric ์ปค๋ฐ์ ํธ๋ฆฌ๊ฑฐํ์ง ์๊ณ ๋ ์ด์์์ด ์๋ ์์ฑ ๋ณ๊ฒฝ(opacity, transform)์ ์ฒ๋ฆฌํฉ๋๋ค. ์ ๋๋ฉ์ด์
์ด ๋ ์ด์์ ์์ฑ(width, height, padding)์ ์์ ํ ๋๋ ์ ์ ํ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ํด ์ ์ฒด Fabric ์ปค๋ฐ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ์ด ๋์ผ ๊ฒฝ๋ก ์ ๊ทผ ๋ฐฉ์์ ๋จ์ํ ์ ๋๋ฉ์ด์
์ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ๋ค์ดํฐ๋ธ ์ค๋ ๋์์์ ๋ ์ด์์ ์ ๋๋ฉ์ด์
์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Q: Shadow Tree ์ปค๋ฐ ๋ธ๋์นญ์ด๋ ๋ฌด์์ ๋๊น?
์ปค๋ฐ ๋ธ๋์นญ์ ์ ๋๋ฉ์ด์ ๊ตฌ๋ Shadow Tree ์ ๋ฐ์ดํธ์ React ์ํ ๊ตฌ๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ ๋ฆฝ์ ์ธ ๋ธ๋์น๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๊ฐ ๋ธ๋์น๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ปค๋ฐํ๊ณ , ํ๋ ์ ๊ฒฝ๊ณ์์ ์กฐ์ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋์ผํ ์ปค๋ฐ ๊ฒฝ๋ก๋ฅผ ๋๊ณ ๊ฒฝ์ํ๋ React ๋ฆฌ๋ ๋๋ง์ผ๋ก ์ธํ ์ ๋๋ฉ์ด์ ๋ฒ๋ฒ ์์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ์ ๋๋ฉ์ด์ ์์๊ฐ ์๋ ๋ฆฌ์คํธ ์คํฌ๋กค์์ ํ๋ ์ ๋๋กญ์ ์ผ๋ฐ์ ์ธ ์์ธ์ด์์ต๋๋ค.
์๊ฒฉํ TypeScript API: ๊ฐ์ ์ ์ฉ์ ํฅํ ์งํ
React Native 0.80์์ ์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ๋์ ๋ ์๊ฒฉํ TypeScript API๋ ๊ธฐ๋ณธ๊ฐ์ด ๋๊ธฐ ์ํ ๊ณผ์ ์ ๊ณ์ํ๊ณ ์์ต๋๋ค. ํ์ฑํ ๋ฐฉ๋ฒ:
{
"compilerOptions": {
"customConditions": ["react-native-strict-api"]
}
}์๊ฒฉํ API๋ ์๋์ผ๋ก ์ ์งํ๋ ๋์ ์์ค ์ฝ๋์์ ์ง์ ํ์
์ ์์ฑํฉ๋๋ค. ๊ณต๊ฐ react-native ์ธ๋ฑ์ค ํ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ํํ์ฌ, ๋ฒ์ ๊ฐ์ ๊นจ์ง๋ ๋ด๋ถ ํ์ผ ๊ฒฝ๋ก์ ๋ํ ์์กด์ ๋ฐฉ์งํฉ๋๋ค. 0.85๋ก ์
๊ทธ๋ ์ด๋ํ๋ ํ์ ํฅํ ๋ฆด๋ฆฌ์ค์์์ ๊ฐ์ ์ ์ฉ์ ๋๋นํ์ฌ ์ด ํ๋๊ทธ๋ฅผ ํ์ฑํํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
์ฐ์ต์ ์์ํ์ธ์!
๋ฉด์ ์๋ฎฌ๋ ์ดํฐ์ ๊ธฐ์ ํ ์คํธ๋ก ์ง์์ ํ ์คํธํ์ธ์.
๊ฒฐ๋ก
- ๊ณต์ ์ ๋๋ฉ์ด์
๋ฐฑ์๋๊ฐ Animated์ Reanimated๋ฅผ ํ๋์ ์์ง์ผ๋ก ํตํฉํ์ฌ,
useNativeDriver: true๋ฅผ ์ฌ์ฉํ ๋ ์ด์์ ์์ฑ ์ ๋๋ฉ์ด์ ์ ์ต์ด๋ก ์คํ - React Native 0.85๋ ๋ ๊ฑฐ์ ์ํธ ์ด์ฉ ์์ด ํฌ์คํธ ๋ธ๋ฆฌ์ง ์ ํ์ ์๋ฃํ๊ณ , ์ง์ฐ ๋ก๋ TurboModules๋ก ์ฝ๋ ์คํํธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 40% ์ ๊ฐ
- Metro TLS ์ง์์ผ๋ก ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ ํ๊ฒฝ์ HTTPS ์๊ตฌ ์ฌํญ ํด๊ฒฐ
- Shadow Tree ์ปค๋ฐ ๋ธ๋์นญ์ผ๋ก React ์ปค๋ฐ ๊ฒฝ์์ ์ํ ์ ๋๋ฉ์ด์ ๋ฒ๋ฒ ์ ์ ๊ฑฐ
- ์๊ฒฉํ TypeScript API๋ ํฅํ ๊ฐ์ ์ ์ฉ์ ๋๋นํ์ฌ ์ง๊ธ๋ถํฐ ํ์ฑํํด์ผ ํจ
- ์ ๊ทธ๋ ์ด๋ ์ ์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ(Jest ํ๋ฆฌ์ ๋ถ๋ฆฌ, StyleSheet.absoluteFillObject ์ ๊ฑฐ, Node.js 20+ ์๊ตฌ ์ฌํญ)์ ์ฒ๋ฆฌํด์ผ ํจ
์ฐ์ต์ ์์ํ์ธ์!
๋ฉด์ ์๋ฎฌ๋ ์ดํฐ์ ๊ธฐ์ ํ ์คํธ๋ก ์ง์์ ํ ์คํธํ์ธ์.

์์ฑ์
Anthony Fillion-Mailletํ์คํ ๊ฐ๋ฐ์, SharpSkill ์ฐฝ์ ์
10๋ ์ด์ ํ์คํ ๊ฐ๋ฐ์ ํด์์ต๋๋ค. SharpSkill์ ์ด์ํ๋ฉฐ ์ด๊ณณ์ ๊ฒ์๋๋ ๋ชจ๋ ๋ด์ฉ์ ์ฑ ์์ ์ง๋๋ค.
2026๋ 5์ 16์ผ ์ ๋ฐ์ดํธ
ํ๊ทธ
๊ณต์
๊ด๋ จ ๊ธฐ์ฌ

React Native์ TypeScript 2026: ํ์ ์์ ํ ์ํคํ ์ฒ์ ๋ฉด์ ์ง๋ฌธ
2026๋ React Native์์ TypeScript๋ฅผ ํ์ฉํ ํ์ ์์ ์ํคํ ์ฒ๋ฅผ ๋ค๋ฃน๋๋ค. Codegen, TurboModules, Strict TypeScript API, ํ์ ์์ ๋ด๋น๊ฒ์ด์ , ๋ฉด์ ์ง๋ฌธ์ ์ฝ๋ ์์ ์ ํจ๊ป ์ค๋ช ํฉ๋๋ค.

React Native 0.84์ Hermes V1: ์ฑ๋ฅ ์ต์ ํ, ํ๋ฆฌ์ปดํ์ผ ๋ฐ์ดํธ์ฝ๋, ๊ธฐ์ ๋ฉด์ ๊ฐ์ด๋
Hermes V1์ด React Native 0.84์ ๊ธฐ๋ณธ JavaScript ์์ง์ผ๋ก ์ฑํ๋์ด ๋ฐ์ดํธ์ฝ๋ ํ๋ฆฌ์ปดํ์ผ, Hades ๊ฐ๋น์ง ์ปฌ๋ ํฐ, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ํตํด ํ๊ธฐ์ ์ธ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์ ๋ฉด์ ์์ ์์ฃผ ์ถ์ ๋๋ Hermes ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์์ธํ ๋ค๋ฃน๋๋ค.

React Native 0.86 ์๋ฒฝ ๊ฐ์ด๋ 2026: Android 15 ์ฃ์งํฌ์ฃ์ง ์ง์๊ณผ DevTools ํ์ฉ๋ฒ
React Native 0.86์ Android 15 ์ฃ์งํฌ์ฃ์ง ์ง์, DevTools ๊ฐ์ ์ฌํญ, ๋ฉด์ ๋๋น ์ง๋ฌธ์ ์์ธํ ๋ค๋ฃน๋๋ค. ์ค์ฉ์ ์ธ ์ฝ๋ ์์ ์ ์ต์ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์๊ฐํฉ๋๋ค.