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-blur is bundled into Expo Go, so you can prototype without a development build. react-native-liquid-glassmorphism is a custom native module and cannot run in Expo Go — you need expo prebuild or a dev build. If your workflow depends on Expo Go, this is decisive.
  • Much wider OS support for its full effect. expo-blur gives 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-blur renders the effect it promised and this library does not.
  • It’s simpler. One intensity, one tint, done. Fewer concepts, a smaller surface to get wrong, and no shader tuning props.
  • Web support. expo-blur works 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 BlurView stay 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. interactive gives 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, explicit points, or an arbitrary — including concave — SVG path, 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:

  • intensity carries 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 in expo-blur will read sharper here.
  • tint="light" | "dark" becomes tintColor with an explicit rgba(), or variantregular for adaptive frost, clear for near-transparent glass over media.
  • borderRadius is a first-class prop on <LiquidGlassView> rather than a style-only concern, because the native glass rounds itself.
  • All standard ViewProps still work, since the component extends them.
  • interactive and tilt are optional additions with no BlurView equivalent. Both are driven by the glass view’s own touches, so foreground content must be a child — a sibling rendered over an absoluteFill glass 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.

See also