196+ React Native Packages.Zero Native Code.
SootSim renders React Native apps in the browser using canvas. Here's everything that works.
31just work
100full support
61partial
35stub / noop
All (196)
Core React Native (13)
Navigation (11)
Animation & Gestures (5)
Storage & Data (10)
Media (17)
UI Libraries (42)
Expo SDK (36)
Analytics & Monitoring (17)
Platform (45)
showing 196 of 196 packages
just works — pure JS, no stub needed
Full native replaced
Partial most APIs work
Stub noop or minimal
Core React Native13 packages
@react-native-clipboard/clipboard
Full
>=1.0.0
100%
navigator.clipboard based
@react-native-masked-view/masked-view
Full
>=0.2.0
100%
engine-level masked-view node type with canvaskit saveLayer + BlendMode.DstIn alpha compositing
react-native-fast-image
Partial
>=8.0.0
80%
renders <img> element
react-native-gesture-handler
Full
>=2.30.0
100%
tap, pan, pinch, rotation, fling, long press, race, manual, simultaneous
react-native-keyboard-controller
Full
>=1.0.0
100%
keyboard avoiding, toolbar, aware scroll, gesture area, state hooks
react-native-nitro-modules
Full
>=0.30.0
100%
proxy-based noop framework for JSI modules
react-native-reanimated
Full
>=4.0.0
100%
shared values with live-value shape, timing/spring/decay, interpolate, layout animations, SharedTransition builders, createAnimatedComponent, withClamp, frame callbacks
react-native-safe-area-context
Full
>=4.0.0
100%
full support
react-native-screens
Full
>=4.0.0
100%
screen container, stack, header config, full navigation props
react-native-share
Full
>=9.0.0
100%
navigator.share, file sharing, urls, email/mailto fallback
react-native-svg
Full
>=13.0.0
100%
full SVG: shapes, paths, text, gradients, defs, clipPath, mask, pattern
react-native-view-shot
Stub
>=3.0.0
30%
noop returning empty result
react-native-webview
Full
>=11.0.0
100%
real iframe, postMessage, JS injection, loading/error states, scroll control
Navigation11 packages
@callstack/react-native-bottom-tabs
Partial
>=0.1.0
90%
tab bar with badge, labeled, haptic, scrollEdge
react-native-bottom-tabs
Partial
>=6.0.0
90%
tab bar with badge, labeled, haptic, scrollEdge
react-native-drawer-layout
just works
Partial
>=3.0.0
90%
pure JS drawer, uses reanimated + gesture-handler (both stubbed)
react-native-ios-context-menu
Partial
>=1.0.0
90%
long-press/right-click dropdown with menu items, onPressMenuItem callback
react-native-ios-utilities
Partial
>=4.0.0
90%
RNIWrapperView, RNIContextMenuView, RNIDetachedView, types, color utils
react-native-modal
just works
Full
>=11.0.0
100%
pure JS, uses Animated + View overlay
react-native-pager-view
Partial
>=6.0.0
90%
CSS scroll-snap pages, setPage via ref, onPageSelected/onPageScroll callbacks
react-native-screen-transitions
Partial
>=1.0.0
90%
shared element transitions noop — components pass through children
react-native-tab-view
just works
Partial
>=3.0.0
90%
pure JS tab view with ScrollView web fallback
react-native-teleport
Full
>=1.0.0
100%
portal via react context
solito
just works
Full
>=4.0.0
100%
pure JS navigation abstraction — useRouter, useLink
Animation & Gestures5 packages
lottie-react-native
Stub
>=5.0.0
30%
placeholder div, play/pause API
moti
just works
Full
>=0.20.0
100%
pure JS — composes reanimated (already stubbed)
react-native-animatable
just works
Full
>=1.0.0
100%
pure JS animations — Animated API
react-native-collapsible
just works
Full
>=1.0.0
100%
pure JS expand/collapse — Animated API
react-native-worklets
Full
>=0.1.0
100%
runOnJS/UI, WorkletRuntime, shared context
Storage & Data10 packages
@bsky.app/react-native-mmkv
Full
>=2.0.0
100%
alias to react-native-mmkv stub
@react-native-async-storage/async-storage
Full
>=1.0.0
100%
full localStorage-backed implementation
@react-native-community/netinfo
Full
>=9.0.0
100%
navigator.onLine based
expo-file-system
Stub
>=15.0.0
30%
basic read/write stubs
expo-secure-store
Partial
>=12.0.0
90%
localStorage with base64 obfuscation, async/sync API, biometric stub
expo-sqlite
Partial
>=13.0.0
60%
in-memory async + sync database compat, context provider, Zero/Replicache-oriented statement support
react-native-fs
Full
>=2.0.0
100%
localStorage file system, encoding support, crypto hash, fetch downloads
react-native-keychain
Partial
>=8.0.0
80%
localStorage backed credentials
react-native-mmkv
Full
>=2.0.0
100%
full localStorage-backed MMKV: typed get/set, hooks, listeners, recrypt, trim
react-native-nitro-cookies
Full
>=1.0.0
100%
document.cookie — get, set, remove, clearAll
Media17 packages
@react-native-camera-roll/camera-roll
Stub
>=5.0.0
30%
noop, returns empty results
expo-audio
Partial
>=0.1.0
80%
HTML5 Audio playback, MediaRecorder recording, hooks
expo-av
Partial
>=13.0.0
90%
real HTML5 Audio playback, Video with imperative API, MediaRecorder recording
expo-camera
Partial
>=14.0.0
50%
CameraView placeholder, permission hooks, enums
expo-document-picker
Partial
>=12.0.0
90%
file input picker, multiple, type filter
expo-image
Partial
>=1.0.0
90%
Image + ImageBackground + useImage + ImageRef, recyclingKey, cachePolicy
expo-image-manipulator
Stub
>=11.0.0
30%
noop manipulateAsync returning input uri
expo-image-picker
Partial
>=14.0.0
80%
file input picker, base64, multi-select
expo-media-library
Partial
>=15.0.0
50%
noop permissions and asset queries
expo-video
Partial
>=1.0.0
70%
VideoView with HTML5 video, useVideoPlayer hook
expo-video-thumbnails
Stub
>=8.0.0
30%
noop getThumbnailAsync returns empty result
react-native-compressor
Stub
>=1.0.0
30%
noop, returns input URI unchanged
react-native-image-crop-picker
Partial
>=0.40.0
70%
file input picker, openPicker/openCamera/openCropper
react-native-image-picker
Partial
>=5.0.0
70%
launch functions resolve with didCancel
react-native-image-zoom-viewer
just works
Full
>=3.0.0
100%
pure JS zoom — PanResponder + Image
react-native-video
Partial
>=5.0.0
70%
HTML5 video element
react-native-vision-camera
Stub
>=3.0.0
30%
noop camera, permission hooks
UI Libraries42 packages
@expo/ui
Partial
>=0.1.0
90%
Button, Switch, Picker, Slider, SegmentedControl, TextField, Checkbox, ColorPicker, ProgressView
@floating-ui/react-native
just works
Full
>=0.10.0
100%
pure JS positioning — uses RN layout
@gorhom/bottom-sheet
Full
>=5.0.0
100%
snap points, backdrop, imperative API, footer, keyboard behavior
@gorhom/portal
just works
Full
>=1.0.0
100%
pure JS portal — React context based
@legendapp/list
just works
Full
>=1.0.0
100%
pure JS — composes flash-list (already stubbed)
@mattermost/react-native-paste-input
Partial
>=0.3.0
80%
textarea with real clipboard paste event handling
@miblanchard/react-native-slider
Partial
>=2.0.0
80%
alias to @react-native-community/slider stub
@react-native-community/blur
Full
>=4.0.0
100%
CSS backdrop-filter blur + webkit prefix, BlurView + VibrancyView
@react-native-menu/menu
Partial
>=0.7.0
90%
MenuView renders real ios-style canvas menu: actions, subactions, checked state, destructive + disabled attributes, onPressAction, shouldOpenOnLongPress
@react-native-vector-icons/fontawesome6-pro
just works
Full
>=12.0.0
100%
pure JS glyph maps + font files
@shopify/flash-list
Partial
>=1.0.0
80%
renders as FlatList equivalent
@shopify/react-native-skia
Stub
>=0.1.0
30%
Canvas placeholder, noop drawing primitives
burnt
Partial
>=0.1.0
90%
toast via Notification API, alert via console, dismissAllAlerts, custom icon
expo-blur
Partial
>=12.0.0
90%
backdrop-filter blur, experimentalBlurMethod, BlurTint types
expo-glass-effect
Full
>=0.1.0
100%
liquid glass via CanvasKit, useGlassEffect hook
expo-linear-gradient
Full
>=12.0.0
100%
canvaskit gradient shader, full API
expo-liquid-glass-view
Partial
>=0.1.0
80%
liquid glass via CanvasKit shaders
expo-mesh-gradient
Partial
>=0.1.0
90%
canvas 2D radial gradients at mesh points, CSS fallback
react-native-calendars
just works
Full
>=1.0.0
100%
pure JS calendar — View + Text, no native code
react-native-confirmation-code-field
just works
Full
>=7.0.0
100%
pure JS code input — TextInput cells
react-native-country-picker-modal
just works
Full
>=2.0.0
100%
pure JS country picker — FlatList + Modal
react-native-draggable-flatlist
just works
Full
>=3.0.0
100%
pure JS — composes gesture-handler + reanimated (both stubbed)
react-native-dropdown-picker
just works
Full
>=5.0.0
100%
pure JS dropdown — View + ScrollView + TouchableOpacity
react-native-gifted-chat
just works
Full
>=2.0.0
100%
pure JS chat UI — FlatList + TextInput
react-native-linear-gradient
Partial
>=2.0.0
90%
canvaskit gradient shader via sootsim
react-native-markdown-display
just works
Full
>=7.0.0
100%
pure JS markdown → RN components (View, Text, Image)
react-native-paper
just works
Partial
>=5.0.0
80%
pure JS Material Design — uses RN primitives + reanimated + svg + safe-area
react-native-pdf
Partial
>=6.0.0
50%
placeholder view, no real PDF rendering in canvas
react-native-progress
just works
Full
>=5.0.0
100%
pure JS progress bars — SVG + Animated
react-native-qrcode-svg
just works
Full
>=6.0.0
100%
pure JS QR generator using SVG
react-native-render-html
just works
Full
>=6.0.0
100%
pure JS HTML to RN components
react-native-select-dropdown
just works
Full
>=3.0.0
100%
pure JS — FlatList + TextInput + Modal
react-native-simple-toast
Full
>=3.0.0
100%
DOM toast overlay with gravity + duration
react-native-size-matters
just works
Full
>=0.3.0
100%
pure JS Dimensions scaling
react-native-step-indicator
just works
Full
>=1.0.0
100%
pure JS step UI — View + Text
react-native-swiper
just works
Full
>=1.0.0
100%
pure JS carousel — ScrollView based
react-native-switch
just works
Full
>=2.0.0
100%
pure JS toggle — Animated + View
react-native-toast-message
just works
Full
>=2.0.0
100%
pure JS toast overlay — View + Animated
react-native-uitextview
Partial
>=1.0.0
90%
div wrapper with selectable text
react-native-vector-icons
Partial
>=9.0.0
50%
span-based icon stubs, all icon sets
react-native-wheel-pick
Partial
>=1.0.0
70%
HTML select and date/time input elements
zeego
Partial
>=3.0.0
90%
DropdownMenu + ContextMenu render via canvas ContextMenu: items, groups, checkbox, submenu, destructive, SF Symbol icon mapping, onSelect + onValueChange
Expo SDK36 packages
expo
Partial
>=49.0.0
70%
registerRootComponent, Constants, useAssets, useURL
expo-application
Partial
>=5.0.0
80%
app metadata, vendor ID
expo-auth-session
Stub
>=5.0.0
30%
noop auth flow, useAuthRequest hook, makeRedirectUri
expo-background-task
Full
>=55.0.0
100%
noop — no browser background tasks
expo-build-properties
Full
>=0.1.0
100%
build-time config plugin only, no runtime behavior
expo-calendar
Partial
>=13.0.0
50%
noop calendar/event/reminder operations
expo-clipboard
Full
>=4.0.0
100%
navigator.clipboard based
expo-constants
Full
>=14.0.0
100%
full stub
expo-contacts
Stub
>=13.0.0
30%
noop, returns empty results, permissions always granted
expo-crypto
Partial
>=12.0.0
90%
web crypto API, full digest algorithms, getRandomBytes
expo-dev-client
Full
>=1.0.0
100%
dev tooling — no runtime behavior
expo-device
Full
>=6.0.0
100%
full device info, all async APIs
expo-font
Full
>=11.0.0
100%
web font loading
expo-haptics
Full
>=12.0.0
100%
no-op (no haptic hardware)
expo-intent-launcher
Full
>=11.0.0
100%
noop (Android-only feature)
expo-keep-awake
Full
>=14.0.0
100%
noop (no wake lock in browser)
expo-linking
Full
>=5.0.0
100%
window.location based
expo-local-authentication
Partial
>=13.0.0
60%
authenticateAsync returns failure, hardware/enrolled stubs
expo-localization
Full
>=14.0.0
100%
navigator.language + Intl backed locale, timezone, RTL
expo-location
Partial
>=17.0.0
70%
navigator.geolocation, permissions always granted
expo-modules-core
Partial
>=1.0.0
90%
EventEmitter, NativeModule, SharedObject, SharedRef, requireNativeModule/Optional, CodedError, permissions, Platform
expo-navigation-bar
Full
>=4.0.0
100%
noop (Android-only feature)
expo-notifications
Full
>=0.20.0
100%
browser Notification API, scheduling, channels, badge, handler
expo-print
Partial
>=14.0.0
50%
noop print, mock printToFile
expo-screen-orientation
Partial
>=7.0.0
90%
noop lock/unlock, orientation enums
expo-sensors
Partial
>=13.0.0
50%
mock sensor data, no real hardware
expo-sharing
Full
>=12.0.0
100%
noop share sheet
expo-sms
Full
>=12.0.0
100%
noop, isAvailable false on web
expo-splash-screen
Full
>=0.17.0
100%
no-op
expo-status-bar
Full
>=2.0.0
100%
config component, no-op rendering
expo-store-review
Full
>=8.0.0
100%
noop requestReview, isAvailable true
expo-system-ui
Full
>=4.0.0
100%
noop background color management
expo-task-manager
Full
>=11.0.0
100%
in-memory task registry, permissions
expo-tracking-transparency
Full
>=3.0.0
100%
always granted, isAvailable true
expo-updates
Full
>=0.20.0
100%
full noop update API, useUpdates, currentlyRunning
expo-web-browser
Full
>=12.0.0
100%
window.open
Analytics & Monitoring17 packages
@bitdrift/react-native
Stub
>=0.1.0
30%
noop analytics init/log/addField
@datadog/mobile-react-native
Stub
>=1.0.0
30%
noop SDK, logs, trace, rum, provider
@react-native-firebase/analytics
Stub
>=18.0.0
30%
noop event logging
@react-native-firebase/app
Stub
>=18.0.0
30%
noop init
@react-native-firebase/messaging
Stub
>=18.0.0
30%
noop token/subscribe
@segment/analytics-react-native
Stub
>=2.0.0
30%
noop createClient, provider, hooks
@sentry/react-native
Full
>=5.0.0
100%
full noop API surface — init, capture, scope, sessions, spans, metrics, trace
expo-insights
Full
>=55.0.0
100%
noop telemetry SDK
posthog-react-native
Partial
>=2.0.0
90%
full noop: provider, hooks, PostHog class, nav tracker, feature flags
react-native-adjust
Stub
>=4.0.0
30%
noop create/trackEvent, AdjustConfig/AdjustEvent/AdjustAdRevenue classes
react-native-amplitude-analytics
Full
>=0.2.0
100%
noop analytics
react-native-appsflyer
Stub
>=6.0.0
30%
noop initSdk/logEvent, console-logged events
react-native-branch
Stub
>=5.0.0
30%
noop subscribe/setIdentity, BranchEvent console-logged
react-native-code-push
Stub
>=5.0.0
30%
noop codePush HOC, sync, checkForUpdate
react-native-fbsdk-next
Stub
>=12.0.0
30%
noop LoginManager/AccessToken/Profile/AppEventsLogger/ShareDialog
react-native-mixpanel
Stub
>=1.0.0
30%
noop analytics class
react-native-onesignal
Stub
>=5.0.0
30%
noop initialize/login/logout, Notifications, InAppMessages, User
Platform45 packages
@clerk/clerk-expo
Partial
>=1.0.0
50%
ClerkProvider, useAuth/useUser/useSession hooks, SignIn/SignUp/SignedIn/SignedOut components
@invertase/react-native-apple-authentication
Stub
>=2.0.0
30%
noop performRequest/getCredentialState with mock credential
@mozzius/expo-dynamic-app-icon
Full
>=1.0.0
100%
noop setAppIcon/getAppIcon, useDynamicAppIcon hook
@notifee/react-native
Stub
>=7.0.0
30%
noop channels, notifications, permissions
@react-native-community/checkbox
Full
>=0.5.0
100%
HTML checkbox with accentColor + onValueChange
@react-native-community/datetimepicker
Full
>=6.0.0
100%
HTML date/time/datetime-local input, open(), countdown
@react-native-community/geolocation
Partial
>=3.0.0
80%
navigator.geolocation backed
@react-native-community/slider
Partial
>=4.0.0
80%
HTML range input element
@react-native-google-signin/google-signin
Stub
>=10.0.0
30%
noop configure/signIn/signOut with mock user
@react-native-picker/picker
Full
>=2.0.0
100%
HTML select element, Picker.Item, focus/blur refs
@stripe/stripe-react-native
Stub
>=0.20.0
30%
noop provider, hooks, CardField component
react-native-aes-crypto
Full
>=3.0.0
100%
Web Crypto API — AES-CBC/GCM, PBKDF2, SHA, HMAC, random
react-native-app-auth
Full
>=6.0.0
100%
browser OAuth via popup, PKCE, token refresh/revoke, register
react-native-background-timer
Full
>=2.0.0
100%
wraps real setInterval/setTimeout
react-native-biometrics
Stub
>=3.0.0
30%
mock unavailable, no biometric hardware
react-native-blob-util
Partial
>=0.18.0
60%
browser fetch + IndexedDB fs operations
react-native-bootsplash
Full
>=4.0.0
100%
noop hide/show/getVisibilityStatus
react-native-config
Full
>=1.0.0
100%
proxy returning undefined for all keys
react-native-contacts
Stub
>=7.0.0
30%
noop, returns empty results
react-native-date-picker
Partial
>=5.0.0
80%
HTML date/time input, DatePickerModal
react-native-device-attest
Stub
>=0.1.0
30%
noop attestation (no hardware attestation in browser)
react-native-device-info
Full
>=10.0.0
100%
mock iPhone 16 Pro values, full getter set
react-native-document-picker
Partial
>=9.0.0
80%
browser file input, pick/pickSingle/isCancel
react-native-edge-to-edge
Full
>=1.0.0
100%
Android-only status bar config plugin
react-native-email-link
just works
Full
>=1.0.0
100%
pure JS — uses Linking API for mailto:
react-native-exception-handler
Partial
>=2.0.0
80%
window.onerror + unhandledrejection wrappers
react-native-get-random-values
Full
>=1.0.0
100%
noop, browser crypto.getRandomValues already exists
react-native-haptic-feedback
Full
>=1.0.0
100%
navigator.vibrate() with type-specific durations
react-native-iap
Stub
>=12.0.0
30%
noop purchase flow
react-native-in-app-review
Full
>=4.0.0
100%
noop, resolves true
react-native-inappbrowser-reborn
Partial
>=3.0.0
80%
window.open based
react-native-launch-arguments
Full
>=4.0.0
100%
empty args stub
react-native-localize
Full
>=2.0.0
100%
browser Intl-based locale, timezone, number format
react-native-logs
just works
Full
>=5.0.0
100%
pure JS console wrapper
react-native-maps
Stub
>=1.0.0
40%
static placeholder, shape components render nothing
react-native-orientation-locker
Full
>=1.0.0
100%
noop lock/unlock, orientation constants
react-native-performance
Partial
>=5.0.0
90%
browser Performance API wrapper
react-native-permissions
Partial
>=3.0.0
90%
always granted, full PERMISSIONS/RESULTS, openSettings, checkMultiple, requestMultiple, openPhotoPicker
react-native-purchases
Stub
>=5.0.0
30%
noop purchase flow, mock empty data
react-native-pure-jwt
Full
>=3.0.0
100%
Web Crypto JWT — decode, sign (HMAC-SHA256/384/512), verify
react-native-push-notification
Partial
>=8.0.0
70%
browser Notification API backed, scheduled notifications
react-native-quick-base64
Full
>=2.0.0
100%
browser native btoa/atob
react-native-restart
Full
>=0.0.1
100%
location.reload
react-native-splash-screen
Full
>=3.0.0
100%
noop show/hide
react-native-zip-archive
Stub
>=6.0.0
30%
noop zip/unzip, path constants
try it with your appdrop your package.json on the download page to see a personalized compatibility reportdownload sootbean
sootbean.comhome