React Native is a framework for building native mobile applications using JavaScript and React. At its core, the framework provides a set of built-in components such as View, Text, ScrollView, TextInput, Image, and Modal that map directly to platform-native UI elements. Text content must always be wrapped inside a Text component because React Native does not render raw text nodes outside of it. The View component serves as the primary non-scrolling container, while ScrollView wraps content in a scrollable region. FlatList and SectionList build on top of VirtualizedList to provide performant, windowed rendering for large or grouped datasets. The image picker, camera, location, and sharing APIs are accessed through dedicated modules or via Expo's prebuilt libraries.
React Native uses a JavaScript-based flexbox layout system that differs from the web in one important default: flexDirection is set to 'column' rather than 'row', so children stack vertically unless you specify otherwise. Common style props such as padding, margin, and flex control spacing and growth. The flex: 1 shorthand makes a component expand to fill all available space along the main axis of its parent. JustifyContent aligns children along the main axis, while alignItems handles the cross axis. StyleSheet.create validates and freezes style objects so the native bridge can reference them by ID instead of serializing them on every render. Platform.OS and Platform.select allow you to branch behavior between iOS and Android, and Platform.Version exposes the OS version for compatibility checks.
App entry points are registered with AppRegistry.registerComponent, which tells the native runtime which JavaScript component to mount. During development, the Metro bundler runs on port 8081 by default, serving the JavaScript bundle to the native shell. AppState reports whether the app is active, backgrounded, or inactive, which is useful for pausing tasks when the user leaves. Dimensions and PixelRatio help you adapt layouts and font sizes to different devices, while PixelRatio.getFontScale respects the user's preferred text size for accessibility. Pressable is the modern touchable component, supporting onPressIn, onPressOut, onLongPress, hitSlop, press retention offsets, and a function-based style prop that receives a pressed state for declarative feedback. Hermes is the optimized JavaScript engine now enabled by default, providing faster startup and lower memory usage than the legacy engine.