FAQ
What runs where
The material changes with the platform, and we would rather you know the exact boundaries before you buy than discover them in a build.
| Platform | Version | What renders | Tier |
|---|---|---|---|
| iOS | 26 and up | Genuine UIGlassEffect, the same material the system draws | Native glass |
| iOS | 16.4 to 25 | UIBlurEffect system materials (systemUltraThinMaterial / systemThinMaterial) | Blur |
| Android | 12 and up (API 31+) | Real-time BlurView plus a tint overlay | Blur |
| Android | below 12 | Flat semi-transparent tint. The blur is dropped, not approximated | No blur |
Android 12 shipped in October 2021. Below it, the components install and run but render flat, so decide whether you support that range rather than leaving it to chance.
System requirements
Versions the components are built and tested against. Older minors generally work; these are what we run.
Toolchain
- Expo SDK 56, React Native 0.85.3, React 19.2.3
- Xcode 26 plus an iOS 26 simulator or device, to see real glass
- iOS 16.4 deployment target
- Android SDK 31+ for the blur path, compiled against API 36
- A development build. Expo Go cannot load the native modules
Peer dependencies
expo~56.0.15SDK baselinereact-native0.85.3with React 19.2.3expo-glass-effect~56.0.4the iOS 26 glass primitiveexpo-blur~56.0.3the fallback path on older iOS and Androidreact-native-reanimated~4.3.1every morph and springreact-native-gesture-handler~2.31.2sliders, sheet drag-to-dismissreact-native-safe-area-context5.7.0header and tab-bar insets@shopify/react-native-skia2.6.2AppBackground, the header blur maskreact-native-keyboard-controller1.21.6KeyboardToolbarShell@react-native-masked-view/masked-view0.3.2FloatingBlurHeader's gradient mask
Native modules (these force a rebuild)
@react-native-community/slider5.2.0the real UISlider on iOS@react-native-segmented-control/segmented-control2.5.7the real UISegmentedControl on iOS@react-native-community/datetimepicker9.1.0the real UIDatePicker on iOS@react-native-menu/menu^2.0.0the native UIMenu, Material popup on Android
The free Foundation (theme, backgrounds, dismiss layer) needs none of these beyond Skia and Reanimated.
Questions
Is this iOS only?
No. 21 of the 23 components draw their own material on Android rather than delegating to a platform widget, so they render on both. What differs is the material: real
UIGlassEffect on iOS 26, a real-time blur everywhere else. The two exceptions are GlassContextMenu and GlassDateTimePicker, which use the platform’s own menu and dialogs on Android on purpose.Will it look identical on a Pixel and a Samsung?
For those same 21 components, yes. Manufacturer skins like One UI restyle platform widgets, and these draw themselves, so they are unaffected.
GlassContextMenu and GlassDateTimePicker will pick up the device’s own styling and look different across manufacturers. That is deliberate: a date picker should feel like the phone it is running on.What actually happens on Android 11 and older?
The blur is dropped.
expo-blur’s Android blur requires API 31, and below that it falls back to a plain semi-transparent view, so you get a flat tint with no blur at all. Components still render and nothing crashes, but the material is gone. If that matters for your user base, set minSdkVersion: 31 in expo-build-properties so the case cannot arise.Can I use Expo Go?
No. Four of the components bridge real native controls, so you need a development build.
npx expo run:ios or run:android once, and after that the normal dev-client workflow applies. Adding or upgrading any of the native modules listed above means another rebuild.Do I need a Mac?
For iOS, yes, and specifically Xcode 26 with an iOS 26 simulator or device if you want to see the real glass rather than the fallback. Android needs only the Android SDK and works on any platform. Apple grants Liquid Glass to system controls automatically when an app is compiled against the iOS 26 SDK, which is why the toolchain version matters here and not just the device.
Does it work on the web?
Not as real glass. No browser technology reproduces
UIGlassEffect, including react-native-web. The previews on this site are a CSS and SVG approximation, and we label them as such rather than implying otherwise.My glass renders blank. What did I do?
Almost certainly one of two things. Native glass renders blank if you alpha-animate a view containing it, or mount it on demand directly over another glass surface. Animate
transform only, keep glass mounted and swap its props instead of remounting, and reach for forceBlur when a surface genuinely has to fade. The guide covers the layer rules this follows from.