An honest expo-blur alternative
If you’re looking for an alternative to expo-blur or @react-native-community/blur, the useful question isn’t “which is better” — it’s what are you actually rendering. These libraries solve overlapping but genuinely different problems, and for a large share of apps expo-blur is the right answer.
This page tries to be honest about that.
What does expo-blur do better?
Several things, and they matter more often than the feature matrix suggests:
- It runs in Expo Go.
expo-bluris bundled into Expo Go, so you can prototype without a development build.react-native-liquid-glassmorphismis a custom native module and cannot run in Expo Go — you needexpo prebuildor a dev build. If your workflow depends on Expo Go, this is decisive. - Much wider OS support for its full effect.
expo-blurgives you its real blur on essentially every supported iOS and Android version. Liquid Glass’s full effect needs iOS 26 (built with the iOS 26 SDK) or Android 13 / API 33+; below those it degrades to blur or tint. On an Android 11 device,expo-blurrenders the effect it promised and this library does not. - It’s simpler. One
intensity, onetint, done. Fewer concepts, a smaller surface to get wrong, and no shader tuning props. - Web support.
expo-blurworks on web. This library is mobile-only; on web it renders a best-effort translucent surface, not real glass. - Maturity and support. It’s maintained by Expo, used by an enormous number of apps, and has a long issue history you can search when something breaks.
- Lower conceptual and runtime cost. A blur is a blur. This library captures the backdrop each frame it changes and runs a per-pixel shader over it — cheap in practice, but strictly more machinery than you need if you only want a soft scrim.
@react-native-community/blur has a similar profile for bare React Native projects: a straightforward blur view, no Expo dependency, well understood.
What does this library do that a blur view can’t?
- Real refraction. A blur softens the backdrop; it doesn’t bend it. Liquid Glass displaces the sample along the surface normal near the rim, so content behind the edge is magnified and appears to wrap the surface. Straight lines behind a
BlurViewstay straight; behind glass they curve. - Apple’s actual iOS 26 material. On iOS 26 this installs a native
UIGlassEffect, not an approximation of it. - Liquid Glass optics on Android. Android has no system glass material. On API 33+ this runs an AGSL shader with edge refraction, chromatic dispersion, a mirrored edge reflection, and a Fresnel rim — not available from any blur library.
- Interactivity.
interactivegives a touch bloom plus local optical magnification under the finger;tilt(Android) moves the specular with the device’s gravity sensor. - Custom silhouettes.
circle,squircle,polygon,star, explicitpoints, or an arbitrary — including concave — SVGpath, with the glass lensing through the shape rather than clipping to it.
Side-by-side
| react-native-liquid-glassmorphism | expo-blur | @react-native-community/blur | |
|---|---|---|---|
| Runs in Expo Go | ❌ dev build / prebuild required | ✅ | ❌ |
| Web support | ❌ (translucent fallback only) | ✅ | ❌ |
| Full effect on older OS | ⚠️ needs iOS 26 / Android API 33+ | ✅ broad | ✅ broad |
| Blurred backdrop | ✅ | ✅ | ✅ |
| Tint | ✅ tintColor |
✅ tint presets |
✅ |
Native iOS 26 UIGlassEffect |
✅ | ❌ | ❌ |
| Refraction / edge lensing | ✅ both platforms | ❌ | ❌ |
| Chromatic dispersion + Fresnel rim | ✅ (Android shader) | ❌ | ❌ |
| Touch bloom / tilt specular | ✅ | ❌ | ❌ |
| Custom (concave) shapes | ✅ | ❌ | ❌ |
| API surface | larger | small | small |
| TypeScript | ✅ | ✅ | ✅ |
| New Architecture (Fabric) | ✅ | ✅ | ⚠️ |
Library feature sets move quickly — check each project’s current docs before deciding. This reflects honest positioning as of 2026.
Which should I pick?
Choose expo-blur if you need a blurred scrim behind a modal, a translucent nav bar, or a soft backdrop; you want it to work in Expo Go; you support a wide range of older OS versions; or you’re shipping to web. It does that job well and with less setup.
Choose @react-native-community/blur if you’re on bare React Native, don’t want an Expo dependency, and need the same simple blur.
Choose react-native-liquid-glassmorphism if the glass look itself is the point — you want Apple’s real iOS 26 Liquid Glass, and you want a matching refractive effect on Android rather than shipping Android a flat blur. Accept in exchange: a dev build, the OS floors for the full effect, and no web.
A reasonable middle path: many apps use both — expo-blur for utility scrims, and Liquid Glass for the few hero surfaces where the material is part of the design.
How do I migrate from BlurView?
The mental model is identical — wrap content, the backdrop behind it is treated, children render crisply on top:
// Before — expo-blur
import { BlurView } from 'expo-blur';
<BlurView intensity={60} tint="light" style={styles.card}>
<Text>Content</Text>
</BlurView>
// After — react-native-liquid-glassmorphism
import { LiquidGlassView } from 'react-native-liquid-glassmorphism';
<LiquidGlassView
variant="regular"
intensity={60}
tintColor="rgba(255,255,255,0.14)"
borderRadius={16}
interactive
style={styles.card}
>
<Text>Content</Text>
</LiquidGlassView>
Prop mapping notes:
intensitycarries the same 0–100 meaning, though the two libraries scale it differently — expect to retune. Liquid Glass deliberately blurs less (the lens needs detail to bend), so a value that looked right inexpo-blurwill read sharper here.tint="light" | "dark"becomestintColorwith an explicitrgba(), orvariant—regularfor adaptive frost,clearfor near-transparent glass over media.borderRadiusis a first-class prop on<LiquidGlassView>rather than a style-only concern, because the native glass rounds itself.- All standard
ViewPropsstill work, since the component extends them. interactiveandtiltare optional additions with noBlurViewequivalent. Both are driven by the glass view’s own touches, so foreground content must be a child — a sibling rendered over anabsoluteFillglass won’t trigger them.
Install and rebuild:
npm install react-native-liquid-glassmorphism
# Expo (dev build / prebuild — not Expo Go):
npx expo install react-native-liquid-glassmorphism
FAQ
Is expo-blur or react-native-liquid-glassmorphism better?
Neither, in the abstract. expo-blur is simpler, works in Expo Go, supports web, and delivers its full effect on far more OS versions. react-native-liquid-glassmorphism renders real Liquid Glass — native UIGlassEffect on iOS 26 and an AGSL refraction shader on Android — which a blur view cannot do. Pick by whether you need a blurred scrim or an actual glass material.
Can I use react-native-liquid-glassmorphism in Expo Go?
No. It’s a custom native module (UIGlassEffect on iOS, an AGSL RuntimeShader on Android), and Expo Go can only load native code compiled into it. Use expo prebuild or a development build. expo-blur, by contrast, is bundled into Expo Go.
Does expo-blur support Liquid Glass or UIGlassEffect?
No — expo-blur renders UIVisualEffectView blur materials on iOS and a blur on Android. It doesn’t install Apple’s iOS 26 UIGlassEffect and doesn’t do refraction on either platform.
Can I use both libraries in the same app?
Yes. They’re independent views with no shared native state. Using expo-blur for utility scrims and <LiquidGlassView> for hero glass surfaces is a perfectly sensible arrangement.
What do I lose by switching from expo-blur?
Expo Go compatibility, web support, and guaranteed full-fidelity rendering on older OS versions — below iOS 26 or Android 13 this library falls back to blur or tint, whereas expo-blur renders its intended effect. You also take on a slightly larger API surface.