This repository contains a React Native library that provides pinch-to-zoom functionality with advanced gesture handling. The core implementation uses React Native Reanimated and Gesture Handler to deliver smooth 60fps/120fps animations for zoom, pan, and double-tap interactions. The library offers both a ready-to-use `<Zoom>` component and a `useZoomGesture` hook for custom implementations, featuring Apple Photos-style physics including rubber band effects, focal point tracking, and seamless gallery navigation. The implementation demonstrates sophisticated gesture coordination and performance optimization through proper use of worklets to keep animations on the UI thread. The useZoomGesture hook encapsulates complex logic for managing shared values, handling simultaneous gestures (tap, pan, pinch), and implementing physics-based responses like rubber band effects and spring animations. It carefully handles edge cases such as boundary conditions, momentum preservation, and platform-specific behaviors to ensure a polished user experience. Key features include configurable zoom limits, double-tap zoom with customizable scales, optional JS bridge callbacks for less performance-critical use cases, and advanced gallery swipe navigation that enables seamless transitions between images in a flat list while zoomedβjust like the native iOS Photos app. The library is designed with performance in mind, minimizing JavaScript bridge communication by leveraging worklet-based animations for the core interaction logic.
react-native-reusables is a React Native UI component library that adapts the shadcn/ui copy-paste component model to React Native. It is a pnpm/Turborepo monorepo containing a Next.js/Fumadocs documentation site (apps/docs), an Expo SDK 56 showcase app for live cross-platform previews (apps/showcase), a scaffolding CLI built on Effect-TS (apps/cli), and a shared registry package (packages/registry) with roughly 30 styled components β Button, Dialog, Select, Accordion, Dropdown Menu, Tooltip, and others β plus higher-level authentication blocks (sign-in, sign-up, forgot/reset password, verify email) with optional Clerk integration. There is no data science or analytics code; it is purely a component library and developer-tooling project. The central architectural decision is dual styling-engine support: every component is implemented twice, once for Nativewind and once for Uniwind, both wrapping @rn-primitives (Radix-style primitives ported to React Native). Components use class-variance-authority for variant management, a Slot primitive for asChild composition, a TextClassContext that propagates text styles down component hierarchies (a non-obvious workaround for React Native's lack of CSS style cascading), and a portal/overlay system that uses iOS FullWindowOverlay on native platforms and fragments on web. The target platforms are iOS, Android, and web via Expo. Component source is serialized into shadcn-compatible registry JSON files (public/r/nativewind/*.json and public/r/uniwind/*.json) consumed by both the docs site and the CLI, with catalogs.dev YAML metadata driving publishing and discoverability. The CLI's init/add/doctor commands wrap the shadcn installation machinery with additional project intelligence: the doctor command validates dependencies and detects deprecated file patterns, and project-config.ts parses a project's metro.config.js to determine whether Nativewind or Uniwind is active before writing components.json. The add command delegates component installation to shadcn. Several auth blocks contain explicit TODO placeholders for navigation and form-submission logic that consumers must implement. The dominant maintenance burden is the deliberate duplication across the two styling engines β every API or visual change must be mirrored in both variants, and the generated registry JSON can drift from source files. Dependencies (Expo SDK 56, React Native 0.85.3, Nativewind 4.2.2, Uniwind 1.6.3) are current, and the repo tracks its ecosystem proactively.
This is a mature, cross-platform React Native bottom sheet library (`@lodev09/react-native-true-sheet`) that provides native-feeling sheets on iOS (UISheetPresentationController), Android (BottomSheetBehavior + CoordinatorLayout), and Web (forked Vaul drawer). It is built exclusively for React Native's New Architecture (Fabric) with shared C++ shadow nodes for synchronous per-detent layout. The library offers an imperative API via refs and a global static method registry, plus optional integrations with React Navigation (custom stack router and sheet navigator), Expo Router (Sheet layout), and Reanimated (worklet-driven position tracking). Key features include automatic detent sizing, peek detents, header/footer overlays, keyboard avoidance, stacked sheets, dimming, and a portal-based overlay for toasts/dialogs. The codebase demonstrates high craftsmanship with clean native delegates, extensive event handling, and thorough test mocks. It is actively maintained with multiple example apps, CI/CD, Maestro E2E tests, and a documentation site.
This repository is the `react-native-update` SDK (branded as Pushy for China and Cresc globally), a production-grade over-the-air (OTA) update library for React Native applications. It enables incremental patching of JavaScript bundles (including Hermes bytecode) and native resources across iOS, Android, and HarmonyOS platforms. The system comprises a JavaScript layer (React context, hooks, client classes) that orchestrates check, download, patch, and switch operations, and native modules on each platform that handle binary patching (via HDiffPatch/LZMA), secure zip extraction, resumable downloads, and a native cold-start check that can recover from crashes without JS involvement. The core patching and decision logic is implemented in C++ and shared across all platforms, enforced by golden-vector test suites. The SDK supports staged rollouts, telemetry, error reporting, crash rescue, and multiple update strategies (silent, alert, etc.). It is not a standalone application but a library integrated into React Native apps, with extensive CI/CD, unit tests, and e2e tests.
This is callstack/repack, a monorepo providing a toolkit to replace Metro with Webpack or Rspack for React Native bundling. It delivers a production-grade build pipeline with CLI commands (`start`, `bundle`), a custom Fastify-based dev server with HMR, symbolication, and WebSocket messaging, and over 20 Webpack/Rspack plugins for code splitting, Module Federation (V1/V2), Hermes bytecode compilation, code signing, and asset handling. The architecture is modular: a core `packages/repack` package contains loaders (assets, babel-swc, flow, react-refresh), runtime modules (ScriptManager, Federated helpers), and native Android/iOS code for script loading and code signing. A separate `packages/dev-server` package provides a bundler-agnostic server with delegate interfaces, and first-party plugins for NativeWind, Reanimated, and Expo modules are maintained alongside. The project supports both Webpack 5 and Rspack 1.x/2.x, with extensive integration tests and Metro-compatibility resolver tests. Module Federation is a key feature, enabling micro-frontend architectures in React Native apps with dynamic script loading via the client-side ScriptManager. The codebase is actively maintained with frequent releases, dependency updates, and a well-structured monorepo using pnpm, Turborepo, and Changesets. It demonstrates high craftsmanship in its plugin architecture, WebSocket server design, and source map symbolication, though dual bundler support and multiple Federation plugin versions add some complexity.
This repository is a high-performance React Native library (llama.rn) that enables on-device Large Language Model (LLM) inference on iOS and Android devices. It wraps the C++ llama.cpp core using JavaScript Interface (JSI) and TurboModules, allowing mobile applications to run GGUF-formatted models locally without cloud dependencies. The architecture consists of a TypeScript/JavaScript layer for the React Native interface, a C++ core for inference and model loading, and native modules for Android (Java/Kotlin) and iOS (Objective-C++). Key capabilities include hardware acceleration via Apple Metal and Qualcomm Hexagon DSP, multimodal support (vision/audio), parallel decoding, and structured output generation. The project includes a comprehensive example app demonstrating chat interfaces, model management, and benchmarking tools.
react-native-haptic-feedback is a React Native library providing comprehensive haptic feedback capabilities for iOS and Android. It implements a dual-tier fallback chain on both platforms: iOS uses Core Haptics (CHHapticEngine) with UIKit generator fallback, while Android uses View.performHapticFeedback constants and VibrationEffect API. The library offers both simple trigger methods and complex pattern-based haptic sequences, includes cross-platform AHAP file playback with Android fallbacks, and provides React-first APIs like the useHaptics hook and TouchableHaptic component. Architecture features platform-specific native modules bridged via React Native's TurboModule system, with TypeScript source and auto-linking support.
Karakeep is a self-hostable bookmarking and read-it-later application. It supports saving links, notes, images, PDFs, and videos, with AI-powered auto-tagging, summarization, and semantic search. The system consists of a Next.js web app, an Expo React Native mobile app, a browser extension (Chrome/Firefox/Safari), a CLI, a Model Context Protocol (MCP) server, and a set of background workers (crawler, embeddings, feeds, webhooks, rule engine, backups). The backend uses tRPC for API, Drizzle ORM with SQLite, and a plugin system for swapping infrastructure (asset stores, queues, search, rate limiting). The architecture is monorepo with shared packages for types, server utilities, and React hooks. It is actively maintained with frequent releases and a large community.
react-native-config is a native module library that exposes environment variables from a .env file to React Native applications on iOS, Android, macOS, and Windows. At build time, platform-specific scripts (Ruby for iOS/macOS, Gradle for Android, Node.js for Windows) parse the .env file and inject the key-value pairs as generated constants β BuildConfig fields on Android, a #define'd NSDictionary on iOS, and C++ string constants on Windows. At runtime, a single JavaScript entry point (index.js) calls a synchronous TurboModule method (getConfig()) to retrieve the config object, which is then exported as the default 'Config' constant. The library supports per-environment configurations via ENVFILE or per-build-configuration settings, and includes thorough diagnostics: if the .env file is missing or empty, the runtime logs a detailed message naming exactly which paths were tried. The codebase is well-structured across all four platforms, with a strong test suite for the iOS codegen scripts (Ruby Minitest) and a clean separation between build-time codegen and runtime reading.
learnX is a React Native/Expo mobile application designed for Tsinghua University students to access the Web Learning platform (learn.tsinghua.edu.cn). It provides features such as SSO authentication, course management, assignment tracking, file handling, calendar synchronization, and course information sharing via the courseX platform. The app uses Redux for state management, React Navigation for routing, and React Native Paper for UI components, with TypeScript ensuring type safety. It includes background data synchronization and supports iOS, Android, macOS, and Windows (via WSA).
This repository is the AWS Amplify JavaScript library, a production-grade client SDK for building cloud-connected web and React Native applications. In production, it runs inside end-user apps and mediates access to AWS services: Cognito authentication flows (SRP, OAuth/PKCE, WebAuthn passkeys, token refresh, MFA), S3 storage (multipart uploads, presigned URLs, path-based operations, resumable uploads), AppSync GraphQL/REST APIs, real-time WebSocket subscriptions and events, Pinpoint/Kinesis/Firehose/Personalize analytics, push notifications and in-app messaging, DataStore offline synchronization, Geo, Predictions, Lex, and IoT PubSub. It also ships a Next.js adapter that provides server-side rendering support with per-request cookie-based token storage and auth route handlers for both App Router and Pages Router. Architecturally this is a TypeScript monorepo: a `core` package provides foundational primitives (branded `AmplifyContext`, storage abstractions, HTTP middleware composition, SigV4 signing, retry logic, Hub event bus, cache), while category packages (`auth`, `storage`, `api-graphql`, `api-rest`, `analytics`, `notifications`, `datastore`, `geo`, `pubsub`) implement provider-specific logic behind a common context-first API pattern. The public `aws-amplify` umbrella package re-exports these through subpath exports, with `server` and `internals` entry points for SSR and advanced use. React Native support is provided through native modules for passkeys, push notifications, and web browser sessions. Data flows are typically: configure the Amplify singleton, resolve a context (global or per-request), call a category API, which uses composed HTTP middleware and generated service clients to talk to AWS endpoints, with analytics events buffered and flushed asynchronously. The codebase is actively maintained, with recent commits, extensive CI/CD workflows, changesets, and a large test suite. However, it carries notable transitional debt: Amazon Pinpoint APIs are deprecated with an October 2026 end-of-support, legacy v5 compatibility shims and deprecated key-based storage APIs remain, and some logic is deliberately duplicated across packages (e.g., connection state monitors and event buffers). Despite this, the architecture is coherent, the middleware and context patterns are well-designed, and the SDK is heavily tested across browser, React Native, and server environments.
Joplin is a mature, cross-platform note-taking and synchronization application built on a monorepo architecture using Yarn Workspaces. It comprises four primary application layers: a desktop client (Electron/React), a mobile client (React Native), a CLI tool (Node.js), and a self-hosted server (Node.js/Koa). The core business logic resides in `packages/lib`, which handles data models (Notes, Folders, Tags), encryption (E2EE), and synchronization protocols (WebDAV, Joplin Server, Dropbox, etc.). The codebase demonstrates strong engineering practices with TypeScript, Redux state management, and a robust plugin system that allows third-party extensibility via a defined API. It supports multiple editor backends (CodeMirror, ProseMirror, TinyMCE) and integrates native modules for performance-critical tasks like OneNote parsing (Rust) and voice transcription (Whisper).
This repository is Taro, a large-scale cross-platform application framework that compiles a single React/Vue/Solid codebase to multiple targets: WeChat/Alipay/Baidu/ByteDance/QQ/JD mini-programs, H5 web applications, React Native, and HarmonyOS. It is a monorepo containing over 100 packages coordinated via pnpm workspaces. The architecture spans CLI tooling (`@tarojs/cli`), build runners (Webpack5 and Vite with platform-specific loaders), a runtime layer that simulates DOM/BOM for non-browser targets (`@tarojs/runtime`), platform adapters that map component and API specifications for each target (e.g., `@tarojs/platform-weapp`, `@tarojs/platform-harmony`), and Rust-based SWC plugins for compile-time JSX optimization (`crates/swc_plugin_compile_mode`). The project is actively maintained with a large community (over 37K stars), frequent commits, and thorough testing across packages, including unit, integration, snapshot, and e2e tests. However, some platform-specific stubs (e.g., `temporarilyNotSupport` for Harmony) and multiple parallel Harmony implementations indicate medium technical drift in certain areas.
Jitsi Meet is an open-source video conferencing platform that provides real-time communication with features such as HD audio/video, screen sharing, chat, polls, breakout rooms, recording, live streaming, virtual backgrounds, and end-to-end encryption. The architecture is client-server: the web and mobile clients (React/React Native) communicate via XMPP (Prosody server) for signaling and WebRTC for media, with optional server-side components like Jitsi Videobridge and Jicofo for scalable conferencing. The codebase is organized into feature modules under `react/features/`, each with its own Redux actions, reducers, middleware, and platform-specific UI components (web vs. native). Key entry points include `app.js` for the web app, `react/index.native.js` for mobile, and native SDKs for iOS and Android. External dependencies include Prosody, Jitsi Videobridge, Jicofo, and various third-party services (Google, Microsoft, Dropbox, Amplitude). The project also includes server-side Prosody plugins (Lua) for authentication, room management, and monitoring, as well as a comprehensive test suite using WebDriverIO and custom load testing frameworks.
react-native-linear-gradient is a mature, well-maintained React Native library that provides a `<LinearGradient>` component for rendering linear gradients on iOS and Android. The library supports both the old (Paper) and new (Fabric) React Native architectures, with native implementations in Objective-C/C++ (iOS) and Java (Android). It offers configurable start/end points, color stops, angle-based gradients, and automatic handling of border radii on Android. The codebase is cleanly structured with TypeScript types, proper prop validation, and a Jest mock for testing. The example app demonstrates various use cases including simple gradients, angle gradients, animated gradient transitions, and gradient buttons. The library is actively maintained with CI/CD pipelines, recent commits, and support for React Native 0.75+.
This repository is a comprehensive collection of React interview questions and coding exercises, designed as an educational resource for developers preparing for React interviews. It contains over a dozen standalone React projects built with modern tooling (Vite, TypeScript, React 19), each demonstrating a specific UI pattern or hook implementation. The codebase is well-organized into three main sections: a coding-exercise app with a registry pattern for interactive problem-solving, a coding-hooks library of reusable custom hooks (useDebounce, useFetch, useLocalStorage, etc.), and a set of coding-projects (accordion, autocomplete, carousel, data table, infinite scroll, modal, nested comments, shopping cart, star rating, theme switcher, todo, tree view). The projects are cleanly implemented with TypeScript, proper state management, and accessibility considerations. While primarily educational, the custom hooks and several UI components are production-quality and directly reusable in other projects.
Expensify/App is the primary mobile application for Expensify, a corporate expense management platform. It is a cross-platform React Native app (iOS, Android, Web) built with React 19, React Native 0.86, and Expo 57. The app provides a full suite of expense management features: receipt scanning, multi-currency expense reporting, corporate card integration, reimbursement (ACH, global), workspace/policy administration, approval workflows, and accounting integrations (NetSuite, QuickBooks, Xero, Sage Intacct, etc.). The architecture is a typical React Native monolith with a reactive state management layer (react-native-onyx) for offline-first behavior, custom navigation (split/stack/tab), and a rich component library. It includes server-side chart rendering for PDF reports and extensive telemetry via Sentry and FullStory. The codebase is well-structured with platform-specific files, thorough TypeScript typing, and a comprehensive test suite. It is a mature, actively developed application with a large team and community.
react-native-restart is a small React Native native module that programmatically reloads the running JS bundle at runtime β a full process restart on Android, a bundle reload in-process on iOS and Windows. The architecture is a deliberately thin TypeScript bridge (src/index.tsx) over three native implementations, all registered under the module name RNRestart. The JS layer resolves the native module through TurboModuleRegistry on the New Architecture with a NativeModules fallback for the legacy bridge, and throws a descriptive linking error when the module was never linked. A TurboModule spec (src/NativeRNRestart.ts) drives RN codegen on Android and Windows. The public API is just three calls: restart(reason?), the deprecated Restart(reason?) alias, and getReason() which returns a reason that survives the restart.
react-native-nitro-markdown is a high-performance native Markdown parser and renderer for React Native, built on a vendored md4c C library (forked as nitromd) and the Nitro Modules framework for direct JSI bridging. It provides full CommonMark and GitHub Flavored Markdown support, plus extensions for LaTeX inline/block math, task lists, and strikethrough. The library offers three primary consumption modes: a full `<Markdown>` React component with customizable renderers, a `<MarkdownStream>` component designed for progressive rendering of streaming text (e.g., from LLM output), and a headless API (`parseMarkdown`, `extractPlainText`, `createMarkdownSession`) for server-side or non-React usage. Architecture is layered: native C++ parser produces a typed JSON AST, which is consumed by a React rendering pipeline with caching, incremental updates, and a plugin system. The repository includes a comprehensive test suite (unit, conformance, snapshot, C++ unit, E2E Maestro), performance benchmarks, fuzz testing, and a CI/CD pipeline for automated releases. It is a mature, well-engineered library with strong focus on correctness, performance, and developer experience, though it is tightly coupled to the iOS/Android native runtime and Nitro Modules ecosystem.
This repository is a React Native library that wraps Radar's native iOS and Android SDKs to provide geofencing, location tracking, trip tracking, geocoding, search, context, route/matrix, places, beacons, fraud verification, and in-app messaging capabilities. It exposes a JavaScript API (Radar.initialize, Radar.autocomplete, etc.) and optional UI components (Map, Autocomplete) for use in React Native applications. The architecture consists of a TypeScript/JavaScript layer that communicates with native code via React Native's bridge (old and new architectures), with vendored iOS xcframeworks and Android Java modules. The library handles native setup automation (AppDelegate injection, Podfile modification) through an Expo config plugin, and includes version sync scripts to keep SDK versions consistent across platforms. It supports both iOS and Android, with optional fraud and motion SDK extensions. The example app demonstrates usage with MapLibre for map display. The codebase is well-structured with CI workflows, tests for the Expo config plugin, and careful version management, though it carries binary xcframework artifacts and dual architecture support that increase maintenance surface.