@callstack/liquid-glass (RN New Architecture) or expo-glass-effect (Expo SDK 54+). Wrap your tab bar, modal headers, floating action buttons, and primary CTAs in LiquidGlassView. Detect support with isLiquidGlassSupported; fall back to your existing solid views on iOS 25 and below. Honour UIAccessibilityIsReduceTransparencyEnabled. Skip Liquid Glass on body content — keep it for floating chrome only.
## Why This Matters Now
iOS 26 ships on Sep 15. By Sep 22, App Store reviewers start surfacing "designed for iOS 26" badges on apps that adopt the new look. By November, the press starts writing "still looks like an iOS 18 app" reviews. We have seen this pattern with every iOS design refresh since iOS 7 — the apps that adopt early get a 3-4 week halo. Apple confirmed iPhone 17 pre-orders for September 12 across 63 countries including India, and customer expectations land alongside the hardware.
## What "Liquid Glass" Actually Is (Plain English)
Liquid Glass is Apple's name for a translucent material with real-time GPU-rendered blur, refraction tints, and subtle reactive feedback when touched. It is the spiritual successor to the UIVisualEffectView from iOS 8, but with three new properties:
tintColor="#7c3aed" on a button gives a brand-coloured glow that reads as "your brand" on top of any background.interactive={true} is set, the glass subtly compresses and brightens on touch. It is implemented natively in iOS — no JS-thread animation cost.effect="clear" is mostly transparent with a touch of glass. effect="regular" is the classic frosted blur. Use regular for chrome, clear for floating buttons over busy content.@callstack/liquid-glass and expo-glass-effect automatically fall back to a solid background when the user enables Reduce Transparency. You still have to test it.npm install @callstack/liquid-glass (or expo install expo-glass-effect). Wrap your tab bar in LiquidGlassView. The tab bar is the single highest-visibility surface — getting it right takes 90% of the perceived "this looks like iOS 26" effect for 5% of the work.isLiquidGlassSupported ? <LiquidGlassView> : <BlurView>. On iPhone 14/15/16 running iOS 18 or earlier, your existing BlurView (or a flat colour) renders. We tested on a real iPhone 13 mini — fallback was indistinguishable from the pre-iOS-26 build.interactive={true} on tappable surfaces. Build, ship to TestFlight, run on the iPhone 17 simulator AND a real iPhone 14 (iOS 18). Submit to App Store with "Optimised for iOS 26" in the release notes.import { LiquidGlassView, isLiquidGlassSupported } from '@callstack/liquid-glass';
import { BlurView } from '@react-native-community/blur';
const RecordButton = ({ onPress, recording }) => {
const accent = recording ? '#ef4444' : '#7c3aed';
if (isLiquidGlassSupported) {
return (
<LiquidGlassView
style={styles.recordButton}
interactive
effect="regular"
tintColor={accent}
colorScheme="system"
>
<Pressable onPress={onPress}>
<MicIcon size={32} color="#fff" />
</Pressable>
</LiquidGlassView>
);
}
return (
<BlurView style={styles.recordButton} blurType="light" blurAmount={20}>
<Pressable onPress={onPress} style={{ backgroundColor: accent + '40' }}>
<MicIcon size={32} color="#fff" />
</Pressable>
</BlurView>
);
};
Three details. The fallback uses @react-native-community/blur, our pre-iOS-26 dependency — we did not delete it. The accent colour is computed once and passed to both branches so brand colour is identical across iOS versions. The icon is rendered as a child of the glass view, not as a sibling overlay — this keeps Apple's interactive compression effect aligned with the icon press target.
## Accessibility — The Test Most Teams Forget
When a user enables Reduce Transparency, your LiquidGlassView renders as a solid colour pulled from the system background. Text contrast on top of that solid colour is your problem, not Apple's. Run the WCAG contrast checker on every glass surface in the Reduce Transparency state.
UIAccessibilityIsReduceTransparencyEnabled — we listen for the reduceTransparencyChanged notification and adjust.effect="regular" on top of high-frequency content (text, line drawings). Switch to effect="clear" for floating buttons over busy backgrounds, or add a tint with higher opacity.
Symptom: "App crashes on iPhone 13 mini." Cause: the library is loaded but the New Architecture is not enabled, or the fallback path was not tested. Set RCT_NEW_ARCH_ENABLED=1 in your Podfile properties and run pod install fresh.
Symptom: "Reduce Transparency makes text invisible." See the warning box above. Add a darker fallback colour and verify contrast.
Symptom: "Frame rate drops to 30 fps on a list screen." Cause: too many glass surfaces stacked. Stick to the 4-surfaces-per-viewport rule.
## When NOT To Adopt Liquid Glass
Skip the migration if (a) your app's user base is over 70% Android — your bundle size and complexity grow for a feature half your users never see, (b) you are on RN < 0.74 with no plan to update — the New Architecture work is bigger than the design payoff, or (c) your brand identity depends on a flat / Material-like aesthetic — Liquid Glass forces a translucent feel that may clash. The TalkDrill aesthetic is glass-friendly; some brands are not.
## Real Example — TalkDrill iOS 26 Build
TalkDrill is a React Native app shipping to ~5,000 monthly active users in India. Our migration timeline:
- Day 1-2: audit, identify 7 surfaces, schedule
- Day 3-5: bump RN to 0.76, regression test
- Day 6-9: install @callstack/liquid-glass, convert tab bar + nav header + voice-record button
- Day 10-11: convert remaining 4 surfaces, add fallbacks
- Day 12-13: accessibility audit, contrast fixes, Reduce Transparency testing
- Day 14: TestFlight, internal QA, App Store submission
Result: shipped in App Store on Sep 22 (one week after iOS 26 public release). User reviews started mentioning "love the new look" within 4 days. Crash-free rate stayed at 99.71% — same as the pre-migration build.
## A Detail That Saved Us On Day 9
On day 9, our designer noticed the tab bar glass looked different on iPhone 14 vs iPhone 17. We had assumed the fallback (community BlurView with blurAmount=20) would look "close enough" to native Liquid Glass. It did not. The community BlurView is uniformly diffuse; Liquid Glass has a refractive lensing effect that bends content slightly. Our fix: do not try to mimic Liquid Glass on iOS 25. Use a flat colour with a 0.85 alpha + a 1pt highlight stroke. It looks intentionally different. Users on older devices do not feel cheated; users on iPhone 17 get the new look. Stop trying to be backwards-perfect.
## FAQ
### Do I need Xcode 26 to build for iOS 26?
Yes. Xcode 26 is the minimum to use the iOS 26 SDK. App Store submissions targeting iOS 26 must be built with it. Older Xcode can ship apps that run on iOS 26 but cannot use Liquid Glass APIs.
### Does Expo support Liquid Glass?
Yes. Expo Glass Effect shipped with SDK 54. The API mirrors SwiftUI's glass modifiers more closely than the Callstack library.
### What about Android?
Android has no equivalent. Both libraries render a regular View on Android. Plan your design assuming Android users see your standard non-glass surface.
### How big is the bundle size impact?
@callstack/liquid-glass adds ~340 KB to the iOS bundle (zipped). expo-glass-effect adds ~280 KB. Negligible at App Store scale, real consideration if you ship a tiny app.
### Can I use Liquid Glass for a video player overlay?
Yes, but use effect="clear" not regular. Frosted blur over video kills the point of showing video. We tested this on a TalkDrill replay screen — clear glass works, regular glass does not.
### How do I detect Liquid Glass support at runtime?
import { isLiquidGlassSupported } from '@callstack/liquid-glass'; — boolean, true on iOS 26+. Or check Platform.OS === 'ios' && parseInt(Platform.Version, 10) >= 26.
### Does it work with React Navigation tab bars?
Wrap your custom tab bar component in LiquidGlassView and pass it as the tabBar prop. Built-in BottomTabNavigator does not yet have a "use Liquid Glass" prop — you have to render a custom tab bar. About 60 lines of code.
### What about the iPhone Air? It has a different chassis — does Liquid Glass behave differently?
No. Liquid Glass is a software effect — chassis differences do not matter. We tested the iPhone Air simulator and the Liquid Glass rendering is identical to iPhone 17 Pro.
## A Note On The Mobile Stack We Use
We have shipped React Native production apps for the last 4 years — most visibly TalkDrill, our in-house English-fluency product. The migration patterns here are the same patterns we use for client mobile builds via our mobile development service. If you are wondering whether your team should pick React Native or Swift for a 2026 build, our breakdown of TalkDrill's voice pipeline is the honest version of how we make that call (RN for the app shell, Swift for the audio engine).
Want your React Native app updated for iOS 26?
We ship Liquid Glass migrations for React Native apps in 14-21 days. Includes the New Architecture bump if needed, accessibility audit, and App Store submission. Fixed price ₹1.4-2.8 lakh depending on app size. First call is with the engineer who would lead your migration. Email contact@softechinfra.com.
Book a 30-min Migration Call