Top Related Projects
A framework for building native applications using React
A complete native navigation solution for React Native
Cross-Platform React Native UI Toolkit
:boom: React Native UI Library based on Eva Design System :new_moon_with_face::sparkles:Dark Mode
Mobile-first, accessible components for React Native & Web to build consistent UI across Android, iOS and Web.
Customizable Icons for React Native with support for image source and full styling.
Quick Overview
The react-native-dribbble-app is a React Native application that showcases Dribbble shots. It demonstrates how to build a mobile app using React Native while integrating with the Dribbble API to display design content. The project serves as a practical example for developers looking to create similar apps or learn React Native development.
Pros
- Provides a real-world example of React Native app development
- Demonstrates integration with a third-party API (Dribbble)
- Includes implementation of common mobile app features like navigation and image loading
- Serves as a learning resource for React Native beginners
Cons
- The project hasn't been updated recently, which may mean it's using outdated dependencies
- Limited documentation on setup and configuration
- May not follow the most current React Native best practices due to its age
- Lacks comprehensive error handling and edge case management
Code Examples
- Fetching Dribbble shots:
fetchShots = (page = 1) => {
const { shotType } = this.state;
const shotTypes = ['popular', 'recent', 'debuts'];
fetch(`https://api.dribbble.com/v1/shots?access_token=${ACCESS_TOKEN}&page=${page}&per_page=10&list=${shotTypes[shotType]}`)
.then(response => response.json())
.then(shots => this.setState({ shots: page === 1 ? shots : [...this.state.shots, ...shots] }))
.catch(error => console.log(error));
};
- Rendering a shot item:
renderRow = (shot) => {
return (
<TouchableHighlight onPress={() => this.goToShot(shot)} underlayColor='transparent'>
<View style={styles.row}>
<Image style={styles.image} source={{uri: shot.images.normal}} />
<View style={styles.textContainer}>
<Text style={styles.title} numberOfLines={1}>{shot.title}</Text>
<Text style={styles.text} numberOfLines={1}>{shot.user.name}</Text>
</View>
</View>
</TouchableHighlight>
);
};
- Navigation setup:
const AppNavigator = createStackNavigator({
Home: { screen: ShotsScreen },
Shot: { screen: ShotDetails },
}, {
initialRouteName: 'Home',
});
export default createAppContainer(AppNavigator);
Getting Started
To run the react-native-dribbble-app:
-
Clone the repository:
git clone https://github.com/catalinmiron/react-native-dribbble-app.git cd react-native-dribbble-app
-
Install dependencies:
npm install
-
Set up your Dribbble API access token in
app/config/index.js
. -
Run the app:
npx react-native run-ios # or npx react-native run-android
Note: You may need to update some dependencies and configurations to run the app with the latest React Native version.
Competitor Comparisons
A framework for building native applications using React
Pros of react-native
- Larger community and more extensive documentation
- Regular updates and maintenance from Facebook
- Wider range of third-party libraries and components
Cons of react-native
- Steeper learning curve for beginners
- More complex setup and configuration
- Larger project size and potential performance overhead
Code comparison
react-native:
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const App = () => (
<View style={styles.container}>
<Text>Hello, React Native!</Text>
</View>
);
react-native-dribbble-app:
import React from 'react';
import { View, Text } from 'react-native';
const App = () => (
<View>
<Text>Dribbble App</Text>
</View>
);
The react-native example demonstrates a more structured approach with separate StyleSheet definitions, while react-native-dribbble-app shows a simpler, more concise implementation. react-native provides a more comprehensive foundation for building complex applications, whereas react-native-dribbble-app is focused on creating a specific Dribbble-inspired app with potentially less boilerplate code.
A complete native navigation solution for React Native
Pros of react-native-navigation
- More comprehensive navigation solution with advanced features like deep linking and custom transitions
- Better performance due to native implementation of navigation components
- Larger community and more frequent updates
Cons of react-native-navigation
- Steeper learning curve and more complex setup process
- Potential compatibility issues with certain React Native versions
- Requires additional native code integration
Code Comparison
react-native-navigation:
Navigation.setRoot({
root: {
stack: {
children: [
{
component: {
name: 'Home'
}
}
]
}
}
});
react-native-dribbble-app:
const AppNavigator = createStackNavigator({
Home: { screen: HomeScreen },
Details: { screen: DetailsScreen },
});
export default createAppContainer(AppNavigator);
The react-native-navigation example shows a more declarative approach to setting up navigation, while react-native-dribbble-app uses a simpler stack navigator configuration.
react-native-navigation offers more control over the navigation structure and native performance benefits, but comes with increased complexity. react-native-dribbble-app provides a simpler setup using React Navigation, which may be sufficient for less complex apps but might lack some advanced features and native performance optimizations.
Cross-Platform React Native UI Toolkit
Pros of React Native Elements
- Comprehensive UI toolkit with a wide range of pre-built components
- Active community and regular updates, ensuring compatibility with latest React Native versions
- Extensive documentation and examples for easy implementation
Cons of React Native Elements
- More generic design, less focused on a specific app style like Dribbble
- Larger package size due to the extensive component library
- May require more customization to achieve a unique look
Code Comparison
React Native Elements:
import { Button, Card, Icon } from 'react-native-elements';
<Card>
<Card.Title>Card Title</Card.Title>
<Card.Divider/>
<Card.Image source={require('./image.jpg')} />
<Button icon={<Icon name='code' color='#ffffff' />} title='View Now' />
</Card>
React Native Dribbble App:
import { View, Image, Text } from 'react-native';
<View style={styles.card}>
<Image source={{ uri: shot.images.normal }} style={styles.image} />
<Text style={styles.title}>{shot.title}</Text>
<Text style={styles.description}>{shot.description}</Text>
</View>
The React Native Elements code showcases its pre-built components, while the Dribbble app uses more basic React Native components with custom styling.
:boom: React Native UI Library based on Eva Design System :new_moon_with_face::sparkles:Dark Mode
Pros of react-native-ui-kitten
- Comprehensive UI library with a wide range of customizable components
- Active development and maintenance, with regular updates and bug fixes
- Extensive documentation and examples for easy implementation
Cons of react-native-ui-kitten
- Steeper learning curve due to its extensive feature set
- Larger bundle size, which may impact app performance
- Less focused on specific design styles compared to react-native-dribbble-app
Code Comparison
react-native-ui-kitten:
import { Button, Text } from '@ui-kitten/components';
const MyComponent = () => (
<Button>
<Text>Click me!</Text>
</Button>
);
react-native-dribbble-app:
import { TouchableOpacity, Text } from 'react-native';
const MyComponent = () => (
<TouchableOpacity>
<Text>Click me!</Text>
</TouchableOpacity>
);
The react-native-ui-kitten example uses custom components from the library, while react-native-dribbble-app relies on standard React Native components. This showcases the more comprehensive nature of react-native-ui-kitten, but also highlights the simplicity of react-native-dribbble-app.
Mobile-first, accessible components for React Native & Web to build consistent UI across Android, iOS and Web.
Pros of NativeBase
- Comprehensive UI component library with a wide range of pre-built components
- Customizable theme system for consistent styling across the app
- Active development and regular updates from a dedicated team
Cons of NativeBase
- Steeper learning curve due to its extensive API and customization options
- Larger bundle size, which may impact app performance
- Some components may require additional configuration or tweaking
Code Comparison
react-native-dribbble-app:
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const Shot = ({ title, description }) => (
<View style={styles.container}>
<Text style={styles.title}>{title}</Text>
<Text style={styles.description}>{description}</Text>
</View>
);
NativeBase:
import React from 'react';
import { Box, Heading, Text } from 'native-base';
const Shot = ({ title, description }) => (
<Box p={4}>
<Heading size="md">{title}</Heading>
<Text mt={2}>{description}</Text>
</Box>
);
The NativeBase example demonstrates the use of pre-built components and a more declarative styling approach, while react-native-dribbble-app uses standard React Native components with separate StyleSheet definitions.
Customizable Icons for React Native with support for image source and full styling.
Pros of react-native-vector-icons
- Extensive library of customizable vector icons
- Regular updates and active maintenance
- Seamless integration with React Native projects
Cons of react-native-vector-icons
- Limited to icon functionality, not a full-fledged app template
- Requires additional setup for custom icons
- May increase app bundle size if many icons are used
Code Comparison
react-native-vector-icons:
import Icon from 'react-native-vector-icons/FontAwesome';
const MyComponent = () => (
<Icon name="rocket" size={30} color="#900" />
);
react-native-dribbble-app:
import { Image } from 'react-native';
const MyComponent = () => (
<Image source={require('./assets/icons/rocket.png')} style={{ width: 30, height: 30 }} />
);
react-native-vector-icons provides a more flexible and scalable approach to using icons, while react-native-dribbble-app relies on static image assets. The vector icons library offers easier customization and a wider range of icons without increasing app size significantly.
react-native-dribbble-app, however, serves as a complete app template with Dribbble integration, offering more than just icon functionality. It provides a full user interface and API integration, making it suitable for developers looking to create a Dribbble-like app quickly.
Ultimately, the choice between these repositories depends on the specific needs of your project. If you need a versatile icon solution, react-native-vector-icons is the better choice. For a ready-to-use Dribbble app template, react-native-dribbble-app would be more suitable.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Would you like to support me?
###Dribbble app built with React Native
A Dribbble app build with React Native.
####Preview
Updated version
Plugins used:
####How to run it locally
- Clone this repo
git clone git@github.com:catalinmiron/react-native-dribbble-app.git
cd react-native-dribbble-app
- run
npm install
- Open
DribbbleApp.xcodeproj
inXCode
- Press
cmd+r
to build it
####Improvements
- add icons in TabBar
- refactor 'facebook-movies' fetching logic
- add author view
- fetch comments in shot details
- switch to
ES6
Top Related Projects
A framework for building native applications using React
A complete native navigation solution for React Native
Cross-Platform React Native UI Toolkit
:boom: React Native UI Library based on Eva Design System :new_moon_with_face::sparkles:Dark Mode
Mobile-first, accessible components for React Native & Web to build consistent UI across Android, iOS and Web.
Customizable Icons for React Native with support for image source and full styling.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot