CodeVetter · Repo Unpack · Feature catalog
react/react-native
User-facing surface = the react-native package's JS API (components + imperative APIs + hooks), the `react-native` CLI commands (start/bundle/codegen/spm via community-cli-plugin), the dev-middleware debugging endpoints, Web-platform APIs (observers, performance), and the published support packages (jest-preset, eslint configs, babel preset, metro-config). Deprecated APIs are still exported behind warnOnce() warnings; several experimental APIs ship under unstable_/experimental_ prefixes.
- Core components exported lazily via getters in index.js: View, Text, TextInput, Image, ScrollView, FlatList, SectionList, VirtualizedList, VirtualizedSectionList, Modal, Pressable, TouchableHighlight/NativeFeedback/Opacity/WithoutFeedback, Switch, RefreshControl, StatusBar, KeyboardAvoidingView, Button, ActivityIndicator.
- Imperative/manager APIs exported: AppRegistry, AppState, Animated, Appearance, BackHandler, DeviceEventEmitter, DeviceInfo, DevMenu, DevSettings, Dimensions, Keyboard, LayoutAnimation, Linking, LogBox, NativeAppEventEmitter, NativeComponentRegistry, NativeEventEmitter, NativeModules, Networking, PanResponder, PermissionsAndroid, PixelRatio, Platform, Settings, Share, StyleSheet, Systrace, ToastAndroid, TurboModuleRegistry, UIManager, Vibration, plus codegenNativeCommands/codegenNativeComponent/requireNativeComponent helpers.
- Deprecated-but-still-exported APIs emit warnOnce() on first access: DrawerLayoutAndroid, ImageBackground, SafeAreaView, InputAccessoryView, ProgressBarAndroid, Clipboard, PushNotificationIOS, UTFSequence — each message points at the community package that replaces it.
- InteractionManager was removed from core: in __DEV__ a definedProperty getter on the export throws an invariant directing users to requestIdleCallback.
- Experimental exports ship behind unstable_/experimental_ prefixes: unstable_VirtualView, unstable_VirtualArray, unstable_createVirtualCollectionView, unstable_VirtualColumn/Row/Generators, unstable_NativeText, unstable_NativeView, unstable_TextAncestorContext, experimental_LayoutConformance, unstable_batchedUpdates.
- Hooks exported: useAnimatedValue, useAnimatedValueXY, useAnimatedColor, useColorScheme, usePressability, useWindowDimensions.
- CLI commands come from @react-native/community-cli-plugin: 'start' (dev server: --port/--host/--https/--key/--cert/--watchFolders/--reset-cache/--no-interactive/--client-logs), 'bundle' (--entry-file/--platform/--dev/--minify/--bundle-output/--sourcemap-output/--assets-dest/--asset-catalog-dest/--unstable-transform-profile), 'codegen' (--path/--platform/--outputPath/--source), and 'spm'.
- Dev middleware mounts '/open-debugger' (openDebuggerMiddleware), serves the React Native DevTools frontend statically at '/debugger-frontend' from @react-native/debugger-frontend, and forwards everything else to InspectorProxy which owns WebSocket endpoints '/inspector/device' and '/inspector/debug' for CDP traffic.
- Web-platform APIs are implemented under src/private/webapis (IntersectionObserver, MutationObserver, ResizeObserver, performance) and installed at startup only when the corresponding ReactNativeFeatureFlags accessor returns true (enableIntersectionObserverByDefault/enableMutationObserverByDefault/enableResizeObserverByDefault).packages/react-native/src/private/setup/setUpDefaultReactNativeEnvironment.js#L45-62packages/react-native/src/private/setup/setUpIntersectionObserver.jspackages/react-native/src/private/setup/setUpMutationObserver.jspackages/react-native/src/private/setup/setUpResizeObserver.jspackages/react-native/src/private/webapis
- Networking surface: setUpXHR installs fetch/XMLHttpRequest polyfills at init; RCTNetworking is the native HTTP module; WebSocket has its own module; whatwg-fetch and ws are runtime dependencies of the react-native package.
- Developer-experience features: LogBox (installed in DEV via LogBox.install() during env setup), DevMenu/DevSettings native-backed modules, HMRClient for Fast Refresh, and React DevTools wiring via setUpReactDevTools and react-devtools-core dependency.
- Consumer-facing support packages published from the monorepo: @react-native/jest-preset, @react-native/eslint-config + eslint-plugin-react-native + eslint-plugin-specs, @react-native/metro-config, @react-native/babel-preset + babel-transformer, @react-native/normalize-color(s), @react-native/polyfills, @react-native/assets-registry/asset-utils, @react-native/virtualized-lists, @react-native/typescript-config.packages/jest-preset/package.jsonpackages/eslint-plugin-react-native/package.jsonpackages/eslint-plugin-specs/package.jsonpackages/metro-config/package.jsonpackages/react-native-babel-preset/package.jsonpackages/normalize-color/package.jsonpackages/polyfills/package.jsonpackages/assets-registry/package.jsonpackages/virtualized-lists/package.json
- RNTester (packages/rn-tester, '@react-native/tester') is the manual-verification app showcasing components/APIs incl. custom module examples (NativeCxxModuleExample, ReportFullyDrawnViewNativeComponent); private/helloworld is the minimal template app; Fantom exposes a test API (Fantom.createRoot/runTask/scrollTo/installTimerMock) plus a REPL via yarn fantom-cli.