React Native 0.85 āđƒāļ™āļ›āļĩ 2026: Animation Backend āđƒāļŦāļĄāđˆ, Strict TypeScript API āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

React Native 0.85 āđ€āļ›āļīāļ”āļ•āļąāļ§ Shared Animation Backend, āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ post-bridge āđāļĨāļ° Metro TLS āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđ€āļŠāļīāļ‡āļĨāļķāļāļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

React Native 0.85 Animation Backend

React Native 0.85 āļ‹āļķāđˆāļ‡āđ€āļ›āļīāļ”āļ•āļąāļ§āđƒāļ™āđ€āļ”āļ·āļ­āļ™āđ€āļĄāļĐāļēāļĒāļ™ 2026 āļ™āļģāđ€āļŠāļ™āļ­āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļĢāļ°āļšāļš animation āļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŠāļļāļ”āļ™āļąāļšāļ•āļąāđ‰āļ‡āđāļ•āđˆ framework āļ™āļĩāđ‰āļ–āļ·āļ­āļāļģāđ€āļ™āļīāļ”āļ‚āļķāđ‰āļ™ āļ”āđ‰āļ§āļĒ 604 commits āļˆāļēāļāļœāļđāđ‰āļĄāļĩāļŠāđˆāļ§āļ™āļĢāđˆāļ§āļĄ 58 āļ„āļ™ āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ™āļĩāđ‰āđ€āļ›āļīāļ”āļ•āļąāļ§ Shared Animation Backend āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļœāđˆāļēāļ™ post-bridge āđāļĨāļ°āđ€āļžāļīāđˆāļĄāļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš Metro TLS āļŠāļģāļŦāļĢāļąāļšāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ enterprise

āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļŠāļģāļ„āļąāļ

React Native 0.85 āļĢāļ§āļĄ engine animation āļ‚āļ­āļ‡ Animated āđāļĨāļ° Reanimated āđ€āļ›āđ‡āļ™āļŦāļ™āļķāđˆāļ‡ backend āđ€āļ”āļĩāļĒāļ§ āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī layout āļ­āļĒāđˆāļēāļ‡ width, height āđāļĨāļ° flex āļŠāļēāļĄāļēāļĢāļ–āļ—āļģ animation āļ”āđ‰āļ§āļĒ useNativeDriver: true āđ„āļ”āđ‰āđāļĨāđ‰āļ§ â€” āļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ„āļ§āļēāļĄāļĒāļļāđˆāļ‡āļĒāļēāļāđƒāļŦāđ‰āļ™āļąāļāļžāļąāļ’āļ™āļēāļĄāļēāļ™āļēāļ™āļāļ§āđˆāļēāļŦāđ‰āļēāļ›āļĩ

Shared Animation Backend: āļĢāļ§āļĄ Animated āđāļĨāļ° Reanimated āđ€āļ›āđ‡āļ™āļŦāļ™āļķāđˆāļ‡āđ€āļ”āļĩāļĒāļ§

āļŸāļĩāđ€āļˆāļ­āļĢāđŒāļŦāļĨāļąāļāļ‚āļ­āļ‡ React Native 0.85 āļ„āļ·āļ­ Shared Animation Backend āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļˆāļēāļāļ„āļ§āļēāļĄāļĢāđˆāļ§āļĄāļĄāļ·āļ­āļāļąāļš Software Mansion āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰ āđ„āļĨāļšāļĢāļēāļĢāļĩ Animated āļ—āļĩāđˆāļĄāļēāļžāļĢāđ‰āļ­āļĄāļĢāļ°āļšāļšāđāļĨāļ°āđ„āļĨāļšāļĢāļēāļĢāļĩāļŠāļļāļĄāļŠāļ™ Reanimated āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢ reconciliation loop āđāļĒāļāļˆāļēāļāļāļąāļ™ āđāļ•āđˆāļĨāļ°āļĢāļ°āļšāļšāļĄāļĩāļ•āļĢāļĢāļāļ°āļ āļēāļĒāđƒāļ™āļ‚āļ­āļ‡āļ•āļąāļ§āđ€āļ­āļ‡āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ animation updates āļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļšāļšāļ™āļīāđ€āļ§āļĻāđāļšāļšāđāļĒāļāļŠāđˆāļ§āļ™āļ—āļĩāđˆāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļĢāļ°āļšāļšāļŦāļ™āļķāđˆāļ‡āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āđ‡āļ™āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ•āđˆāļ­āļ­āļĩāļāļĢāļ°āļšāļšāļŦāļ™āļķāđˆāļ‡āđ„āļ”āđ‰

Shared Animation Backend āļĒāđ‰āļēāļĒāļ•āļĢāļĢāļāļ°āļŦāļĨāļąāļāļ‚āļ­āļ‡āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ• animation āđ‚āļ”āļĒāļ•āļĢāļ‡āđ€āļ‚āđ‰āļēāđ„āļ›āđƒāļ™ renderer āļ‚āļ­āļ‡ React Native āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđƒāļŦāđ‰ commits āļ—āļĩāđˆāđƒāļŠāđ‰ animation āđāļ‚āđˆāļ‡āļ‚āļąāļ™āļāļąāļ™āđƒāļ™ Shadow Tree āļĢāđˆāļ§āļĄāļāļąāļš React āđāļĨāļ°āđ„āļĨāļšāļĢāļēāļĢāļĩ styling āļāļĨāđ„āļāđ€āļ‰āļžāļēāļ°āļ—āļēāļ‡āļˆāļ°āļˆāļąāļ”āļāļēāļĢāđāļĒāļāļ•āđˆāļēāļ‡āļŦāļēāļ

AnimatedLayoutExample.tsxtypescript
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 āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē useNativeDriver: true āļšāļ™āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī layout āļ­āļĒāđˆāļēāļ‡ width āļŦāļĢāļ·āļ­ height āļˆāļ°āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļ™āļąāļāļžāļąāļ’āļ™āļēāļ•āđ‰āļ­āļ‡āđ€āļĨāļ·āļ­āļāļĢāļ°āļŦāļ§āđˆāļēāļ‡ animation āļ—āļĩāđˆāļĨāļ·āđˆāļ™āđ„āļŦāļĨ 60fps (native driver āļˆāļģāļāļąāļ”āđ€āļ‰āļžāļēāļ° transform āđāļĨāļ° opacity) āļŦāļĢāļ·āļ­ animation āļ—āļĩāđˆāļāļĢāļ°āļ•āļļāļāļšāļ™ JS-thread āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ layout Shared Animation Backend āđāļāđ‰āļ›āļąāļāļŦāļēāļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ—āļĩāđˆāļĄāļĩāļĄāļēāļ™āļēāļ™āļŦāđ‰āļēāļ›āļĩāļ™āļĩāđ‰

āļāļĨāđ„āļāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ āļēāļĒāđƒāļ™āļ‚āļ­āļ‡ Animation Backend

C++ Animation Backend āļ—āļĩāđˆāļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰āļ–āļđāļāļ„āļ§āļšāļ„āļļāļĄāļ”āđ‰āļ§āļĒ compiler flag -DRN_USE_ANIMATION_BACKEND āļ–āļđāļāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļ›āđ‡āļ™āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 0.85 āļĢāļ°āļšāļšāđƒāļŠāđ‰āļŠāļ­āļ‡āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āđ€āļ‰āļžāļēāļ°:

  • synchronouslyUpdateProps — āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ”āđˆāļ§āļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ—āļĩāđˆāđ„āļĄāđˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš layout (opacity, transforms) āļ—āļĩāđˆāļ‚āđ‰āļēāļĄāļ§āļ‡āļˆāļĢ Fabric commit āđāļšāļšāđ€āļ•āđ‡āļĄ
  • Full Fabric commit — āļ–āļđāļāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļ‰āļžāļēāļ°āđ€āļĄāļ·āđˆāļ­āļ•āđ‰āļ­āļ‡āļ„āļģāļ™āļ§āļ“ layout āđƒāļŦāļĄāđˆ (width, height, flex, padding)

āđāļ™āļ§āļ—āļēāļ‡āļŠāļ­āļ‡āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ™āļĩāđ‰āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļē animation opacity āđāļšāļšāļ‡āđˆāļēāļĒāļĒāļąāļ‡āļ„āļ‡āđ€āļĢāđ‡āļ§āđ€āļ—āđˆāļēāđ€āļ”āļīāļĄ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ animation layout āđ„āļ”āđ‰āļĢāļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž native-thread āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ regression

āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļāļąāļš Reanimated

Reanimated 4.x (āļ›āļąāļˆāļˆāļļāļšāļąāļ™āļ­āļĒāļđāđˆāđƒāļ™āļŠāđˆāļ§āļ‡ beta) āļĢāļ§āļĄāđ€āļ‚āđ‰āļēāļāļąāļš Shared Animation Backend āļ­āļĒāđˆāļēāļ‡āļŠāļĄāļšāļđāļĢāļ“āđŒ Worklet āļ‚āļ­āļ‡ Reanimated 3.x āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāļĒāļąāļ‡āļ„āļ‡āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰ āđāļ•āđˆāļāļēāļĢāļĒāđ‰āļēāļĒāđ„āļ›āļĒāļąāļ‡ shared backend āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ—āļĩāđˆāļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļĄāđˆāđ„āļ”āđ‰ — āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļš animation layout āļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆ 120Hz

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Post-Bridge: Bridge āļŦāļēāļĒāđ„āļ›āđāļĨāđ‰āļ§

React Native 0.85 āđ€āļ›āđ‡āļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āđ€āļŠāļ–āļĩāļĒāļĢāđāļĢāļāļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩ bridge fallback āđāļĨāļ°āđ„āļĄāđˆāļĄāļĩāļŠāļąāđ‰āļ™ interop āđāļšāļš legacy āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđƒāļŦāļĄāđˆāļ—āļĩāđˆāđƒāļŠāđ‰ JSI (JavaScript Interface) āđƒāļŦāđ‰āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđ‚āļ”āļĒāļ•āļĢāļ‡āđāļšāļš synchronous āļĢāļ°āļŦāļ§āđˆāļēāļ‡ JavaScript āđāļĨāļ°āđ‚āļ„āđ‰āļ” native āļ”āđ‰āļ§āļĒ interop latency āļ•āđˆāļģāļāļ§āđˆāļē 2ms

āļœāļĨāļāļĢāļ°āļ—āļšāđƒāļ™āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ:

TurboModuleExample.tsxtypescript
// 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();

TurboModules āđ‚āļŦāļĨāļ”āđāļšāļš lazy āđ€āļ›āđ‡āļ™āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 0.85 āļĨāļ”āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ cold-start āļĨāļ‡āđ€āļāļ·āļ­āļš 40% āļ‹āļķāđˆāļ‡āļ‚āļˆāļąāļ”āļšāļ—āļĨāļ‡āđ‚āļ—āļĐāļ”āđ‰āļēāļ™āļāļēāļĢāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļˆāļēāļāļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™ native module āļ—āļļāļāļ•āļąāļ§āđāļšāļš eager — āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž React Native

Metro TLS: HTTPS āļŠāļģāļŦāļĢāļąāļš Development Server

āļ—āļĩāļĄ enterprise āļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļ­āļĒāļđāđˆāļŦāļĨāļąāļ‡ corporate proxy āļŦāļĢāļ·āļ­āļ—āļ”āļŠāļ­āļš API āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāđ€āļ‰āļžāļēāļ° HTTPS āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰āļ•āđ‰āļ­āļ‡āļŦāļēāļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚āļ›āļąāļāļŦāļēāđ€āļ‰āļžāļēāļ°āļŦāļ™āđ‰āļēāļŠāļģāļŦāļĢāļąāļš dev server āļ‚āļ­āļ‡ Metro āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāđ€āļ‰āļžāļēāļ° HTTP āļ•āļ­āļ™āļ™āļĩāđ‰ Metro āļĢāļ­āļ‡āļĢāļąāļš TLS āđ‚āļ”āļĒāļ•āļĢāļ‡:

metro.config.jsjavascript
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 āļŠāļĢāđ‰āļēāļ‡ certificate āļ—āļĩāđˆāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āļąāđ‰āļ‡ CA āļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡ Fast Refresh āļ—āļģāļ‡āļēāļ™āļœāđˆāļēāļ™ WSS āđ€āļĄāļ·āđˆāļ­āđ€āļ›āļīāļ”āđƒāļŠāđ‰ TLS āļ—āļģāđƒāļŦāđ‰ hot-reload āļĒāļąāļ‡āļ„āļ‡āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āđƒāļ™āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāļ—āļĩāđˆāļ›āļĨāļ­āļ”āļ āļąāļĒ

āļžāļĢāđ‰āļ­āļĄāļ—āļĩāđˆāļˆāļ°āļžāļīāļŠāļīāļ•āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ React Native āđāļĨāđ‰āļ§āļŦāļĢāļ·āļ­āļĒāļąāļ‡āļ„āļĢāļąāļš?

āļāļķāļāļāļ™āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļš, flashcards āđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

Breaking Changes āđāļĨāļ°āļ„āļđāđˆāļĄāļ·āļ­āļāļēāļĢāļĒāđ‰āļēāļĒāļĢāļ°āļšāļš

Breaking changes āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāļ•āđ‰āļ­āļ‡āđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāļŠāļ™āđƒāļˆāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ­āļąāļ›āđ€āļāļĢāļ”:

āļāļēāļĢāđāļĒāļ Jest Preset — preset āļ—āļĩāđˆāļĄāļēāļžāļĢāđ‰āļ­āļĄāļĢāļ°āļšāļšāļ–āļđāļāļĒāđ‰āļēāļĒāđ„āļ›āļ—āļĩāđˆ @react-native/jest-preset:

jest.config.js — beforejavascript
module.exports = {
  preset: 'react-native',
};

// jest.config.js — after
module.exports = {
  preset: '@react-native/jest-preset',
};

StyleSheet.absoluteFillObject āļ–āļđāļāļĨāļš â€” āđƒāļŠāđ‰ StyleSheet.absoluteFill āđāļ—āļ™:

Before (0.84 and earlier)typescript
const overlay = StyleSheet.absoluteFillObject;

// After (0.85+)
const overlay = StyleSheet.absoluteFill;

āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ Node.js — āļ‚āļąāđ‰āļ™āļ•āđˆāļģ Node.js 20.19.4 āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 21 āđāļĨāļ° 23 (āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡ EOL) āđ„āļĄāđˆāļĢāļ­āļ‡āļĢāļąāļš

āļžāļĪāļ•āļīāļāļĢāļĢāļĄ text overflow — āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ™āļ­āļāļ‚āļ­āļšāđ€āļ‚āļ• borderRadius āļ–āļđāļāļ‹āđˆāļ­āļ™āđ‚āļ”āļĒāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ Component āļ—āļĩāđˆāļžāļķāđˆāļ‡āļžāļē overflow: visible āļŠāļģāļŦāļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ‚āļĒāļēāļĒāđ€āļāļīāļ™āļĄāļļāļĄāļĄāļ™ āļ•āđ‰āļ­āļ‡āļāļģāļŦāļ™āļ” overflow: 'visible' āļ­āļĒāđˆāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™

Breaking Changes āļšāļ™ Android

ReactTextUpdate āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™ internal, ReactZIndexedViewGroup āđāļĨāļ° UIManagerHelper āļ–āļđāļ deprecated āđāļĨāļ° CatalystInstanceImpl āļ–āļđāļāļĨāļšāļ­āļ­āļāļ—āļąāđ‰āļ‡āļŦāļĄāļ” āđ„āļĨāļšāļĢāļēāļĢāļĩāļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļ–āļķāļ‡ API āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āđ‚āļ”āļĒāļ•āļĢāļ‡āļ•āđ‰āļ­āļ‡āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļāđˆāļ­āļ™āļĒāđ‰āļēāļĒāđ„āļ› 0.85

DevTools: āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ Debugger āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļŦāļĨāļēāļĒāļ•āļąāļ§

React Native 0.85 āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ Chrome DevTools Protocol (CDP) āļŦāļĨāļēāļĒāļ•āļąāļ§āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ VS Code, React Native DevTools āđāļĨāļ° AI-powered coding agent āļŠāļēāļĄāļēāļĢāļ–āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āļąāļ”āđ€āļ‹āļŠāļŠāļąāļ™āļ‚āļ­āļ‡āļāļąāļ™āđāļĨāļ°āļāļąāļ™

āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļĄāļĩāļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡āļŠāļģāļŦāļĢāļąāļšāļ—āļĩāļĄāļ—āļĩāđˆāđƒāļŠāđ‰āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢ debug āļ—āļĩāđˆāļĢāļ§āļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŦāļĨāļēāļĒāļ•āļąāļ§ Network Panel āļšāļ™ Android āļāļđāđ‰āļ„āļ·āļ™āļāļēāļĢāđāļŠāļ”āļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ body āļ‚āļ­āļ‡ request āļŦāļĨāļąāļ‡āļˆāļēāļ regression āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļāđˆāļ­āļ™āļŦāļ™āđ‰āļē

Shadow Tree Commit Branching

āļāļĨāđ„āļ branching commit āļ‚āļ­āļ‡ Fabric āđƒāļŦāļĄāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ§āļīāļ˜āļĩāļ—āļĩāđˆ React Native commit āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āđ„āļ›āļĒāļąāļ‡ Shadow Tree āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ™āļąāļĒāļŠāļģāļ„āļąāļ āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰ commit āļ‚āļ­āļ‡ animation āđāļĨāļ°āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ• state āļ‚āļ­āļ‡ React āđāļ‚āđˆāļ‡āļ‚āļąāļ™āļāļąāļ™āđƒāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡ commit āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢ drop frame āļĢāļ°āļŦāļ§āđˆāļēāļ‡ animation āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ—āļĩāđˆāļāļĢāļ°āļ•āļļāđ‰āļ™ re-render

āļāļĨāđ„āļ branching āđāļĒāļāļ„āļ§āļēāļĄāļāļąāļ‡āļ§āļĨāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļ­āļ­āļāļˆāļēāļāļāļąāļ™ â€” Animation Backend āļ—āļģāļ‡āļēāļ™āļšāļ™ branch āļ‚āļ­āļ‡āļ•āļąāļ§āđ€āļ­āļ‡āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ commit āļ‚āļ­āļ‡ React āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļĒāļāļ­āļīāļŠāļĢāļ° āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡ branch āļˆāļ° reconcile āļāļąāļ™āļ—āļĩāđˆāļ—āđ‰āļēāļĒāđāļ•āđˆāļĨāļ° frame āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļē interleaving āļ—āļĩāđˆāļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ āļēāļžāļāļĢāļ°āļ•āļļāļāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāđ€āļĨāļ·āđˆāļ­āļ™āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļĄāļĩ animated header

View Transition API (āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™)

Feature flag āđƒāļŦāļĄāđˆ viewTransitionEnabled āļ„āļ§āļšāļ„āļļāļĄ View Transition API āļ—āļĩāđˆāļāļģāļĨāļąāļ‡āļˆāļ°āļĄāļē āļ‹āļķāđˆāļ‡āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ animated transition āļĢāļ°āļŦāļ§āđˆāļēāļ‡ view Flag āļ™āļĩāđ‰āļĄāļĩāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļ›āđ‡āļ™ false āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 0.85 — āļ™āļĩāđˆāļ„āļ·āļ­āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āđƒāļ™āļ­āļ™āļēāļ„āļ• āđ„āļĄāđˆāđƒāļŠāđˆāļŸāļĩāđ€āļˆāļ­āļĢāđŒāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āđƒāļ™āļ‚āļ“āļ°āļ™āļĩāđ‰ āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āđāļŠāļ”āļ‡āļ–āļķāļ‡āļ—āļīāļĻāļ—āļēāļ‡āļ‚āļ­āļ‡ React Native āļ—āļĩāđˆāļĄāļļāđˆāļ‡āļŠāļđāđˆ navigation transition āļ—āļĩāđˆāļĄāļēāļžāļĢāđ‰āļ­āļĄāļĢāļ°āļšāļš āļ„āļĨāđ‰āļēāļĒāļāļąāļš Web View Transitions API

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ React Native 0.85

āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āļ—āļĩāđˆāļāļģāļĨāļąāļ‡āđ€āļ•āļĢāļĩāļĒāļĄāļ•āļąāļ§āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ React Native āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āļ„āļ·āļ­āļ„āļģāļ–āļēāļĄāļŠāļģāļ„āļąāļāļ—āļĩāđˆāļŠāļ°āļ—āđ‰āļ­āļ™āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ 0.85:

Q: Shared Animation Backend āđāļāđ‰āļ›āļąāļāļŦāļēāļ­āļ°āđ„āļĢ?

Shared Animation Backend āļĢāļ§āļĄāļŠāļ­āļ‡āļĢāļ°āļšāļš animation reconciliation āļ—āļĩāđˆāđāļĒāļāļˆāļēāļāļāļąāļ™ (Animated āđāļĨāļ° Reanimated) āđ€āļ›āđ‡āļ™ engine āđ€āļ”āļĩāļĒāļ§āđƒāļ™āđāļāļ™āļŦāļĨāļąāļāļ‚āļ­āļ‡ React Native āļāđˆāļ­āļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 0.85 āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļĢāļ°āļšāļšāļŦāļ™āļķāđˆāļ‡āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āđ‡āļ™āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ•āđˆāļ­āļ­āļĩāļāļĢāļ°āļšāļšāļŦāļ™āļķāđˆāļ‡ Shared backend āļĒāļąāļ‡āļĨāļšāļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ—āļĩāđˆāļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢ animate āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī layout āļ”āđ‰āļ§āļĒ native driver

Q: āļ—āļģāđ„āļĄ TurboModules āļˆāļķāļ‡āđ‚āļŦāļĨāļ”āđāļšāļš lazy āđ€āļ›āđ‡āļ™āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ 0.85?

āļāļēāļĢāļĨāļ‡āļ—āļ°āđ€āļšāļĩāļĒāļ™ TurboModules āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđāļšāļš eager āļ•āļ­āļ™āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļŠāļģāļŦāļĢāļąāļš module āļ—āļĩāđˆāđāļ­āļ›āļ­āļēāļˆāđ„āļĄāđˆāđ€āļ„āļĒāđƒāļŠāđ‰āđƒāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ‹āļŠāļŠāļąāļ™ Lazy-loading āđ€āļĨāļ·āđˆāļ­āļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ instance āļ­āļ­āļāđ„āļ›āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļĄāļĩāļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļĢāļąāđ‰āļ‡āđāļĢāļ āļĨāļ”āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ cold-start āļ›āļĢāļ°āļĄāļēāļ“ 40% āđ‚āļ”āļĒāđ„āļĄāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™ API āļ—āļĩāđˆāļ™āļąāļāļžāļąāļ’āļ™āļēāđƒāļŠāđ‰āļ‡āļēāļ™

Q: āļ­āļ˜āļīāļšāļēāļĒāļŠāļ­āļ‡āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ­āļąāļ›āđ€āļ”āļ•āđƒāļ™ Animation Backend

synchronouslyUpdateProps āļˆāļąāļ”āļāļēāļĢāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāđ„āļĄāđˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš layout (opacity, transform) āđ‚āļ”āļĒāđ„āļĄāđˆāļāļĢāļ°āļ•āļļāđ‰āļ™ Fabric commit āđ€āļĄāļ·āđˆāļ­ animation āđāļāđ‰āđ„āļ‚āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī layout (width, height, padding) āļˆāļ°āļāļĢāļ°āļ•āļļāđ‰āļ™ full Fabric commit āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ„āļģāļ™āļ§āļ“ layout āđƒāļŦāļĄāđˆāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āđāļ™āļ§āļ—āļēāļ‡āļŠāļ­āļ‡āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ™āļĩāđ‰āļĢāļąāļāļĐāļēāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļģāļŦāļĢāļąāļš animation āļ­āļĒāđˆāļēāļ‡āļ‡āđˆāļēāļĒāļžāļĢāđ‰āļ­āļĄāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ animation layout āļšāļ™ native thread

Q: Shadow Tree commit branching āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

Commit branching āđāļĒāļāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ• Shadow Tree āļ—āļĩāđˆāļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ”āđ‰āļ§āļĒ animation āļ­āļ­āļāļˆāļēāļāļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•āļ—āļĩāđˆāļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™āļ”āđ‰āļ§āļĒ state āļ‚āļ­āļ‡ React āđ€āļ›āđ‡āļ™ branch āļ­āļīāļŠāļĢāļ° āđāļ•āđˆāļĨāļ° branch commit āđāļĒāļāļ­āļīāļŠāļĢāļ°āļˆāļēāļāļāļąāļ™ āđ‚āļ”āļĒ reconcile āļ—āļĩāđˆāļ‚āļ­āļšāđ€āļ‚āļ•āļ‚āļ­āļ‡ frame āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāļāļ‚āļ­āļ‡ animation āļ—āļĩāđˆāđ€āļāļīāļ”āļˆāļēāļ re-render āļ‚āļ­āļ‡ React āļ—āļĩāđˆāđāļ‚āđˆāļ‡āļ‚āļąāļ™āđƒāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡ commit āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ â€” āļŠāļēāđ€āļŦāļ•āļļāļ—āļąāđˆāļ§āđ„āļ›āļ‚āļ­āļ‡āļāļēāļĢ drop frame āđ€āļĄāļ·āđˆāļ­āđ€āļĨāļ·āđˆāļ­āļ™āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļĄāļĩāļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļš animation

Strict TypeScript API: āļĄāļļāđˆāļ‡āļŠāļđāđˆāļāļēāļĢāļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰

Strict TypeScript API āļ—āļĩāđˆāđ€āļ›āļīāļ”āļ•āļąāļ§āđāļšāļš opt-in āđƒāļ™ React Native 0.80 āļ”āļģāđ€āļ™āļīāļ™āđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ•āđˆāļ­āđ„āļ›āđ€āļžāļ·āđˆāļ­āđ€āļ›āđ‡āļ™āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ āļāļēāļĢāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™:

tsconfig.jsonjson
{
  "compilerOptions": {
    "customConditions": ["react-native-strict-api"]
  }
}

Strict API āļŠāļĢāđ‰āļēāļ‡āļ›āļĢāļ°āđ€āļ āļ—āļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āļĒāļ•āļĢāļ‡āļˆāļēāļāļ‹āļ­āļĢāđŒāļŠāđ‚āļ„āđ‰āļ”āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āļ”āļđāđāļĨāļĢāļąāļāļĐāļēāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡ āļˆāļģāļāļąāļ”āļāļēāļĢ export āđ€āļ‰āļžāļēāļ°āđ„āļŸāļĨāđŒ index react-native āļŠāļēāļ˜āļēāļĢāļ“āļ° āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļžāļķāđˆāļ‡āļžāļēāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āđ„āļŸāļĨāđŒāļ āļēāļĒāđƒāļ™āļ—āļĩāđˆāļ­āļēāļˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ āļ—āļĩāļĄāļ—āļĩāđˆāļ­āļąāļ›āđ€āļāļĢāļ”āđ€āļ›āđ‡āļ™ 0.85 āļ„āļ§āļĢāđ€āļ›āļīāļ”āđƒāļŠāđ‰ flag āļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āđ€āļ•āļĢāļĩāļĒāļĄāļžāļĢāđ‰āļ­āļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰āđƒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ­āļ™āļēāļ„āļ•

āđ€āļĢāļīāđˆāļĄāļāļķāļāļ‹āđ‰āļ­āļĄāđ€āļĨāļĒ!

āļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļŠāļĢāļļāļ›

  • Shared Animation Backend āļĢāļ§āļĄ Animated āđāļĨāļ° Reanimated āđ€āļ›āđ‡āļ™ engine āđ€āļ”āļĩāļĒāļ§ āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ animation āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī layout āļ”āđ‰āļ§āļĒ useNativeDriver: true āđ€āļ›āđ‡āļ™āļ„āļĢāļąāđ‰āļ‡āđāļĢāļ
  • React Native 0.85 āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļœāđˆāļēāļ™ post-bridge āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ legacy interop āļĨāļ”āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ cold-start 40% āļœāđˆāļēāļ™ TurboModules āđāļšāļš lazy-loaded
  • āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš Metro TLS āđāļāđ‰āļ›āļąāļāļŦāļēāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ” HTTPS āļŠāļģāļŦāļĢāļąāļšāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ development āļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ
  • Shadow Tree commit branching āļ‚āļˆāļąāļ”āļāļēāļĢāļāļĢāļ°āļ•āļļāļāļ‚āļ­āļ‡ animation āļ—āļĩāđˆāđ€āļāļīāļ”āļˆāļēāļ commit āļ‚āļ­āļ‡ React āļ—āļĩāđˆāđāļ‚āđˆāļ‡āļ‚āļąāļ™āļāļąāļ™
  • Strict TypeScript API āļ„āļ§āļĢāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļąāđ‰āļ‡āđāļ•āđˆāļ•āļ­āļ™āļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āđ€āļ•āļĢāļĩāļĒāļĄāļžāļĢāđ‰āļ­āļĄāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļšāļąāļ‡āļ„āļąāļšāđƒāļŠāđ‰
  • āļ—āļĩāļĄāļ„āļ§āļĢāļˆāļąāļ”āļāļēāļĢ breaking changes (āļāļēāļĢāđāļĒāļ Jest preset, āļāļēāļĢāļĨāļš StyleSheet.absoluteFillObject, āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ” Node.js 20+) āļāđˆāļ­āļ™āļ­āļąāļ›āđ€āļāļĢāļ”

āđ€āļĢāļīāđˆāļĄāļāļķāļāļ‹āđ‰āļ­āļĄāđ€āļĨāļĒ!

āļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

Anthony Fillion-Maillet

āđ€āļ‚āļĩāļĒāļ™āđ‚āļ”āļĒ

Anthony Fillion-Maillet

āļ™āļąāļāļžāļąāļ’āļ™āļēāļŸāļđāļĨāļŠāđāļ•āļ āļœāļđāđ‰āļāđˆāļ­āļ•āļąāđ‰āļ‡ SharpSkill

āđ€āļ›āđ‡āļ™āļ™āļąāļāļžāļąāļ’āļ™āļēāļŸāļđāļĨāļŠāđāļ•āļāļĄāļēāļāļ§āđˆāļē 10 āļ›āļĩ āļ”āļđāđāļĨ SharpSkill āđāļĨāļ°āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ—āļļāļāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļœāļĒāđāļžāļĢāđˆāļ—āļĩāđˆāļ™āļĩāđˆ

āļ­āļąāļ›āđ€āļ”āļ•āđ€āļĄāļ·āđˆāļ­ 16 āļžāļĪāļĐāļ āļēāļ„āļĄ 2569

āđāļ—āđ‡āļ

#react-native
#animation
#typescript
#interview

āđāļŠāļĢāđŒ

āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡

React Native TypeScript Type-Safe Architecture

React Native āļāļąāļš TypeScript āļ›āļĩ 2026: āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ Type-Safe āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

āļŠāļĢāđ‰āļēāļ‡āđāļ­āļ› React Native āđāļšāļš type-safe āļ”āđ‰āļ§āļĒ TypeScript, Codegen, TurboModules āđāļĨāļ° Strict TypeScript API āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļĢāļđāļ›āđāļšāļšāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ, typed navigation āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™āļ›āļĩ 2026

Hermes V1 āđƒāļ™ React Native 0.84

Hermes V1 āđƒāļ™ React Native 0.84: āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž, Bytecode Precompiled āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļ„āļđāđˆāļĄāļ·āļ­āđ€āļŠāļīāļ‡āļĨāļķāļāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš JavaScript engine Hermes V1 āđƒāļ™ React Native 0.84 āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļāļēāļĢāļ„āļ­āļĄāđ„āļžāļĨāđŒ bytecode, garbage collector Hades, āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„

āđāļœāļ™āļ āļēāļžāđ€āļ§āļīāļĢāđŒāļāđ‚āļŸāļĨāļ§āđŒāļāļēāļĢāļžāļąāļ’āļ™āļē edge-to-edge Android āļ”āđ‰āļ§āļĒ React Native 0.86

React Native 0.86 āđƒāļ™āļ›āļĩ 2026: Edge-to-Edge Android, DevTools āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ React Native 0.86 āļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš edge-to-edge Android 15, āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ DevTools āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđ€āļŠāļīāļ‡āļ›āļāļīāļšāļąāļ•āļī āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒāļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”