[ Proof ]
Proven against native, package by package.
We test and build compatibility stubs for the 2,000 most popular React Native packages with native dependencies. Visual cases are pixel-diffed against a native device.Explore features and scenarios[ Updates · visual results ]
@react-navigation/native-stack
100%Oct 26
expo-image
+3Oct 26
react-native-reanimated
+3Oct 26
expo-linear-gradient
+1Oct 22
react-native-blurhash
100%Oct 22
react-native-drawer-layout
+100Oct 22
expo-paste-input
99%Oct 22
react-native-tab-view
+100Oct 22
More →
Project scan
Check your package.json
92%
React Native · 99%
Essentials · 98%
Top 100 · 94%
Top 500 · 92%
Top 1k · 92%
Top 500 native libraries by weekly downloads
100%
70%
40%
10%
Verifiedpixel-diffed against a real native device
Worksloads and runs
Partialsome APIs missing
Real apps
Open-source apps built from their own source at a pinned commit, run unchanged in Peach, and compared screen by screen with the same build running natively on iOS. Every screen we show is within 1% of native.27apps
132screens
99.81%average match
[ Features and scenarios ]
Browse the native behavior each surface needs to match and the conditions attached to its comparisons. Scenario sensitivity and native verification are tracked separately from package implementation scores.
Swift app lifecycle
Scenario sensitivity mapped for 0 of 15 behaviors. Of 24 attached cells, 0 verified, 0 failing and 24 unknown.Attached comparisons do not establish a native match. A current paired proof must qualify every check for the exact setting and scenario. Duo and iPad coverage is beta; results do not transfer between devices.Canvas affine transforms
GraphicsContext concatenation composes with translation, scaling and rotation; transform assignment replaces the current matrix, including singular matrices, context copies, overlays and isolated drawLayer state, matching native Canvas drawing2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Path even-odd contours and self-line clipping
Even-odd normalization preserves overlap holes and touching contours, and identical-operand line intersection and subtraction preserve native retained trails and dash starts2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.UIKit stroke graphics state
UIColor.setStroke changes the current graphics context stroke color and graphics-state restoration returns drawing to the saved stroke color, matching the native fixture2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.UILabel baseline adjustment storage and shrinking
UILabel.baselineAdjustment reads back each assigned mode and matches native baseline placement when adjustsFontSizeToFitWidth shrinks long text, with unchanged default drawing in the no-shrink control2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.TabView appearance and window callbacks
TabView selection changes send hosted controller appearance callbacks with animated false and window callbacks in the native first-visit and return order; reselecting the current tab sends none0 attached scenario cells · 0 verified · 0 failing · 0 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.CAAnimationGroup timing
group and layer copies retain child animations, evaluate child timing in group time, clip longer children and apply native fill behavior to shorter children2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.UIKit spring timing providers and settling
spring providers copy and retain their measured constructor values and original velocity, and public settling queries follow the native provider and CASpringAnimation estimates0 attached scenario cells · 0 verified · 0 failing · 0 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Property animator timing contracts
property animator activation, paused fractions and retained timing-function control points match the source-bound native consumer rows2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.SwiftUI Metal color effects
colorEffect, layerEffect and distortionEffect shaders on views, glyphs, strokes and shape fills match the retained native ImageRenderer samples at 3x0 attached scenario cells · 0 verified · 0 failing · 0 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Navigation back button label
a pushed NavigationStack screen draws the back button chevron-only and exposes the previous screen title as its accessibility label, matching the native fixture tree2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Custom Layout placement of greedy subviews
a custom Layout placing GeometryReader and Color subviews at center, bottom-trailing and top-leading anchors, including a nested layout, matches native placement and size2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.OutlineGroup rows
an OutlineGroup in a List draws a leaf row, a collapsed disclosure row with children and a disclosure row with an empty children collection as native does2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Font default and point size
Text drawn with Font.default and a pointSize modifier matches native glyph size and placement2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.CGImage-backed Image scale and orientation
decorative and labeled images built from a CGImage with scale 2 and a non-up orientation draw at the native size, orientation and pixels2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.Initial App construction
the counter fixture constructs App once and its initial WindowGroup renders app-init=1 on native and Peach2 attached scenario cells · 0 verified · 0 failing · 2 unknownSensitivity unknown: device, OS, orientation, appearance, accessibility, container, content, interaction.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