Conformance with popular native packages.We test and build compatibility stubs of the top 2,000 most popular React Native packages with native dependencies, many via pixel-diffing to ensure perfect accuracy.
top 500 native libraries by weekly downloads verifiedpixel-diffed vs real iOS Check your projectDrop your package.json or lockfile to see how your dependencies score.
the framework itself · 100 pixel-checked surfaces Core Essentials
layout animation builders are exported but no enter/exit animation actually plays, useScrollViewOffset returns static 0, useAnimatedSensor static, useReducedMotion always false, useAnimatedKeyboard height tracking returns 0 react-native-gesture-handler DrawerLayout (passthrough noop), NativeViewGestureHandler still lacks native-scroll coupling and handlerTag semantics, ForceTouch semantics are placeholder-onlystatusBarColor/navigationBarColor/navigationBarTranslucent ignored, replaceAnimation differentiation, formSheet detent fidelity, integrated search bar placements SVG filter primitives (Filter, FeBlend, FeColorMatrix, FeGaussianBlur, FeComposite, etc) — all fe* skipped; ClipPath/Mask/Use/Pattern/Symbol/Image listed as skipped in engine react-native-keyboard-controller per-frame keyboard progress events (smooth `onMove` requires SAB-backed shared values driven from the shell-side keyboard animation; deferred — see plans/real-worklets.md)All Packages(605 of 767)
full splash wired to the sootsim canvas boot splash, including the app's REAL configured artwork. the config plugin's image + backgroundColor (+ imageWidth, resizeMode, dark variant) and the legacy expo.splash / expo.ios.splash blocks are parsed and painted on boot exactly like the native splash window. setOptions({fade,duration}) is honored: hideAsync()/hide() cross-dissolve the splash over the configured duration (default 400ms, fade default off — mirroring ios/SplashScreenManager.swift hide()); preventAutoHideAsync holds the splash until the app hides it. matches upstream index.native.ts semantics. @react-native-masked-view/masked-view engine-level masked-view node with canvaskit saveLayer + BlendMode.DstIn alpha compositingDRM, native controls, selectable audio/video/subtitle tracks, AirPlay, fullscreen and picture-in-picture presentation, live-stream latency/timestamps, thumbnail generation, and persistent video cache overdrag (accepted but ignored), offscreenPageLimit (accepted but ignored), pageMargin, keyboardDismissMode, native scroll fidelity (momentum physics differ) CanvasKit gradient shader via _gradientColors style prop, full API keepsMenuPresented attribute (iOS 16+), image/imageColor rendering in menu items, inline element actions transition/animation effects, placeholder rendering, blurRadius, contentPosition, sfEffect/SFSymbol, allowDownscaling, autoplay (GIF), responsivePolicy real native bundle metadata, Android id/install referrer on non-Android platforms, push entitlement inspection real binary-derived embedded app config, Expo Updates manifest2, expoGoConfig/easConfig, physical-device status bar and system font enumeration real IP lookup, cellular/wifi/ethernet subtype detection, Android-only airplane mode detection the device frame does not visually re-lay-out on lock — faithful to the browser/fixed-sim-frame limitation (identical to react-native-orientation-locker, not a sootsim-specific gap); there is no physical rotation sensor on a fixed sim device so DeviceOrientationEvent-driven auto-rotation is intentionally absent (matches a locked iOS device) canUseBiometricAuthentication always false (no biometric prompt available on web — correct unavailable shape), requireAuthentication not enforced beyond storage partitioning/encryption (no biometric prompt to require), keychainAccessible does not affect browser storage access. sync reads cannot synchronously cold-load IndexedDB after a fresh worker boot; async reads hydrate the cache. all of these are honest absent-on-web semantics — apps with graceful-degradation paths behave correctly.