{"id":707,"date":"2021-08-01T06:14:41","date_gmt":"2021-08-01T05:14:41","guid":{"rendered":"https:\/\/codeflarelimited.com\/blog\/?p=707"},"modified":"2021-09-08T01:12:51","modified_gmt":"2021-09-08T00:12:51","slug":"react-native-app-intro-slider-anyone","status":"publish","type":"post","link":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/","title":{"rendered":"React Native App Intro Slider, Anyone?"},"content":{"rendered":"\n<p>Implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers. <\/p>\n\n\n\n<p>This opportunity can be used to highlight expected features of your software appllication or maybe perhaps you just want to give a nice, warm welcome to the user.<\/p>\n\n\n\n<p>Whatever your reason, in this software development training session we are going to create a React Native app intro slider or what most people refer to as <strong>onboarding screen<\/strong>. <\/p>\n\n\n\n<p>So, let&#8217;s get started.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-1-create-your-react-native-app\">1. Create your React Native app:<\/h2>\n\n\n\n<p>For the purpose of this tutorial, we are going to create our React Native app using cli. So, first we create a folder and just call it &#8220;projects&#8221; (feel free to rename yours) and then we will &#8220;cd&#8221; to that folder and run the following command:<\/p>\n\n\n\n<pre title=\"Create React Native app\" class=\"wp-block-code\"><code lang=\"nginx\" class=\"language-nginx\">npm install -g react-native-cli<\/code><\/pre>\n\n\n\n<p>So this installs React Native globally in our folder. Next, we init our folder like so:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">react-native init [new_folder_name]<\/code><\/pre>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\">*WARNING:<\/p>\n\n\n\n<p>Currently, here you will get an error with npm package which will cause the process to break. This appears to be bug with npm package. <\/p>\n\n\n\n<p>*What You Can do:<\/p>\n\n\n\n<p>Delete the node_modules folder and run the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">yarn install<\/code><\/pre>\n\n\n\n<p>This should resolve the issue<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-add-dependencies-to-our-onboarding-screen\">2. Add dependencies to Our Onboarding Screen<\/h2>\n\n\n\n<p>Next, we will add the following dependencies:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">yarn add react-native-app-intro-slider \/\/our intro slider library\nyarn add react-native-vector-icons \/\/Icons\nyarn add @react-native-async-storage\/async-storage \nyarn add react-native-responsive-screen \/\/For screen responsiveness\nyarn add react-native-reanimated\nyarn add react-native-safe-area-context\nyarn add react-navigation\nyarn add react-navigation-stack\nyarn add react-native-screens\nyarn add react-native-gesture-handler<\/code><\/pre>\n\n\n\n<p>For iOS configuration, you need to register these dependencies the pod file so that iOS can understand them.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">cd iOS\npod install\ncd ..\nreact-native run-iOS \/\/ For iOS\nreact-native run-android \/\/For Android<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-create-a-file-called-intro-and-add-the-following-code\">3. Create a file called Intro and add the following code:<\/h2>\n\n\n\n<pre title=\"Intro.js\" class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">import React, {Component} from 'react';\nimport {Text, View, Image, StatusBar} from 'react-native';\nimport Icon from 'react-native-vector-icons\/Ionicons';\nimport AppIntroSlider from 'react-native-app-intro-slider';\nimport AsyncStorage from '@react-native-async-storage\/async-storage';\nimport {\n  widthPercentageToDP as wp,\n  heightPercentageToDP as hp,\n} from 'react-native-responsive-screen';\nIcon.loadFont();\n\nconst slides = [\n  {\n    key: 1,\n    title: 'You Love Animes?',\n    image: require('image.png'),\n    backgroundColor: '#000',\n  },\n  {\n    key: 2,\n    title: 'We know that.',\n    image: require('image.png'),\n  },\n  {\n    key: 3,\n    title: 'Search Anime Movies ...',\n    image: require('image.png'),\n  },\n  {\n    key: 4,\n    title: 'And Series, too.',\n    image: require('image.png'),\n  },\n];\n\nclass Intro extends Component {\n\n}\n\nexport default Intro<\/code><\/pre>\n\n\n\n<p>Let&#8217;s explain what&#8217;s happening here, shall we.<\/p>\n\n\n\n<p>Here, we adding the number of slides we want to have in our application as well as the respective images and display texts. Go ahead and your own image and desired text.<\/p>\n\n\n\n<p>Next, we want to render these images and texts that we have just defined for our slides. So we add the following code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">\n_renderItem = ({item}) =&gt; {\n    return (\n      &lt;View\n        style={{\n          flex: 1,\n          flexDirection: 'column',\n          flexWrap: 'nowrap',\n          height: hp('100%'),\n          width: wp('100%'),\n          justifyContent: 'center',\n          backgroundColor: item.backgroundColor,\n          alignItems: 'center',\n        }}&gt;\n        &lt;StatusBar barStyle=\"light-content\" backgroundColor=\"#000\" \/&gt;\n        &lt;View style={styles.overlay} \/&gt;\n        &lt;Text\n          style={{\n            textAlign: 'center',\n            fontSize: 45,\n            color: '#fff',\n            position: 'absolute',\n            top: 650,\n            zIndex: 3,\n            fontWeight: 'bold',\n          }}&gt;\n          {item.title}\n        &lt;\/Text&gt;\n        &lt;Image\n          style={{width: '100%', height: '100%', resizeMode: 'cover'}}\n          source={item.image}\n        \/&gt;\n      &lt;\/View&gt;\n    );\n  };<\/code><\/pre>\n\n\n\n<p>Notice here that we have an View tag over which we added some dark overlay:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">&lt;View style={styles.overlay} \/&gt;<\/code><\/pre>\n\n\n\n<p>This subtle dark overlay just helps to give our displayed text some level of prominence so that it can be readable and not swallowed by the background image.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-4-define-sliding-button-styles\">4. Define Sliding Button Styles<\/h2>\n\n\n\n<p>Now that we have successfully added our slide, we need to set icons for next slide indicator, an option to switch, which is denoted by a cancel icon as well a check-mark icon that shows the user that they have seen all the slide images. So we add the following code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\"> _renderNextButton = () =&gt; {\n    return (\n      &lt;View style={styles.buttonCircle}&gt;\n        &lt;Icon\n          name=\"arrow-forward-circle-outline\"\n          color=\"rgba(255, 255, 255, .6)\"\n          size={45}\n        \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _renderDoneButton = () =&gt; {\n    return (\n      &lt;View style={styles.buttonCircle}&gt;\n        &lt;Icon name=\"md-checkmark\" color=\"green\" size={45} \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _renderSkipButton = () =&gt; {\n    return (\n      &lt;View style={styles.buttonCircle}&gt;\n        &lt;Icon name=\"close-circle-outline\" color=\"#800000\" size={45} \/&gt;\n      &lt;\/View&gt;\n    );\n  };<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-5-what-happens-when-we-re-done-viewing-the-slides\">5. What Happens When We&#8217;re Done Viewing the Slides?<\/h2>\n\n\n\n<p>Yes, we need to check that right?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">_onDone = () =&gt; {\n    const items = [['intro', 'intro']];\n    AsyncStorage.multiSet(items);\n    this.props.navigation.navigate('Home');\n  };<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Ok. So when we&#8217;re done viewing the slides, we want to move on to the next activity and set a value in <a href=\"https:\/\/codeflarelimited.com\/blog\/react-native-remove-multiple-items-from-asyncstorage\/\" target=\"_blank\" rel=\"noreferrer noopener\">AsyncStorage <\/a>so that <strong>WE DO NOT ALWAYS HAVE TO VIEW THE INTRO SLIDER EVERY TIME WE START THE APP.<\/strong> You got that right? Yes, that&#8217;s the above code is for and we will properly check that later.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-6-render-display\">6. Render Display<\/h2>\n\n\n\n<p>Let us render all these displays and styles that we have just added like so:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">render() {\n    return (\n      &lt;AppIntroSlider\n        keyExtractor={(item, index) =&gt; index.toString()}\n        showSkipButton={true}\n        renderItem={this._renderItem}\n        data={slides}\n        onDone={this._onDone}\n        renderDoneButton={this._renderDoneButton}\n        renderNextButton={this._renderNextButton}\n        renderSkipButton={this._renderSkipButton}\n      \/&gt;\n    );\n  }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"1024\" src=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-473x1024.png\" alt=\"software application\" class=\"wp-image-713\" srcset=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-473x1024.png 473w, https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-139x300.png 139w, https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-768x1662.png 768w, https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-710x1536.png 710w, https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17-946x2048.png 946w, https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.17.png 1170w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-full-code-for-intro-js\">Full code for Intro.js<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">import React, {Component} from 'react';\nimport {Text, View, Image, StatusBar, StyleSheet} from 'react-native';\nimport Icon from 'react-native-vector-icons\/Ionicons';\nimport AppIntroSlider from 'react-native-app-intro-slider';\nimport AsyncStorage from '@react-native-async-storage\/async-storage';\nimport {\n  widthPercentageToDP as wp,\n  heightPercentageToDP as hp,\n} from 'react-native-responsive-screen';\nIcon.loadFont();\n\nconst slides = [\n  {\n    key: 1,\n    title: 'You Love Animes?',\n    image: require('image.jpg'),\n    backgroundColor: '#000',\n  },\n  {\n    key: 2,\n    title: 'We know that.',\n    image: require('image.jpg'),\n  },\n  {\n    key: 3,\n    title: 'Search Anime Movies ...',\n    image: require('image.jpg'),\n  },\n  {\n    key: 4,\n    title: 'And Series, too.',\n    image: require('image.jpg'),\n  },\n];\n\nclass Intro extends Component {\n   \n  _renderItem = ({item}) =&gt; {\n    return (\n      &lt;View\n        style={{\n          flex: 1,\n          flexDirection: 'column',\n          flexWrap: 'nowrap',\n          height: hp('100%'),\n          width: wp('100%'),\n          justifyContent: 'center',\n          backgroundColor: item.backgroundColor,\n          alignItems: 'center',\n        }}&gt;\n        &lt;StatusBar barStyle=\"light-content\" backgroundColor=\"#000\" \/&gt;\n        &lt;View style={styles.overlay} \/&gt;\n        &lt;Text\n          style={{\n            textAlign: 'center',\n            fontSize: 45,\n            color: '#fff',\n            position: 'absolute',\n            top: 650,\n            zIndex: 3,\n            fontWeight: 'bold',\n          }}&gt;\n          {item.title}\n        &lt;\/Text&gt;\n        &lt;Image\n          style={{width: '100%', height: '100%', resizeMode: 'cover'}}\n          source={item.image}\n        \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _renderNextButton = () =&gt; {\n    return (\n      &lt;View&gt;\n        &lt;Icon\n          name=\"arrow-forward-circle-outline\"\n          color=\"rgba(255, 255, 255, .6)\"\n          size={45}\n        \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _renderDoneButton = () =&gt; {\n    return (\n      &lt;View&gt;\n        &lt;Icon name=\"md-checkmark\" color=\"green\" size={45} \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _renderSkipButton = () =&gt; {\n    return (\n      &lt;View&gt;\n        &lt;Icon name=\"close-circle-outline\" color=\"#800000\" size={45} \/&gt;\n      &lt;\/View&gt;\n    );\n  };\n  _onDone = () =&gt; {\n    const items = [['intro', 'intro']];\n    AsyncStorage.multiSet(items);\n    this.props.navigation.navigate('Home');\n  };\n  render() {\n    return (\n      &lt;AppIntroSlider\n        keyExtractor={(item, index) =&gt; index.toString()}\n        showSkipButton={true}\n        renderItem={this._renderItem}\n        data={slides}\n        onDone={this._onDone}\n        renderDoneButton={this._renderDoneButton}\n        renderNextButton={this._renderNextButton}\n        renderSkipButton={this._renderSkipButton}\n      \/&gt;\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n        ...StyleSheet.absoluteFillObject,\n        backgroundColor: 'rgba(0, 0, 0, 0.8)',\n      },\n})\n\nexport default Intro;\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-7-next-let-s-create-our-home-js-page\">7. Next Let&#8217;s create our Home.js page<\/h2>\n\n\n\n<p>We&#8217;ll just create a basic Home page here just for the purpose of this tutorial<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">import React, { Component } from 'react';\nimport {View, Text} from 'react-native';\n\nclass Home extends Component {\nrender(){\nreturn(\n&lt;View&gt;\n&lt;Text&gt;Hello Home!&lt;\/Text&gt;\n&lt;\/View&gt;\n)\n}\n}\n\nexport default Home;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-8-let-s-check-if-the-intro-slider-already-loaded\">8. Let&#8217;s Check if the Intro Slider Already Loaded<\/h2>\n\n\n\n<p>So, here we will properly check if the App intro slider has already loaded so that we can ensure that it loads only once. We will create a file called CheckLoad.js and add the following code:<\/p>\n\n\n\n<pre title=\"CheckLoad.js\" class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">import React, { Component } from \"react\";\nimport { View, ActivityIndicator } from 'react-native';\nimport AsyncStorage from '@react-native-async-storage\/async-storage';\n\n\nclass CheckLoad extends Component {\n\n    checkToken = async () =&gt; {\n        const token = await AsyncStorage.getItem('intro');\n        if (token) {\n          this.props.navigation.navigate('Home');\n        } else {\n          this.props.navigation.navigate('Intro');\n        }\n      };\n    \n      componentDidMount() {\n        this.checkToken();\n      }\n\n    render(){\n        return(\n            &lt;View&gt;\n            &lt;ActivityIndicator\n              style={{\n                position: 'absolute',\n                flexDirection: 'row',\n                top: 0,\n                left: 0,\n                right: 0,\n                bottom: 0,\n                marginTop: 350,\n              }}\n              size=\"large\"\n              color=\"#0275d8\"\n            \/&gt;\n          &lt;\/View&gt;\n        )\n    }\n}\n\nexport default CheckLoad;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-9-what-about-routing-for-software-application\">9. What about Routing For Software Application?<\/h2>\n\n\n\n<p>Next, we need to handle routing for our application and for that we have already added dependencies for navigation and stack navigation. So let&#8217;s add the following code for our <a href=\"https:\/\/codeflarelimited.com\/blog\/how-to-create-stack-navigator-using-a-class-component-in-react-native\/\" target=\"_blank\" rel=\"noreferrer noopener\">Stack Navigation<\/a>:<\/p>\n\n\n\n<pre title=\"Stack.js\" class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">import React, {Component} from 'react';\nimport {createAppContainer} from 'react-navigation';\nimport {createStackNavigator} from 'react-navigation-stack';\nimport CheckLoad from '..\/screens\/CheckLoad';\nimport Home from '..\/screens\/Home';\n\n\nclass Stack extends Component {\n  render() {\n    return &lt;AppContainer \/&gt;;\n  }\n}\n\nexport default Stack;\n\nconst AppStackNavigator = createStackNavigator(\n  {\n    CheckLoad: {\n      screen: CheckLoad,\n      navigationOptions: {\n        headerShown: false,\n      },\n    },\n    Intro: {\n      screen: Intro,\n      navigationOptions: {\n        headerShown: false,\n      },\n    },\n    Home: {\n      screen: Home,\n      navigationOptions: {\n        headerTitle: 'Home',\n        headerLeft: () =&gt; {\n          return null;\n        },\n        headerStyle: {\n          backgroundColor: '#000',\n        },\n        headerTintColor: '#fff',\n      },\n    },\n     \n  {\n    initialRouteName: 'CheckLoad',\n  },\n);\n\nconst AppContainer = createAppContainer(AppStackNavigator);\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-10-modify-our-app-entry-file\">10. Modify Our App Entry File<\/h2>\n\n\n\n<p>Next, we will modify our App.js file. Every React Native project will have a default App.js. Let us delete the custom codes in that file and add the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">\nimport React, { Component } from 'react';\nimport Stack from '.\/Stack';\n\n class App extends Component {\n   render(){\n     return(\n       &lt;Stack \/&gt;\n     )\n   }\n }\nexport default App;<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-congratulations-you-have-successfully-added-react-native-app-intro-slider-to-your-software-application\">Congratulations, You have successfully added React Native App Intro Slider to your software application!<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"2532\" style=\"aspect-ratio: 1170 \/ 2532;\" width=\"1170\" controls loop poster=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Shot-iPhone-12-2021-07-29-at-15.54.06.png\" src=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Simulator-Screen-Recording-iPhone-12-2021-07-29-at-16.09.17.mp4\"><\/video><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Building an app or looking for a Final Year App Project inspiration? Download <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.codeflare\" target=\"_blank\" rel=\"noreferrer noopener\">Origami Suite<\/a> to access tons of mobile app templates<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Implementing a React Native App Intro Slider in your software application can sometimes be a great idea for<\/p>\n","protected":false},"author":1,"featured_media":714,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31,98],"tags":[105,104],"class_list":["post-707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-react-native","category-softare-development","tag-app-intro-slider","tag-onboarding-screen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>React Native App Intro Slider, Anyone?<\/title>\n<meta name=\"description\" content=\"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Native App Intro Slider, Anyone?\" \/>\n<meta property=\"og:description\" content=\"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/facebook.com\/codeflretech\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-01T05:14:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-08T00:12:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"753\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"codeflare\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@codeflaretech\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/\"},\"author\":{\"name\":\"codeflare\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e65653d49add95629f8c1053c5cd76a\"},\"headline\":\"React Native App Intro Slider, Anyone?\",\"datePublished\":\"2021-08-01T05:14:41+00:00\",\"dateModified\":\"2021-09-08T00:12:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/\"},\"wordCount\":674,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Untitled-Design.jpeg\",\"keywords\":[\"app intro slider\",\"onboarding screen\"],\"articleSection\":[\"react native\",\"softare development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/\",\"name\":\"React Native App Intro Slider, Anyone?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Untitled-Design.jpeg\",\"datePublished\":\"2021-08-01T05:14:41+00:00\",\"dateModified\":\"2021-09-08T00:12:51+00:00\",\"description\":\"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#primaryimage\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Untitled-Design.jpeg\",\"contentUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/Untitled-Design.jpeg\",\"width\":1200,\"height\":753,\"caption\":\"react native app intro slider\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/react-native-app-intro-slider-anyone\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"softare development\",\"item\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/softare-development\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"React Native App Intro Slider, Anyone?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\",\"name\":\"\",\"description\":\"Sustainable solutions\",\"publisher\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#organization\",\"name\":\"Codeflare Limited\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/codeflare.png\",\"contentUrl\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/codeflare.png\",\"width\":1040,\"height\":263,\"caption\":\"Codeflare Limited\"},\"image\":{\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/#\\\/schema\\\/person\\\/7e65653d49add95629f8c1053c5cd76a\",\"name\":\"codeflare\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g\",\"caption\":\"codeflare\"},\"description\":\"Latest tech news and coding tips.\",\"sameAs\":[\"https:\\\/\\\/codeflarelimited.com\\\/blog\",\"https:\\\/\\\/facebook.com\\\/codeflretech\",\"https:\\\/\\\/instagram.com\\\/codeflaretech\",\"https:\\\/\\\/x.com\\\/codeflaretech\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCuBLtiYqsajHdqw0uyt7Ofw?sub_confirmation=1\"],\"url\":\"https:\\\/\\\/codeflarelimited.com\\\/blog\\\/author\\\/watcher\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"React Native App Intro Slider, Anyone?","description":"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/","og_locale":"en_US","og_type":"article","og_title":"React Native App Intro Slider, Anyone?","og_description":"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers","og_url":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/","article_author":"https:\/\/facebook.com\/codeflretech","article_published_time":"2021-08-01T05:14:41+00:00","article_modified_time":"2021-09-08T00:12:51+00:00","og_image":[{"width":1200,"height":753,"url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","type":"image\/jpeg"}],"author":"codeflare","twitter_card":"summary_large_image","twitter_creator":"@codeflaretech","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#article","isPartOf":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/"},"author":{"name":"codeflare","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/person\/7e65653d49add95629f8c1053c5cd76a"},"headline":"React Native App Intro Slider, Anyone?","datePublished":"2021-08-01T05:14:41+00:00","dateModified":"2021-09-08T00:12:51+00:00","mainEntityOfPage":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/"},"wordCount":674,"commentCount":1,"publisher":{"@id":"https:\/\/codeflarelimited.com\/blog\/#organization"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#primaryimage"},"thumbnailUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","keywords":["app intro slider","onboarding screen"],"articleSection":["react native","softare development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/","url":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/","name":"React Native App Intro Slider, Anyone?","isPartOf":{"@id":"https:\/\/codeflarelimited.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#primaryimage"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#primaryimage"},"thumbnailUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","datePublished":"2021-08-01T05:14:41+00:00","dateModified":"2021-09-08T00:12:51+00:00","description":"implementing a React Native App Intro Slider in your software application can sometimes be a great idea for many software developers","breadcrumb":{"@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#primaryimage","url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","contentUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","width":1200,"height":753,"caption":"react native app intro slider"},{"@type":"BreadcrumbList","@id":"https:\/\/codeflarelimited.com\/blog\/react-native-app-intro-slider-anyone\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codeflarelimited.com\/blog\/"},{"@type":"ListItem","position":2,"name":"softare development","item":"https:\/\/codeflarelimited.com\/blog\/softare-development\/"},{"@type":"ListItem","position":3,"name":"React Native App Intro Slider, Anyone?"}]},{"@type":"WebSite","@id":"https:\/\/codeflarelimited.com\/blog\/#website","url":"https:\/\/codeflarelimited.com\/blog\/","name":"","description":"Sustainable solutions","publisher":{"@id":"https:\/\/codeflarelimited.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codeflarelimited.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codeflarelimited.com\/blog\/#organization","name":"Codeflare Limited","url":"https:\/\/codeflarelimited.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2020\/11\/codeflare.png","contentUrl":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2020\/11\/codeflare.png","width":1040,"height":263,"caption":"Codeflare Limited"},"image":{"@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/codeflarelimited.com\/blog\/#\/schema\/person\/7e65653d49add95629f8c1053c5cd76a","name":"codeflare","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/59cef917c86d965eea581d2747f51bd6382003a68bfce7c8a4dfec98b4cd838d?s=96&d=mm&r=g","caption":"codeflare"},"description":"Latest tech news and coding tips.","sameAs":["https:\/\/codeflarelimited.com\/blog","https:\/\/facebook.com\/codeflretech","https:\/\/instagram.com\/codeflaretech","https:\/\/x.com\/codeflaretech","https:\/\/www.youtube.com\/channel\/UCuBLtiYqsajHdqw0uyt7Ofw?sub_confirmation=1"],"url":"https:\/\/codeflarelimited.com\/blog\/author\/watcher\/"}]}},"jetpack_featured_media_url":"https:\/\/codeflarelimited.com\/blog\/wp-content\/uploads\/2021\/08\/Untitled-Design.jpeg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/comments?post=707"}],"version-history":[{"count":4,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/707\/revisions"}],"predecessor-version":[{"id":717,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/posts\/707\/revisions\/717"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/media\/714"}],"wp:attachment":[{"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/media?parent=707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/categories?post=707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeflarelimited.com\/blog\/wp-json\/wp\/v2\/tags?post=707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}