@sbaiahmed1/react-native-blur 3.1.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +319 -308
- package/ReactNativeBlur.podspec +1 -1
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeBlurViewManagerDelegate.java +18 -3
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeBlurViewManagerInterface.java +6 -1
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeGlassEffectContainerManagerDelegate.java +53 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeGlassEffectContainerManagerInterface.java +25 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeGlassViewManagerDelegate.java +38 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNativeGlassViewManagerInterface.java +20 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/ComponentDescriptors.cpp +1 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/ComponentDescriptors.h +1 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/EventEmitters.cpp +1 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/EventEmitters.h +7 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/Props.cpp +21 -2
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/Props.h +70 -2
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/ShadowNodes.cpp +1 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/ShadowNodes.h +11 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlurViewSpec/States.h +12 -0
- package/android/build.gradle +2 -3
- package/android/src/main/java/com/sbaiahmed1/reactnativeblur/ReactNativeBlurView.kt +62 -269
- package/android/src/main/java/com/sbaiahmed1/reactnativeblur/ReactNativeBlurViewManager.kt +13 -8
- package/ios/Helpers/BlurStyleHelpers.swift +1 -1
- package/ios/Helpers/ReactNativeBlurViewHelper.swift +8 -32
- package/ios/Helpers/ReactNativeLiquidGlassViewHelper.swift +44 -0
- package/ios/ReactNativeBlurView.mm +28 -74
- package/ios/{ReactNativeBlurViewManager.m → ReactNativeBlurViewManager.mm} +15 -39
- package/ios/ReactNativeLiquidGlassView.h +14 -0
- package/ios/ReactNativeLiquidGlassView.mm +284 -0
- package/ios/ReactNativeLiquidGlassViewManager.h +6 -0
- package/ios/ReactNativeLiquidGlassViewManager.mm +20 -0
- package/ios/Views/AdvancedBlurView.swift +6 -34
- package/ios/Views/BasicColoredView.swift +37 -44
- package/ios/Views/LiquidGlassContainerView.swift +173 -0
- package/lib/module/BlurView.js +17 -31
- package/lib/module/BlurView.js.map +1 -1
- package/lib/module/LiquidGlassView.js +75 -0
- package/lib/module/LiquidGlassView.js.map +1 -0
- package/lib/module/ReactNativeBlurViewNativeComponent.ts +1 -7
- package/lib/module/ReactNativeLiquidGlassViewNativeComponent.ts +57 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/BlurView.d.ts +19 -39
- package/lib/typescript/src/BlurView.d.ts.map +1 -1
- package/lib/typescript/src/LiquidGlassView.d.ts +85 -0
- package/lib/typescript/src/LiquidGlassView.d.ts.map +1 -0
- package/lib/typescript/src/ReactNativeBlurViewNativeComponent.d.ts +1 -6
- package/lib/typescript/src/ReactNativeBlurViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/ReactNativeLiquidGlassViewNativeComponent.d.ts +44 -0
- package/lib/typescript/src/ReactNativeLiquidGlassViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/BlurView.tsx +37 -68
- package/src/LiquidGlassView.tsx +138 -0
- package/src/ReactNativeBlurViewNativeComponent.ts +1 -7
- package/src/ReactNativeLiquidGlassViewNativeComponent.ts +57 -0
- package/src/index.tsx +6 -0
package/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# @sbaiahmed1/react-native-blur
|
|
2
2
|
|
|
3
|
-
A modern React Native
|
|
3
|
+
A modern React Native library providing **two specialized components** for advanced visual effects: `BlurView` for native blur effects and `LiquidGlassView` for cutting-edge liquid glass effects on iOS 26+ (with Android fallback to enhanced blur).
|
|
4
|
+
|
|
5
|
+
> **📦 Current Version: 4.0.0** | **⚠️ Breaking Changes**: If upgrading from 3.x, see [Breaking Changes](#️-breaking-changes-in-v400) section.
|
|
6
|
+
|
|
4
7
|
<div align="center">
|
|
5
8
|
<p>
|
|
6
9
|
<img src="https://img.shields.io/npm/v/@sbaiahmed1/react-native-blur?style=for-the-badge&color=blue" alt="npm version" />
|
|
@@ -30,270 +33,182 @@ A modern React Native blur view component that provides native blur effects and
|
|
|
30
33
|
<strong>⚠️ Android automatically falls back to enhanced blur with tint overlay</strong>
|
|
31
34
|
</div>
|
|
32
35
|
|
|
33
|
-
##
|
|
36
|
+
## Requirements
|
|
37
|
+
|
|
38
|
+
| Platform | Minimum Version |
|
|
39
|
+
|----------|----------------|
|
|
40
|
+
| **iOS** | iOS 13.0+ |
|
|
41
|
+
| **Xcode** | Xcode 26.0+ (for liquid glass support) |
|
|
42
|
+
| **React Native** | 0.68+ (New Architecture) |
|
|
43
|
+
| **Android** | API 24+ (Android 7.0) |
|
|
44
|
+
| **Android Gradle Plugin** | 8.9.1+ |
|
|
45
|
+
|
|
46
|
+
> ⚠️ **Note**: LiquidGlassView requires Xcode 26.0+ and iOS 26+ for full glass effects. The component automatically falls back to enhanced blur on older versions.
|
|
47
|
+
|
|
48
|
+
## ⚠️ Breaking Changes in v4.0.0
|
|
49
|
+
|
|
50
|
+
> **Important**: Version 4.0.0 introduces significant API changes. If you're upgrading from 3.x, please read this section carefully.
|
|
51
|
+
|
|
52
|
+
### What Changed
|
|
53
|
+
|
|
54
|
+
In version 3.x, we had a **single `BlurView` component** with a `type` prop that switched between blur and liquid glass modes:
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
// ❌ Old API (v3.x) - DEPRECATED
|
|
58
|
+
<BlurView
|
|
59
|
+
type="blur" // or "liquidGlass"
|
|
60
|
+
blurType="light"
|
|
61
|
+
blurAmount={10}
|
|
62
|
+
glassType="regular" // Mixed blur and glass props
|
|
63
|
+
glassTintColor="#007AFF"
|
|
64
|
+
/>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
In version 4.0.0, we've **separated concerns** into **two dedicated components** for better architecture and cleaner APIs:
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
// ✅ New API (v4.0.0) - Current
|
|
71
|
+
import { BlurView, LiquidGlassView } from '@sbaiahmed1/react-native-blur';
|
|
72
|
+
|
|
73
|
+
// For blur effects
|
|
74
|
+
<BlurView
|
|
75
|
+
blurType="light"
|
|
76
|
+
blurAmount={10}
|
|
77
|
+
/>
|
|
78
|
+
|
|
79
|
+
// For liquid glass effects (iOS 26+)
|
|
80
|
+
<LiquidGlassView
|
|
81
|
+
glassType="regular"
|
|
82
|
+
glassTintColor="#007AFF"
|
|
83
|
+
glassOpacity={0.8}
|
|
84
|
+
/>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Migration from 3.x to 4.0.0
|
|
88
|
+
|
|
89
|
+
**If you were using blur mode:**
|
|
90
|
+
```tsx
|
|
91
|
+
// Before (3.x)
|
|
92
|
+
<BlurView type="blur" blurType="light" blurAmount={10} />
|
|
93
|
+
|
|
94
|
+
// After (4.0.0)
|
|
95
|
+
<BlurView blurType="light" blurAmount={10} />
|
|
96
|
+
```
|
|
34
97
|
|
|
35
|
-
|
|
98
|
+
**If you were using liquid glass mode:**
|
|
99
|
+
```tsx
|
|
100
|
+
// Before (3.x)
|
|
101
|
+
<BlurView
|
|
102
|
+
type="liquidGlass"
|
|
103
|
+
glassType="regular"
|
|
104
|
+
glassTintColor="#007AFF"
|
|
105
|
+
glassOpacity={0.8}
|
|
106
|
+
/>
|
|
36
107
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| **0.3.0+** (Current) | **Xcode 26.0** | ✅ Full liquid glass effects with UIGlassEffect API<br/>✅ Enhanced SwiftUI implementation<br/>✅ All blur types and system materials |
|
|
40
|
-
| **0.2.1** | Xcode 16.0+ | ✅ Standard blur effects<br/>✅ System materials (iOS 13+)<br/>❌ No liquid glass effects |
|
|
108
|
+
// After (4.0.0)
|
|
109
|
+
import { LiquidGlassView } from '@sbaiahmed1/react-native-blur';
|
|
41
110
|
|
|
42
|
-
|
|
111
|
+
<LiquidGlassView
|
|
112
|
+
glassType="regular"
|
|
113
|
+
glassTintColor="#007AFF"
|
|
114
|
+
glassOpacity={0.8}
|
|
115
|
+
/>
|
|
116
|
+
```
|
|
43
117
|
|
|
44
|
-
|
|
45
|
-
|---------------|----------------------|-------------------|-------|
|
|
46
|
-
| **Xcode 26.0+** | ✅ **Fully Supported** | ✅ All features including liquid glass effects<br/>✅ UIGlassEffect API<br/>✅ SwiftUI implementation<br/>✅ All blur types and system materials | **Recommended for current version** |
|
|
47
|
-
| **Xcode 16.x and below** | ❌ **Not Supported** | ❌ Liquid glass effects<br/>❌ UIGlassEffect API<br/>⚠️ Basic blur effects may work with limitations | Use library version 0.2.1 instead |
|
|
118
|
+
### Why This Change?
|
|
48
119
|
|
|
49
|
-
|
|
120
|
+
- **🎯 Cleaner APIs**: Each component now has focused props relevant to its purpose
|
|
121
|
+
- **📦 Better Tree-Shaking**: Import only what you need
|
|
122
|
+
- **🔧 Type Safety**: Separate TypeScript definitions prevent mixing incompatible props
|
|
123
|
+
- **🏗️ Better Architecture**: Separation of concerns following React best practices
|
|
124
|
+
- **📖 Clearer Code**: More explicit about which effect you're using
|
|
50
125
|
|
|
51
|
-
|
|
126
|
+
### Summary
|
|
127
|
+
|
|
128
|
+
- **v3.x**: Single `BlurView` component with `type` prop (blur or liquidGlass)
|
|
129
|
+
- **v4.0.0**: Two components - `BlurView` for blur, `LiquidGlassView` for glass effects
|
|
130
|
+
- **Action Required**: Update imports and split your components based on the effect type you need
|
|
52
131
|
|
|
53
132
|
## Features
|
|
54
133
|
|
|
55
|
-
-
|
|
134
|
+
- � **Two Specialized Components**:
|
|
135
|
+
- `BlurView` - Dedicated blur effects component with multiple blur types
|
|
136
|
+
- `LiquidGlassView` - Separate component for iOS 26+ liquid glass effects
|
|
137
|
+
- �🌊 **Liquid Glass Effects**: Revolutionary glass effects using iOS 26+ UIGlassEffect API
|
|
56
138
|
- 🎨 **Multiple Blur Types**: Support for various blur styles including system materials on iOS
|
|
57
139
|
- 📱 **Cross-Platform**: Works on both iOS and Android
|
|
58
140
|
- ♿ **Accessibility**: Automatic fallback for reduced transparency settings
|
|
59
|
-
- 🔧 **TypeScript**: Full TypeScript support with proper type definitions
|
|
141
|
+
- 🔧 **TypeScript**: Full TypeScript support with proper type definitions for both components
|
|
60
142
|
- 🚀 **Turbo Module**: Built with React Native's new architecture (Fabric)
|
|
61
143
|
- 🎯 **Customizable**: Adjustable blur intensity, glass tint colors, and opacity
|
|
62
144
|
- 💡 **Performance Optimized**: Uses hardware acceleration for smooth rendering
|
|
63
|
-
- 🛠️ **Easy to Use**: Simple
|
|
145
|
+
- 🛠️ **Easy to Use**: Simple, focused APIs for each effect type
|
|
64
146
|
- 📦 **Modern**: Uses SwiftUI for iOS and Kotlin for Android, ensuring cutting-edge development practices
|
|
65
147
|
- 🔄 **Smart Fallbacks**: Graceful degradation from liquid glass to blur on older iOS versions
|
|
66
148
|
|
|
67
|
-
##
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **💎 Liquid Glass Pioneer**: Only library supporting iOS 26+ UIGlassEffect API for stunning liquid glass materials on both platforms
|
|
94
|
-
- **🏗️ Future-Proof Architecture**: Built exclusively for React Native's new architecture (Fabric/Turbo Modules) - no legacy baggage
|
|
95
|
-
- **⚡ Superior Performance**: Hardware acceleration on both platforms with GPU-optimized rendering pipelines
|
|
96
|
-
- **🔧 Modern Development**: Swift for iOS, Kotlin for Android - leveraging the latest native technologies
|
|
97
|
-
- **📈 Active Innovation**: Regular feature updates, performance improvements, and new blur effects
|
|
98
|
-
|
|
99
|
-
**When to choose @react-native-community/blur:**
|
|
100
|
-
- Legacy projects that can't upgrade to new architecture
|
|
101
|
-
- iOS-only applications where Android blur quality isn't important
|
|
102
|
-
- Projects requiring maximum stability over cutting-edge features
|
|
103
|
-
|
|
104
|
-
### 🆚 vs. [expo-blur](https://docs.expo.dev/versions/latest/sdk/blur-view/)
|
|
105
|
-
|
|
106
|
-
| Feature | @sbaiahmed1/react-native-blur | expo-blur |
|
|
107
|
-
|---------|------------------------------|----------|
|
|
108
|
-
| **🚫 Expo Dependency** | ✅ Zero dependencies on Expo ecosystem | ❌ Requires Expo SDK + managed workflow |
|
|
109
|
-
| **📱 Bare React Native** | ✅ Works with any RN project out-of-the-box | ⚠️ Complex setup for bare RN projects |
|
|
110
|
-
| **🤖 Android Support** | ✅ Real hardware-accelerated blur + liquid glass | ⚠️ Simple overlay + Experimental blur (experimentalBlurMethod prop) |
|
|
111
|
-
| **🍎 iOS Support** | ✅ Full native blur + UIGlassEffect (iOS 26+) | ✅ Native UIVisualEffectView support |
|
|
112
|
-
| **💎 Liquid Glass Effects** | ✅ Full support (iOS 26+ UIGlassEffect & Android) | ❌ Not supported, no plans to add |
|
|
113
|
-
| **📦 Bundle Size** | 🟡 Moderate (includes native libs) | ✅ Lightweight (when using Expo managed) |
|
|
114
|
-
| **⚙️ Setup Complexity** | ✅ Simple `npm install` + auto-linking | 🟡 Requires Expo development build setup |
|
|
115
|
-
| **🎨 Blur Types** | ✅ iOS system materials + custom Android effects | ✅ iOS tint types (light, dark, system materials) |
|
|
116
|
-
| **🎯 API Design** | ✅ `blurAmount` + `blurType` for precise control | ✅ `intensity` + `tint` (simple but limited) |
|
|
117
|
-
| **🏗️ New Architecture** | ✅ Native Fabric/Turbo Module support | ✅ Expo handles compatibility layer |
|
|
118
|
-
| **👨💻 Development Experience** | ✅ Standard RN development workflow | ✅ Excellent with Expo CLI tools |
|
|
119
|
-
| **🚀 Production Flexibility** | ✅ Any deployment method (CodePush, OTA, stores) | 🟡 Limited to Expo/EAS deployment |
|
|
120
|
-
| **🔧 Native Module Integration** | ✅ Easy integration with other native modules | ⚠️ May conflict with Expo managed workflow |
|
|
121
|
-
| **🤖 Android Blur Quality** | ✅ Hardware-accelerated real blur | ❌ Experimental (dimezisBlurView or none fallback) |
|
|
122
|
-
|
|
123
|
-
**🚀 Why Choose @sbaiahmed1/react-native-blur:**
|
|
124
|
-
|
|
125
|
-
- **🔓 No Vendor Lock-in**: Complete freedom from Expo ecosystem - works with any React Native setup
|
|
126
|
-
- **🎯 Revolutionary Android**: First library to deliver **real blur effects** on Android, not fake transparency tricks
|
|
127
|
-
- **💎 Liquid Glass Innovation**: Exclusive support for cutting-edge liquid glass materials on both platforms
|
|
128
|
-
- **🏢 Enterprise Ready**: Perfect for brownfield apps, custom native modules, and complex deployment scenarios
|
|
129
|
-
- **🎨 Advanced Customization**: 15+ iOS system materials plus custom Android blur implementations
|
|
130
|
-
- **⚡ Direct Performance**: No abstraction layers - direct access to native blur APIs for maximum performance
|
|
131
|
-
- **🔧 Developer Freedom**: Use any build system, deployment method, or native module without restrictions
|
|
132
|
-
|
|
133
|
-
**When to choose expo-blur:**
|
|
134
|
-
- Already deeply invested in Expo managed workflow
|
|
135
|
-
- Building simple apps with basic blur needs (iOS-focused)
|
|
136
|
-
- Prefer Expo's managed dependency system over manual configuration
|
|
137
|
-
- Don't need advanced blur effects or Android blur quality
|
|
138
|
-
|
|
139
|
-
### ⚡ Performance Comparison
|
|
140
|
-
|
|
141
|
-
| Metric | @sbaiahmed1/react-native-blur | @react-native-community/blur | expo-blur |
|
|
142
|
-
|--------|------------------------------|------------------------------|----------|
|
|
143
|
-
| **🍎 iOS Rendering** | Hardware-accelerated UIVisualEffect + UIGlassEffect | Hardware-accelerated UIVisualEffect | Hardware-accelerated UIVisualEffect |
|
|
144
|
-
| **🤖 Android Rendering** | **Hardware-accelerated real blur** | **Hardware-accelerated real blur** | ❌ Software overlay (fake blur) |
|
|
145
|
-
| **🧠 Memory Usage** | Optimized with native BlurView libs | Optimized with native BlurView libs | Low (no real Android blur) |
|
|
146
|
-
| **⚙️ CPU Impact** | Low (GPU-based on both platforms) | iOS: Low, Android: Minimal (no blur) | iOS: Low, Android: Minimal (no blur) |
|
|
147
|
-
| **📊 Frame Rate Impact** | Minimal impact on both platforms | iOS: Minimal, Android: None (no blur) | iOS: Minimal, Android: None (no blur) |
|
|
148
|
-
| **🎯 Blur Quality** | **Excellent on both platforms** | iOS: Excellent, Android: Poor | iOS: Good, Android: Poor |
|
|
149
|
-
| **💎 Liquid Glass Performance** | **Native UIGlassEffect + Android equivalent** | ❌ Not available | ❌ Not available |
|
|
150
|
-
| **🚀 New Architecture Performance** | **Optimized for Fabric/Turbo Modules** | Limited compatibility | Expo abstraction layer |
|
|
151
|
-
|
|
152
|
-
### 🤝 Community & Support
|
|
153
|
-
|
|
154
|
-
| Aspect | @sbaiahmed1/react-native-blur | @react-native-community/blur | expo-blur |
|
|
155
|
-
|--------|------------------------------|------------------------------|----------|
|
|
156
|
-
| **⭐ GitHub Stars** | 🆕 Growing rapidly (new innovative features) | 🌟 Established (3.8k+, legacy codebase) | 🌟 Part of Expo ecosystem |
|
|
157
|
-
| **🎯 Issue Response** | ✅ **Active core maintainer** (< 24h response) | 🟡 Community-driven (slow response) | ✅ Expo team support |
|
|
158
|
-
| **📚 Documentation Quality** | ✅ **Comprehensive guides + live examples** | 🟡 Basic README only | ✅ Good (Expo docs) |
|
|
159
|
-
| **🔄 Update Frequency** | ✅ **Regular feature updates** (weekly/monthly) | 🟡 Sporadic maintenance updates | ✅ Regular (with Expo releases) |
|
|
160
|
-
| **💔 Breaking Changes** | ✅ **Strict semantic versioning** | ⚠️ Occasional unannounced changes | ✅ Managed by Expo |
|
|
161
|
-
| **🐛 Bug Fixes** | ✅ **Rapid fixes** (same-day for critical issues) | 🟡 Depends on community availability | ✅ Good (Expo team) |
|
|
162
|
-
| **💡 Feature Requests** | ✅ **Actively considered** (roadmap-driven) | 🟡 Limited by maintainer capacity | 🟡 Limited to Expo priorities |
|
|
163
|
-
| **🔧 Technical Support** | ✅ **Direct maintainer support** | 🟡 Community forums only | ✅ Expo Discord/forums |
|
|
164
|
-
|
|
165
|
-
### 🔄 Migration Guide
|
|
166
|
-
|
|
167
|
-
#### 🚀 From @react-native-community/blur
|
|
149
|
+
## Comparison with Other Libraries
|
|
150
|
+
|
|
151
|
+
### Key Advantages
|
|
152
|
+
|
|
153
|
+
- **Two Specialized Components**: Separate `BlurView` and `LiquidGlassView` components for clean architecture
|
|
154
|
+
- **Liquid Glass Effects**: Only library with iOS 26+ UIGlassEffect support
|
|
155
|
+
- **Real Android Blur**: Hardware-accelerated blur on Android (not overlay)
|
|
156
|
+
- **New Architecture**: Built for Fabric/Turbo Modules
|
|
157
|
+
- **Modern Stack**: SwiftUI for iOS, Kotlin for Android
|
|
158
|
+
- **Full TypeScript**: Complete type definitions for both components
|
|
159
|
+
|
|
160
|
+
### vs. @react-native-community/blur
|
|
161
|
+
- ✅ Dedicated components vs single component with mode switching
|
|
162
|
+
- ✅ Liquid glass effects (iOS 26+)
|
|
163
|
+
- ✅ Better new architecture support
|
|
164
|
+
- ✅ Separate prop types for each component
|
|
165
|
+
|
|
166
|
+
### vs. expo-blur
|
|
167
|
+
- ✅ No Expo dependency required
|
|
168
|
+
- ✅ Real Android blur (not experimental)
|
|
169
|
+
- ✅ Works with bare React Native projects
|
|
170
|
+
- ✅ Liquid glass effects support
|
|
171
|
+
|
|
172
|
+
## Migration Guide
|
|
173
|
+
|
|
174
|
+
### From @react-native-community/blur
|
|
168
175
|
|
|
169
176
|
```tsx
|
|
170
|
-
// Before
|
|
177
|
+
// Before
|
|
171
178
|
import { BlurView } from '@react-native-community/blur';
|
|
172
179
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
blurType="light" // Limited to iOS blur types only
|
|
176
|
-
blurAmount={10} // Max 32 on Android (clamped)
|
|
177
|
-
reducedTransparencyFallbackColor="white"
|
|
178
|
-
/>
|
|
180
|
+
// After - same API, now with dedicated components
|
|
181
|
+
import { BlurView, LiquidGlassView } from '@sbaiahmed1/react-native-blur';
|
|
179
182
|
|
|
180
|
-
//
|
|
181
|
-
|
|
183
|
+
// Use BlurView for standard blur
|
|
184
|
+
<BlurView blurType="light" blurAmount={10} />
|
|
182
185
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
blurType="light" // Same API!
|
|
186
|
-
blurAmount={10} // No Android limitations
|
|
187
|
-
reducedTransparencyFallbackColor="white"
|
|
188
|
-
// NEW: Liquid glass support
|
|
189
|
-
type="liquidGlass" // Enable liquid glass effects
|
|
190
|
-
glassType="regular" // iOS 26+ UIGlassEffect styles
|
|
191
|
-
glassTintColor="#007AFF" // Glass tint color
|
|
192
|
-
glassOpacity={0.8} // Glass opacity (0-1)
|
|
193
|
-
/>
|
|
186
|
+
// Or LiquidGlassView for glass effects (iOS 26+)
|
|
187
|
+
<LiquidGlassView glassType="regular" glassTintColor="#007AFF" glassOpacity={0.8} />
|
|
194
188
|
```
|
|
195
189
|
|
|
196
|
-
|
|
197
|
-
- **🎯 Zero Breaking Changes**: Drop-in replacement with same API
|
|
198
|
-
- **🤖 Real Android Blur**: Instantly get hardware-accelerated blur on Android
|
|
199
|
-
- **💎 Liquid Glass Bonus**: Add cutting-edge liquid glass effects with one prop
|
|
200
|
-
- **⚡ Better Performance**: Hardware acceleration on both platforms
|
|
201
|
-
- **🏗️ Future-Proof**: Built for React Native's new architecture
|
|
202
|
-
|
|
203
|
-
#### 🚀 From expo-blur
|
|
190
|
+
### From expo-blur
|
|
204
191
|
|
|
205
192
|
```tsx
|
|
206
|
-
// Before
|
|
193
|
+
// Before
|
|
207
194
|
import { BlurView } from 'expo-blur';
|
|
195
|
+
<BlurView intensity={50} tint="light" />
|
|
208
196
|
|
|
209
|
-
|
|
210
|
-
intensity={50} // 0-100 intensity scale
|
|
211
|
-
tint="light" // light, dark, default, system materials
|
|
212
|
-
experimentalBlurMethod="dimezisBlurView" // Android experimental blur
|
|
213
|
-
style={styles.absolute}
|
|
214
|
-
>
|
|
215
|
-
<Text>Content</Text>
|
|
216
|
-
</BlurView>
|
|
217
|
-
|
|
218
|
-
// After - No dependencies + real Android blur
|
|
197
|
+
// After
|
|
219
198
|
import { BlurView } from '@sbaiahmed1/react-native-blur';
|
|
220
|
-
|
|
221
|
-
<BlurView
|
|
222
|
-
blurAmount={50} // intensity → blurAmount (same scale)
|
|
223
|
-
blurType="light" // tint → blurType (same options + more)
|
|
224
|
-
style={styles.absolute}
|
|
225
|
-
// NEW: Advanced features
|
|
226
|
-
type="liquidGlass" // Liquid glass effects
|
|
227
|
-
glassType="regular" // iOS 26+ materials
|
|
228
|
-
glassTintColor="#007AFF" // Glass tint color
|
|
229
|
-
glassOpacity={0.8} // Glass opacity (0-1)
|
|
230
|
-
isInteractive={true} // Touch interaction support
|
|
231
|
-
// No experimental props needed - real blur by default
|
|
232
|
-
>
|
|
233
|
-
<Text>Content</Text>
|
|
234
|
-
</BlurView>
|
|
199
|
+
<BlurView blurAmount={50} blurType="light" />
|
|
235
200
|
```
|
|
236
201
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
- **🎨 More Customization**: 15+ blur types vs basic intensity control
|
|
243
|
-
|
|
244
|
-
#### 🛠️ Quick Migration Checklist
|
|
245
|
-
|
|
246
|
-
1. **Install the library:**
|
|
247
|
-
```bash
|
|
248
|
-
npm uninstall @react-native-community/blur expo-blur
|
|
249
|
-
npm install @sbaiahmed1/react-native-blur
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
2. **Update imports:**
|
|
253
|
-
```tsx
|
|
254
|
-
// Replace old imports
|
|
255
|
-
import { BlurView } from '@sbaiahmed1/react-native-blur';
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
3. **Optional: Add liquid glass effects:**
|
|
259
|
-
```tsx
|
|
260
|
-
<BlurView
|
|
261
|
-
type="liquidGlass"
|
|
262
|
-
glassType="regular"
|
|
263
|
-
glassTintColor="#007AFF"
|
|
264
|
-
glassOpacity={0.8}
|
|
265
|
-
/>
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
4. **Test on Android:** Experience real blur effects for the first time! 🎉
|
|
269
|
-
|
|
270
|
-
### Recommendation
|
|
271
|
-
|
|
272
|
-
**Choose @sbaiahmed1/react-native-blur if:**
|
|
273
|
-
- You need **real blur effects on Android** (not experimental/fallback methods)
|
|
274
|
-
- You want **liquid glass effects** for modern iOS apps (iOS 26+)
|
|
275
|
-
- You're building with **React Native's new architecture** (Fabric/Turbo Modules)
|
|
276
|
-
- You need **maximum performance** on both platforms
|
|
277
|
-
- You want **comprehensive TypeScript support** with IntelliSense
|
|
278
|
-
- You prefer **modern API design** with intuitive prop names
|
|
279
|
-
- You need **unlimited blur intensity** on Android (no 32-unit clamp)
|
|
280
|
-
|
|
281
|
-
**Choose @react-native-community/blur if:**
|
|
282
|
-
- You're working with **legacy React Native projects** (< 0.68)
|
|
283
|
-
- You need **battle-tested stability** over cutting-edge features
|
|
284
|
-
- Your app **primarily targets iOS** (where it performs excellently)
|
|
285
|
-
- You can accept **limited Android blur quality** (overlay-based)
|
|
286
|
-
- You prefer **community-driven** open source projects
|
|
287
|
-
|
|
288
|
-
**Choose expo-blur if:**
|
|
289
|
-
- You're already **committed to the Expo ecosystem**
|
|
290
|
-
- You're building **simple apps** with basic blur needs
|
|
291
|
-
- You want **zero native configuration** (Expo managed workflow)
|
|
292
|
-
- **Bundle size** is your primary concern
|
|
293
|
-
- You can accept **experimental Android blur** with potential fallbacks
|
|
202
|
+
**Migration Steps:**
|
|
203
|
+
1. Uninstall old library: `npm uninstall @react-native-community/blur expo-blur`
|
|
204
|
+
2. Install: `npm install @sbaiahmed1/react-native-blur`
|
|
205
|
+
3. Update imports
|
|
206
|
+
4. Run `cd ios && pod install`
|
|
294
207
|
|
|
295
208
|
## Installation
|
|
296
209
|
|
|
210
|
+
> ⚠️ **ANDROID USERS**: This library requires Android Gradle Plugin (AGP) version **8.9.1 or newer**. See [Android Setup Requirements](#android-setup) for details.
|
|
211
|
+
|
|
297
212
|
```bash
|
|
298
213
|
npm install @sbaiahmed1/react-native-blur
|
|
299
214
|
# or
|
|
@@ -310,52 +225,35 @@ cd ios && pod install
|
|
|
310
225
|
|
|
311
226
|
### Android Setup
|
|
312
227
|
|
|
313
|
-
|
|
314
|
-
- **Minimum SDK:** API level 24 (Android 7.0)
|
|
315
|
-
- **Target SDK:** API level 35 (Android 15)
|
|
316
|
-
- **Compile SDK:** API level 35 (Android 15)
|
|
317
|
-
- **Gradle:** 8.10.2
|
|
318
|
-
- **Kotlin:** 2.0.21
|
|
319
|
-
|
|
320
|
-
### Dependencies
|
|
321
|
-
The Android implementation uses the [BlurView library by Dimezis](https://github.com/Dimezis/BlurView):
|
|
322
|
-
```gradle
|
|
323
|
-
implementation 'com.github.Dimezis:BlurView:version-2.0.6'
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
### Implementation Details
|
|
327
|
-
The Android implementation leverages the BlurView library to provide real blur effects:
|
|
228
|
+
The library uses native Android blur with automatic platform detection. No additional configuration required beyond ensuring minimum requirements:
|
|
328
229
|
|
|
329
|
-
- **
|
|
330
|
-
- **
|
|
331
|
-
- **Multiple Blur Algorithms:** Supports different blur implementations based on device capabilities
|
|
332
|
-
- **Performance Optimized:** Efficient blur rendering with minimal impact on app performance
|
|
333
|
-
- **Fallback Handling:** Gracefully handles devices with limited graphics capabilities
|
|
334
|
-
- **No Extra Permissions:** Does not require additional Android permissions
|
|
230
|
+
- **Min SDK:** API 24 (Android 7.0)
|
|
231
|
+
- **Android Gradle Plugin:** 8.9.1+
|
|
335
232
|
|
|
336
|
-
|
|
233
|
+
> ⚠️ **AGP Requirement**: Requires Android Gradle Plugin **8.9.1 or newer**. Check `android/build.gradle`:
|
|
234
|
+
> ```gradle
|
|
235
|
+
> classpath "com.android.tools.build:gradle:8.9.1" // or higher
|
|
236
|
+
> ```
|
|
337
237
|
|
|
338
|
-
|
|
238
|
+
> 📦 **Dependency**: The library uses [QmBlurView](https://github.com/QmDeve/QmBlurView) from Maven Central:
|
|
239
|
+
> ```gradle
|
|
240
|
+
> implementation 'com.qmdeve:QmBlurView:1.0.4.3'
|
|
241
|
+
> ```
|
|
339
242
|
|
|
340
|
-
|
|
341
|
-
-
|
|
342
|
-
-
|
|
243
|
+
The implementation automatically handles different Android versions:
|
|
244
|
+
- Android 12+: Uses `RenderEffectBlur`
|
|
245
|
+
- Android 10-11: Falls back to `RenderScriptBlur`
|
|
246
|
+
- Older versions: Lightweight overlay fallback
|
|
343
247
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
#### Troubleshooting Android Issues
|
|
347
|
-
|
|
348
|
-
If you encounter `java.lang.NoClassDefFoundError: Failed resolution of: Landroid/graphics/RenderEffect;` on Android 10 or 11:
|
|
248
|
+
## Usage
|
|
349
249
|
|
|
350
|
-
|
|
351
|
-
2. **Update to latest version** - Ensure you're using the latest version of this library
|
|
352
|
-
3. **Clean and rebuild** - Run `cd android && ./gradlew clean` then rebuild your project
|
|
250
|
+
The library now provides **two specialized components** for different visual effects:
|
|
353
251
|
|
|
354
|
-
|
|
252
|
+
### BlurView - Standard Blur Effects
|
|
355
253
|
|
|
356
|
-
|
|
254
|
+
Use `BlurView` for standard blur effects across all platforms:
|
|
357
255
|
|
|
358
|
-
|
|
256
|
+
#### Basic Usage
|
|
359
257
|
|
|
360
258
|
```tsx
|
|
361
259
|
import React from 'react';
|
|
@@ -384,7 +282,7 @@ export default function App() {
|
|
|
384
282
|
}
|
|
385
283
|
```
|
|
386
284
|
|
|
387
|
-
|
|
285
|
+
#### Advanced Blur Usage
|
|
388
286
|
|
|
389
287
|
```tsx
|
|
390
288
|
import React from 'react';
|
|
@@ -407,16 +305,17 @@ function MyComponent() {
|
|
|
407
305
|
}
|
|
408
306
|
```
|
|
409
307
|
|
|
410
|
-
### Liquid Glass
|
|
308
|
+
### LiquidGlassView - Liquid Glass Effects (iOS 26+)
|
|
309
|
+
|
|
310
|
+
Use `LiquidGlassView` for cutting-edge liquid glass effects. **Note:** This component automatically falls back to enhanced blur on Android and older iOS versions.
|
|
411
311
|
|
|
412
312
|
```tsx
|
|
413
313
|
import React from 'react';
|
|
414
|
-
import {
|
|
314
|
+
import { LiquidGlassView } from '@sbaiahmed1/react-native-blur';
|
|
415
315
|
|
|
416
316
|
function LiquidGlassComponent() {
|
|
417
317
|
return (
|
|
418
|
-
<
|
|
419
|
-
type="liquidGlass"
|
|
318
|
+
<LiquidGlassView
|
|
420
319
|
glassType="regular"
|
|
421
320
|
glassTintColor="#007AFF"
|
|
422
321
|
glassOpacity={0.8}
|
|
@@ -426,33 +325,75 @@ function LiquidGlassComponent() {
|
|
|
426
325
|
}}
|
|
427
326
|
>
|
|
428
327
|
<Text>Beautiful liquid glass effect</Text>
|
|
429
|
-
</
|
|
328
|
+
</LiquidGlassView>
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
#### Interactive Liquid Glass
|
|
334
|
+
|
|
335
|
+
```tsx
|
|
336
|
+
import React from 'react';
|
|
337
|
+
import { LiquidGlassView } from '@sbaiahmed1/react-native-blur';
|
|
338
|
+
|
|
339
|
+
function InteractiveGlass() {
|
|
340
|
+
return (
|
|
341
|
+
<LiquidGlassView
|
|
342
|
+
glassType="regular"
|
|
343
|
+
glassTintColor="#007AFF"
|
|
344
|
+
glassOpacity={0.9}
|
|
345
|
+
isInteractive={true} // Enables touch interaction (iOS 26+ only)
|
|
346
|
+
ignoreSafeArea={false}
|
|
347
|
+
style={{
|
|
348
|
+
flex: 1,
|
|
349
|
+
padding: 30,
|
|
350
|
+
}}
|
|
351
|
+
>
|
|
352
|
+
<Text>Interactive liquid glass that responds to touch</Text>
|
|
353
|
+
</LiquidGlassView>
|
|
430
354
|
);
|
|
431
355
|
}
|
|
432
356
|
```
|
|
433
357
|
|
|
434
358
|
## Props
|
|
435
359
|
|
|
360
|
+
The library now provides two separate components with their own props:
|
|
361
|
+
|
|
362
|
+
### BlurView Props
|
|
363
|
+
|
|
436
364
|
All props are optional and have sensible defaults.
|
|
437
365
|
|
|
438
366
|
| Prop | Type | Default | Description |
|
|
439
367
|
|------|------|---------|-------------|
|
|
440
|
-
| `type` | `'blur' \| 'liquidGlass'` | `'blur'` | The type of effect to apply. **Note**: `'liquidGlass'` is iOS 26+ only, falls back to enhanced blur on Android |
|
|
441
368
|
| `blurType` | `BlurType` | `'xlight'` | The type of blur effect to apply |
|
|
442
369
|
| `blurAmount` | `number` | `10.0` | The intensity of the blur effect (0-100) |
|
|
443
|
-
| `
|
|
444
|
-
| `glassTintColor` | `string` | `'clear'` | The tint color for glass effect |
|
|
445
|
-
| `glassOpacity` | `number` | `1.0` | The opacity of glass effect (0-1) |
|
|
446
|
-
| `isInteractive` | `boolean` | `true` | (iOS only) Controls whether the liquid glass effect is interactive. When `false`, the liquid glass effect will not react to touch or movement. Only applicable when `type` is `'liquidGlass'` and iOS 26+. |
|
|
370
|
+
| `ignoreSafeArea` | `boolean` | `false` | (iOS only) Controls whether the blur effect should ignore all safe area edges |
|
|
447
371
|
| `reducedTransparencyFallbackColor` | `string` | `'#FFFFFF'` | Fallback color when reduced transparency is enabled |
|
|
448
372
|
| `style` | `ViewStyle` | `undefined` | Style object for the blur view |
|
|
449
373
|
| `children` | `ReactNode` | `undefined` | Child components to render inside the blur view |
|
|
450
374
|
|
|
451
|
-
|
|
375
|
+
### LiquidGlassView Props
|
|
452
376
|
|
|
453
|
-
|
|
377
|
+
All props are optional and have sensible defaults.
|
|
378
|
+
|
|
379
|
+
| Prop | Type | Default | Description |
|
|
380
|
+
|------|------|---------|-------------|
|
|
381
|
+
| `glassType` | `GlassType` | `'clear'` | The type of glass effect (iOS 26+ only) |
|
|
382
|
+
| `glassTintColor` | `string` | `'clear'` | The tint color for glass effect. Accepts hex colors or color names |
|
|
383
|
+
| `glassOpacity` | `number` | `1.0` | The opacity of glass effect (0-1) |
|
|
384
|
+
| `isInteractive` | `boolean` | `true` | (iOS 26+ only) Controls whether the liquid glass effect is interactive and reacts to touch |
|
|
385
|
+
| `ignoreSafeArea` | `boolean` | `false` | (iOS only) Controls whether the glass effect should ignore all safe area edges |
|
|
386
|
+
| `reducedTransparencyFallbackColor` | `string` | `'#FFFFFF'` | Fallback color when reduced transparency is enabled or on older iOS versions |
|
|
387
|
+
| `style` | `ViewStyle` | `undefined` | Style object for the glass view |
|
|
388
|
+
| `children` | `ReactNode` | `undefined` | Child components to render inside the glass view |
|
|
389
|
+
|
|
390
|
+
> **Note**: The `BlurType` and `GlassType` are exported types from the library. See [Blur Types](#blur-types) and [Glass Types](#glass-types) sections below for all available values.
|
|
391
|
+
|
|
392
|
+
> **Platform Note**: `LiquidGlassView` automatically falls back to `BlurView` on Android and iOS versions older than iOS 26.
|
|
454
393
|
|
|
455
|
-
|
|
394
|
+
## Blur Types (BlurView)
|
|
395
|
+
|
|
396
|
+
The following blur types are supported for `BlurView`:
|
|
456
397
|
|
|
457
398
|
### iOS & Android
|
|
458
399
|
- `'light'` - Light blur effect
|
|
@@ -469,36 +410,66 @@ The following blur types are supported:
|
|
|
469
410
|
- `'systemThickMaterial'` - Thick material (iOS 13+)
|
|
470
411
|
- `'systemChromeMaterial'` - Chrome material (iOS 13+)
|
|
471
412
|
|
|
413
|
+
## Glass Types (LiquidGlassView)
|
|
414
|
+
|
|
415
|
+
The following glass types are supported for `LiquidGlassView` on iOS 26+:
|
|
416
|
+
|
|
417
|
+
- `'clear'` - Clear glass effect (default)
|
|
418
|
+
- `'regular'` - Regular glass effect with more pronounced appearance
|
|
419
|
+
|
|
420
|
+
> **Note**: On Android and iOS versions older than iOS 26, `LiquidGlassView` automatically falls back to an enhanced blur effect that approximates the glass appearance.
|
|
421
|
+
|
|
472
422
|
## Platform Differences
|
|
473
423
|
|
|
474
424
|
### iOS
|
|
475
|
-
On iOS, this component has been completely rewritten using **SwiftUI** for modern performance and features:
|
|
476
425
|
|
|
477
|
-
|
|
478
|
-
|
|
426
|
+
Both components have been completely rewritten using **SwiftUI** for modern performance and features:
|
|
427
|
+
|
|
428
|
+
#### BlurView
|
|
429
|
+
- **iOS 13+**: Uses native `UIVisualEffectView` with precise blur intensity control
|
|
479
430
|
- **Older iOS**: Graceful fallback to standard blur effects
|
|
480
431
|
- **SwiftUI Integration**: Leverages SwiftUI's declarative UI for better performance and maintainability
|
|
481
432
|
|
|
433
|
+
#### LiquidGlassView
|
|
434
|
+
- **iOS 26+**: Uses native `UIGlassEffect` API for true liquid glass effects with customizable tint colors and opacity
|
|
435
|
+
- **iOS < 26**: Automatically falls back to `BlurView` with enhanced blur effects
|
|
436
|
+
- **SwiftUI Implementation**: Full hardware-accelerated glass effects with interactive touch support
|
|
437
|
+
|
|
482
438
|
### Android
|
|
483
|
-
On Android, the component uses the BlurView library to provide real blur effects with hardware acceleration. The implementation supports multiple blur algorithms and gracefully falls back to translucent overlay approximation on devices with limited graphics capabilities.
|
|
484
439
|
|
|
485
|
-
|
|
440
|
+
#### BlurView
|
|
441
|
+
The component uses the QmBlurView library to provide real blur effects with hardware acceleration. The implementation supports multiple blur algorithms and gracefully falls back to translucent overlay approximation on devices with limited graphics capabilities.
|
|
442
|
+
|
|
443
|
+
#### LiquidGlassView
|
|
444
|
+
**⚠️ Platform Limitation**: Liquid glass effects are **iOS 26+ exclusive**. On Android, `LiquidGlassView` automatically falls back to `BlurView` with enhanced blur and tint overlay to approximate the visual effect.
|
|
486
445
|
|
|
487
446
|
## Accessibility
|
|
488
447
|
|
|
489
|
-
|
|
448
|
+
Both components automatically respect the "Reduce Transparency" accessibility setting:
|
|
490
449
|
|
|
450
|
+
### BlurView
|
|
491
451
|
- **iOS**: When reduce transparency is enabled, the blur view is hidden and a fallback view with solid color is shown
|
|
492
452
|
- **Android**: The fallback color is always used as the base for the blur approximation
|
|
493
453
|
|
|
494
|
-
|
|
454
|
+
### LiquidGlassView
|
|
455
|
+
- **iOS 26+**: When reduce transparency is enabled, the liquid glass effect is hidden and a fallback view with solid color is shown
|
|
456
|
+
- **iOS < 26 & Android**: Automatically falls back to `BlurView` behavior
|
|
457
|
+
|
|
458
|
+
You can customize the fallback color using the `reducedTransparencyFallbackColor` prop on both components.
|
|
495
459
|
|
|
496
460
|
## TypeScript Support
|
|
497
461
|
|
|
498
|
-
This package includes full TypeScript definitions:
|
|
462
|
+
This package includes full TypeScript definitions for both components:
|
|
499
463
|
|
|
500
464
|
```tsx
|
|
501
|
-
import {
|
|
465
|
+
import {
|
|
466
|
+
BlurView,
|
|
467
|
+
LiquidGlassView,
|
|
468
|
+
BlurType,
|
|
469
|
+
GlassType,
|
|
470
|
+
BlurViewProps,
|
|
471
|
+
LiquidGlassViewProps
|
|
472
|
+
} from '@sbaiahmed1/react-native-blur';
|
|
502
473
|
|
|
503
474
|
// BlurType is exported for type checking
|
|
504
475
|
const blurType: BlurType = 'systemMaterial';
|
|
@@ -507,27 +478,40 @@ const blurType: BlurType = 'systemMaterial';
|
|
|
507
478
|
const glassType: GlassType = 'regular';
|
|
508
479
|
|
|
509
480
|
// BlurViewProps for component props
|
|
510
|
-
interface
|
|
481
|
+
interface MyBlurComponentProps {
|
|
511
482
|
blurProps: BlurViewProps;
|
|
512
483
|
}
|
|
513
484
|
|
|
514
|
-
//
|
|
515
|
-
|
|
516
|
-
|
|
485
|
+
// LiquidGlassViewProps for glass component props
|
|
486
|
+
interface MyGlassComponentProps {
|
|
487
|
+
glassProps: LiquidGlassViewProps;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// Example with BlurView properties
|
|
491
|
+
const blurProps: BlurViewProps = {
|
|
492
|
+
blurType: 'systemMaterial',
|
|
493
|
+
blurAmount: 50,
|
|
494
|
+
reducedTransparencyFallbackColor: '#FFFFFF',
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
// Example with LiquidGlassView properties
|
|
498
|
+
const liquidGlassProps: LiquidGlassViewProps = {
|
|
517
499
|
glassType: 'regular',
|
|
518
500
|
glassTintColor: '#007AFF',
|
|
519
501
|
glassOpacity: 0.8,
|
|
502
|
+
isInteractive: true,
|
|
520
503
|
};
|
|
521
504
|
```
|
|
522
505
|
|
|
523
506
|
## Example App
|
|
524
507
|
|
|
525
|
-
The package includes a comprehensive example app that demonstrates
|
|
508
|
+
The package includes a comprehensive example app that demonstrates both components with all their features. The example app features:
|
|
526
509
|
|
|
527
|
-
- **
|
|
528
|
-
- **
|
|
529
|
-
- **Practical Use Cases**: Real-world examples like cards, modals, and overlays
|
|
530
|
-
- **Comparison Views**: Side-by-side comparisons
|
|
510
|
+
- **BlurView Demo**: Interactive blur type selector with live preview of all blur types
|
|
511
|
+
- **LiquidGlassView Demo**: Showcase of iOS 26+ glass effects with customizable properties
|
|
512
|
+
- **Practical Use Cases**: Real-world examples like cards, modals, and overlays using both components
|
|
513
|
+
- **Comparison Views**: Side-by-side comparisons between BlurView and LiquidGlassView effects
|
|
514
|
+
- **Platform Fallbacks**: Visual demonstrations of how effects degrade gracefully on older platforms
|
|
531
515
|
|
|
532
516
|
To run the example:
|
|
533
517
|
|
|
@@ -542,20 +526,44 @@ yarn android
|
|
|
542
526
|
|
|
543
527
|
## Performance Considerations
|
|
544
528
|
|
|
529
|
+
### BlurView
|
|
545
530
|
- **iOS**:
|
|
546
531
|
- **SwiftUI Implementation**: Enhanced performance with declarative UI updates
|
|
547
|
-
- **
|
|
548
|
-
- **
|
|
549
|
-
|
|
550
|
-
-
|
|
532
|
+
- **Native Blur Effects**: Hardware-accelerated `UIVisualEffectView` for performant rendering
|
|
533
|
+
- **Precise Control**: Adjustable blur intensity with smooth animations
|
|
534
|
+
- **Android**:
|
|
535
|
+
- Real blur effects are hardware-accelerated with QmBlurView
|
|
536
|
+
- Fallback to lightweight overlay when needed on limited devices
|
|
537
|
+
|
|
538
|
+
### LiquidGlassView
|
|
539
|
+
- **iOS 26+**:
|
|
540
|
+
- **Hardware-Accelerated Glass**: Native `UIGlassEffect` API with minimal performance impact
|
|
541
|
+
- **Interactive Effects**: Smooth touch interactions without performance degradation
|
|
542
|
+
- **SwiftUI Powered**: Optimized declarative UI updates
|
|
543
|
+
- **iOS < 26 & Android**:
|
|
544
|
+
- Automatic fallback to `BlurView` with enhanced blur effects
|
|
545
|
+
- Same performance characteristics as `BlurView`
|
|
546
|
+
|
|
547
|
+
### General Tips
|
|
551
548
|
- Avoid using too many blur/glass views simultaneously on lower-end devices
|
|
552
549
|
- Consider using `reducedTransparencyFallbackColor` for better accessibility
|
|
553
|
-
-
|
|
550
|
+
- `LiquidGlassView` automatically falls back to `BlurView` on unsupported platforms
|
|
551
|
+
- Both components are optimized for React Native's new architecture (Fabric)
|
|
554
552
|
|
|
555
|
-
## What's New in
|
|
553
|
+
## What's New in v4.0.0
|
|
554
|
+
|
|
555
|
+
> **⚠️ Breaking Changes**: v4.0.0 introduces a major API redesign. See [Breaking Changes](#️-breaking-changes-in-v400) section above for migration guide.
|
|
556
|
+
|
|
557
|
+
### 🎯 Component Separation (BREAKING CHANGE)
|
|
558
|
+
- **Two Specialized Components**: Split single `BlurView` into dedicated `BlurView` and `LiquidGlassView` components
|
|
559
|
+
- **Removed `type` prop**: No more switching between blur/liquidGlass modes - use the appropriate component instead
|
|
560
|
+
- **Cleaner APIs**: Each component has focused props without mixing blur and glass properties
|
|
561
|
+
- **Better Architecture**: True separation of concerns following React best practices
|
|
562
|
+
- **Improved Type Safety**: Separate TypeScript definitions prevent incompatible prop combinations
|
|
556
563
|
|
|
557
564
|
### 🌊 Liquid Glass Effects (iOS 26+)
|
|
558
565
|
- Revolutionary glass effects using Apple's new UIGlassEffect API
|
|
566
|
+
- Dedicated `LiquidGlassView` component for glass-specific effects
|
|
559
567
|
- Customizable glass types: `clear` and `regular`
|
|
560
568
|
- Adjustable tint colors and opacity for stunning visual effects
|
|
561
569
|
- Automatic fallback to enhanced blur on older iOS versions and Android
|
|
@@ -567,16 +575,17 @@ yarn android
|
|
|
567
575
|
- Improved blur intensity control with precise animation handling
|
|
568
576
|
|
|
569
577
|
### 📱 Enhanced Example App
|
|
570
|
-
-
|
|
578
|
+
- Separate demonstrations for BlurView and LiquidGlassView
|
|
571
579
|
- Interactive property controls for real-time customization
|
|
572
580
|
- Practical use case examples (cards, modals, overlays)
|
|
573
|
-
- Comparison views
|
|
581
|
+
- Comparison views showing both components side by side
|
|
574
582
|
|
|
575
583
|
### 🛠️ Developer Experience
|
|
576
|
-
- Full TypeScript support for
|
|
584
|
+
- Full TypeScript support with separate prop types for each component (`BlurViewProps`, `LiquidGlassViewProps`)
|
|
585
|
+
- Cleaner, more intuitive API design
|
|
577
586
|
- Improved component layout handling
|
|
578
587
|
- Better accessibility support with smart fallbacks
|
|
579
|
-
- Enhanced documentation
|
|
588
|
+
- Enhanced documentation with breaking changes guide
|
|
580
589
|
|
|
581
590
|
## Contributing
|
|
582
591
|
|
|
@@ -599,4 +608,6 @@ MIT
|
|
|
599
608
|
|
|
600
609
|
## Credits
|
|
601
610
|
|
|
611
|
+
QMBlur library: https://github.com/QmDeve/QmBlurView
|
|
612
|
+
|
|
602
613
|
Built with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|