[ Proof ]
Packages
Native packages carry a stub for their native side, written to match what the real module does. Each one is scored by how much of its API runs, and packages with visual proof are compared case by case against native iOS.1,003packages tracked
29with visual proof
1,484visual cases
Will it run?
Drop a package.json or lockfile to check every dependency. The file stays in your browser.Check your package.json
Verifiedpixel-diffed against a real native device
Worksloads and runs
Partialsome APIs missing
react-native
arbitrary app-specific NativeModules and complete core module methods, exact automatic scroll insets and nested-scroll edge behavior, advanced TextInput selection/autofill, uncommon platform lifecycle and accessibility events, complete UIManager/system/dev-tool semantics, LogBox and Systrace behavior, and native virtual-collection visibility modes99%
[ Essentials ]
@react-native-masked-view/masked-view
upstream masked-view JS runs unchanged against an RNCMaskedView native view seam: its first subview is the alpha mask (canvaskit saveLayer + BlendMode.DstIn)100%
react-native-safe-area-context
rotation-specific provider frame deltas remain unassessed100%
@react-native-async-storage/async-storage
RNAsyncStorage native seam: promise-based scoped databases and legacy default storage sharing v2 data; legacy merge is a native no-op. iOS 3.1.1 runtime validated; no measured compatibility score for 3.x.100%
@sentry/react-native
real event transport to DSN, native crash/session replay capture, breadcrumb persistence; intentionally absent for development simulator100%
react-native-gesture-handler
tap, pan, pinch, rotation, fling, long press, race, manual, simultaneous, force touch unavailable-hardware parity100%
react-native-get-random-values
real upstream package — not intercepted. native side via the RNGetRandomValues module (native-seams/react-native-get-random-values.ts), mirroring ios/RNGetRandomValues.mm100%
react-native-reanimated
Reanimated 4 CSS layout, border metrics, shadows, filters, and complex-value transitions and keyframes remain incomplete99%
react-native-screens
over-drag return spring fidelity, sheet-to-scroll handoff creep beyond the largest detent99%
@react-native-community/netinfo
native network identifiers and metrics are unavailable; transport hints depend on browser support, and default Internet reachability mirrors navigator.onLine rather than probing a remote endpoint99%
react-native-keyboard-controller
KeyboardBackgroundView and ClippingScrollView lack their native platform effects; OverKeyboardView native-window fidelity beyond the observed iOS browser cases remains unverified; KeyboardExtender does not include accessory height in keyboard-frame metrics and exact native geometry remains incomplete; toolbar focus eligibility excludes hidden or zero-size inputs that native iOS counts98%
react-native-worklets
synchronous named-runtime results, runtime-id scheduling into named workers, custom queue/event-loop configuration, cross-runtime structured-clone hooks for custom registered classes, dynamic feature flag fan-out across the tenant↔shell split96%
react-native-svg
native SVG filter components and toDataURL refuse calls; ForeignObject does not render; marker context paints remain unverified; TextPath advanced layout, per-glyph positioning and objectBoundingBox paints are unsupported; pattern non-scaling strokes use the tile matrix; no font or emoji fallback parity claim95%
@react-native-community/datetimepicker
countdown mode renders the time wheel; exact time-input font spacing and native keyboard interaction are not certified; deprecated onChange is not covered by the retained native proof94%
react-native-webview
Safari/WebKit cross-origin URI pages without COEP-compatible response headers remain permanently loading because WebKit ignores iframe credentialless; Chromium credentialless cross-origin URI frames send no credentials, including cookies set by their own origin, and use ephemeral storage; iframe pixels in canvas screenshots; script injection, ReactNativeWebView bootstrap, and onOpenWindow for remote pages outside a playwright-driven sim (the desktop app or a plain browser tab), because only the sim browser host reaches a cross-origin frame at document start; injection into a remote page whose Content-Security-Policy forbids eval, which a WKUserScript bypasses; source.headers on the initial load of a remote page; cross-origin history truthfulness (goBack/goForward across documents, truthful canGoBack/canGoForward) plus reload and history-traversal policy decisions; initial-load decisions for data:/about:/file documents, which stay ungated with no paired native ask observed; remote HTTP error statuses and refused remote connections, which a cross-origin frame never exposes to the browser, and the HTTP status of a non-get form submit; allowsBackForwardNavigationGestures, userAgent, dataDetectorTypes, cacheEnabled, incognito, scalesPageToFit, originWhitelist enforcement81%
[ All Packages ]
969 / 989
Prev
1
2
…
81
Next
expo-linear-gradient
upstream expo-linear-gradient JS runs unchanged against an ExpoLinearGradient native view seam drawing the CGGradient its layer draws100%
@iterable/expo-plugin
load-safe noop — expo plugin function returns empty config100%
@mattermost/react-native-turbo-log
native-seam complete: the real logger writes and rotates browser-backed log files100%
@react-native-community/checkbox
animated on/off transitions render the settled frame and the animation-stop event follows the tap synchronously; Android renders the iOS BEM control and the native Android widget branch is unassessed100%
@walletconnect/react-native-compat
load-safe noop — this is itself a polyfill package that monkey-patches global objects (Buffer, crypto, async-storage). in Peach those globals are already wired by our compat layer so importing this is a no-op import; default export is an empty object. its only job is done, though WalletConnect itself is not exercised end to end here.100%
expo-android-shared-preferences
native-seam only — upstream Expo module wrapper runs from the bundle; ExpoAndroidSharedPreferences provides full persistent key-value SharedPreferences operations backed by tenant localStorage100%
expo-blob
published JavaScript runs unchanged over the native Blob SharedObject seam, following expo-blob 57.0.1 iOS byte storage, copying, slicing and UTF-8 decoding; no paired compatibility score100%
expo-dev-client
faithful unavailable state: launching or controlling a native development client has no useful operation inside a browser-hosted simulator; the real package (`export * from 'expo-dev-menu'`) imports cleanly and exposes load-safe no-op controls without fabricating a guest dev menu. the 100% score covers clean import and this sane unavailable state, not native dev-client machinery100%
expo-eas-client
real upstream package — not intercepted. the app's expo-eas-client JS reads the EASClient native module constants (native-seams/expo-eas-client.ts, mirroring EASClientID.swift/EASClientID.kt at 58.0.2): one persisted install uuid (UserDefaults "expo.eas-client-id" on iOS, SharedPreferences "dev.expo.EASSharedPreferences"/"eas-client-id" on Android) with platform casing, and the splitmix64 uniform value in [0, 1), bit-exact against the upstream formula. versions below 57.0.2 used different uniform math and are out of range.100%
expo-glass-effect
liquid glass via the calibrated glassEffect materials (same oracle-diffed presets as @expo/ui glassEffect); availability helpers covered100%
expo-ignore-battery-optimizations
faithful iOS unavailable state: the published JavaScript returns false and noops before touching its Android-only module100%
expo-keep-awake
native-seam: upstream package JS runs against a shared host-backed Screen Wake Lock owner with Expo tag and foreground lifecycle semantics100%
Prev
1
2
…
81
Next