expo-gradient-text
Version:
A beautiful and customizable gradient text component for React Native Expo applications
211 lines (156 loc) • 5.33 kB
Markdown
A beautiful and customizable gradient text component for React Native Expo applications. Create awesome text effects with smooth color gradients in any direction.

- 🎨 **Customizable Colors** - Use any gradient color combination
- 📐 **Direction Control** - Horizontal, vertical, or diagonal gradients
- 🎯 **Easy Integration** - Drop-in replacement for React Native Text
- 🔧 **Flexible Styling** - Supports all Text component styles
- 📱 **Expo Compatible** - Works seamlessly with Expo managed workflow
- ⚡ **Performance Optimized** - Efficient rendering using MaskedView
Install the package and required peer dependencies:
```bash
npm install expo-gradient-text
npx expo install expo-linear-gradient @react-native-masked-view/masked-view
```
```jsx
import React from 'react';
import { View } from 'react-native';
import GradientText from 'expo-gradient-text';
export default function App() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<GradientText style={{ fontSize: 32, fontWeight: 'bold' }}>
Hello Gradient!
</GradientText>
</View>
);
}
```
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `children` | `string \| React.ReactNode` | **Required** | The text content to display |
| `colors` | `string[]` | `['#FF6B6B', '#4ECDC4']` | Array of colors for the gradient |
| `start` | `{x: number, y: number}` | `{x: 0, y: 0}` | Starting point of the gradient |
| `end` | `{x: number, y: number}` | `{x: 1, y: 0}` | Ending point of the gradient |
| `style` | `TextStyle` | `{}` | Style object for the text |
| `...textProps` | `TextProps` | - | All other React Native Text props |
```jsx
// Horizontal (left to right)
start={{ x: 0, y: 0 }} end={{ x: 1, y: 0 }}
// Vertical (top to bottom)
start={{ x: 0, y: 0 }} end={{ x: 0, y: 1 }}
// Diagonal (top-left to bottom-right)
start={{ x: 0, y: 0 }} end={{ x: 1, y: 1 }}
// Diagonal (top-right to bottom-left)
start={{ x: 1, y: 0 }} end={{ x: 0, y: 1 }}
```
```jsx
<GradientText style={{ fontSize: 24, fontWeight: 'bold' }}>
Welcome!
</GradientText>
```
iOS | Android
:-------------------------:|:-------------------------:
<img src="images/preview.png" height="300" alt="Preview" /> | <img src="images/preview-android.png" height="300" style="" alt="Preview" />
```jsx
<GradientText
colors={['#667eea', '#764ba2']}
style={{ fontSize: 28, fontWeight: '600' }}
>
Custom Gradient
</GradientText>
```
```jsx
<GradientText
colors={['#ff9a9e', '#fecfef']}
start={{ x: 0, y: 0 }}
end={{ x: 0, y: 1 }}
style={{ fontSize: 32, fontWeight: 'bold' }}
>
Vertical Flow
</GradientText>
```
```jsx
<GradientText
colors={['#ff0000', '#ff8000', '#ffff00', '#80ff00', '#00ff80', '#0080ff', '#8000ff']}
style={{ fontSize: 26, fontWeight: 'bold' }}
>
Rainbow Magic
</GradientText>
```
```jsx
<GradientText
colors={['#ff7e5f', '#feb47b']}
start={{ x: 0, y: 0 }}
end={{ x: 1, y: 1 }}
style={{ fontSize: 30, fontWeight: 'bold' }}
>
Sunset Vibes
</GradientText>
```
```jsx
// Ocean Breeze
colors={['#667eea', '#764ba2']}
// Warm Sunset
colors={['#ff7e5f', '#feb47b']}
// Cool Blues
colors={['#74b9ff', '#0984e3']}
// Purple Dream
colors={['#a29bfe', '#6c5ce7']}
// Green Nature
colors={['#55efc4', '#00b894']}
// Fire Gradient
colors={['#fd79a8', '#fdcb6e', '#e17055']}
// Night Sky
colors={['#2d3436', '#636e72', '#b2bec3']}
```
The component uses a combination of `MaskedView` and `LinearGradient` to achieve the gradient text effect:
1. **MaskedView** - Creates a mask using the text shape
2. **LinearGradient** - Provides the gradient background
3. **Text** - Invisible text that defines the mask boundaries
```typescript
interface GradientTextProps extends TextProps {
children: React.ReactNode;
colors?: string[];
start?: { x: number; y: number };
end?: { x: number; y: number };
style?: StyleProp<TextStyle>;
}
```
- ✅ iOS
- ✅ Android
- ✅ Expo Go
- ✅ Expo Dev Build
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## 📝 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- Built with [Expo Linear Gradient](https://docs.expo.dev/versions/latest/sdk/linear-gradient/)
- Uses [React Native Masked View](https://github.com/react-native-masked-view/masked-view)
- Inspired by modern gradient design trends
---
**Made with ❤️ for the React Native community**