expo-backdrop targets iOS and Android. Both components throw an error if rendered on web because native compositing APIs are not available in a browser environment. The sections below describe per-platform behaviour, minimum OS requirements, and known limitations you should account for in your app.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rit3zh/expo-backdrop/llms.txt
Use this file to discover all available pages before exploring further.
iOS
BlurView — iOS 13 and later. Backed byUIVisualEffectView with a UIViewPropertyAnimator that interpolates fractional intensity values between no blur and the full material. The compositor keeps the backdrop live at essentially zero CPU cost per frame — no backdrop capture happens in your process.
GaussianBlurView — iOS 13 and later. Backed by a SwiftUI UIHostingController that applies the .blur(radius:opaque:) modifier to its children. Blurs the view’s own rendered children, not the backdrop behind the view.
All 21 system materials are available on iOS 13+. The full UIBlurEffect.Style surface was introduced in iOS 13 alongside the system-wide dark mode, so there are no partial availability concerns for any supported Expo SDK target.
tvOS — only five legacy materials are functional on tvOS. The TintStyle enum maps every adaptive material onto its nearest legacy equivalent:
systemUltraThinMaterial,systemThinMaterial,systemMaterial,systemThickMaterial,systemChromeMaterial,default, andregular→.regularextraLight→.extraLightlightand all…MaterialLightvariants →.lightdarkand all…MaterialDarkvariants →.darkprominent→.prominent
Android
BlurView — all Android versions supported by the Expo SDK. Uses a frame-by-frame backdrop capture and multi-pass Gaussian blur implemented via the qmdeve BlurView library. See the Android Tuning guide for performance and quality controls. GaussianBlurView — requires API 31 (Android 12) or higher. UsesRenderEffect.createBlurEffect, which was introduced in API 31. On devices running API 30 or lower, the view renders its children without any blur effect and logs a warning to logcat — it does not crash.
Web
BothBlurView and GaussianBlurView throw an unsupported error when rendered in a web environment. The .web.tsx implementations deliberately throw so that the error surface is clear rather than silently rendering nothing.
Guard both components with a platform check before rendering:
backdrop-filter: blur(…) via a style prop on a plain View works in modern browsers, but it must be applied outside of expo-backdrop.
Expo Go
Detox testing
The iOS
BlurView includes a Detox detection guard. When Detox test arguments are detected in
the launch environment, the UIViewPropertyAnimator is bypassed and the blur effect is set
directly on the UIVisualEffectView without animation. This prevents the animator’s asynchronous
completion from causing test flakiness when Detox queries view state immediately after an
interaction.