{"id":10676,"date":"2018-09-26T19:13:10","date_gmt":"2018-09-26T16:13:10","guid":{"rendered":"https:\/\/railsware.com\/blog\/?p=10676"},"modified":"2021-08-12T18:02:51","modified_gmt":"2021-08-12T15:02:51","slug":"react-native-ui-components","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/react-native-ui-components\/","title":{"rendered":"React Native UI Components"},"content":{"rendered":"\n<p class=\"intro-text\">React offers an abundance of composable and stateful solutions to design a user interface. However, when we\u2019re talking about React Native, customization of your app may become a torturous task if you are going to build all themes and components on your own.<\/p>\n\n\n\n<p>Fortunately, the framework is supported by a vibrant community, members of which have already seen about you and developed numerous UI component options to style your product. Here are our top picks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">NativeBase<\/h2>\n\n\n\n<p>Let\u2019s begin with an open source library called <a href=\"https:\/\/nativebase.io\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NativeBase<\/a>. It is prepacked with a vast collection of ready-to-use UI components for creating cross-platform mobile applications. With NativeBase, you obtain the perfect solution for maintaining the balance between iOS and Android user experience. That is to say, the JS code-base is the same, but the feel and look are specific for each particular OS.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A lot of prebuilt ready-to-use components<\/li><li>Native look and feel on iOS\/Android like it should be<\/li><li>Built-in design<\/li><li>Customization using `StyleSheet`<\/li><li>Intuitive component structure<\/li><li>Solid documentation<\/li><li>Three preset themes (Platform, Material, and CommonColor)<\/li><\/ul>\n\n\n\n<p>If a built-in design is enough for the product you\u2019re developing, and you have no intention of changing much, you will appreciate the library even despite it doesn\u2019t look compact. We recommend relying entirely on NativeBase as a toolkit for the next project, rather than implement some separate features of it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React Native Elements<\/h2>\n\n\n\n<p>The next representative of React Native UI components Android\/iOS is most developers&#8217; favorite toolkit. <a href=\"https:\/\/github.com\/react-native-training\/react-native-elements\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">React Native Elements<\/a> (RNE) is a sort of early Bootstrap analog in the mobile world because they have some similarities in what they provide namely a layout with simple elements. With RNE, you get a bunch of component properties to enable customization. Every component has a container that represents the traditional RN <code>&lt;View\/&gt;<\/code> with default styling. On that account, the <code>containerStyle<\/code> property should be the major thing to consider if it\u2019s necessary to change the way two components react on screen. Other elements may also provide customer style properties, so the component documentation should be referred to.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A decent list of small components like avatar, buttons, form elements, icons, typography, sliders, etc.<\/li><li>Complex elements like pricing, rating, card, search bar, checkbox, list items, etc.<\/li><li>Customization using component properties<\/li><li>Solid documentation<\/li><li>Themes support<\/li><li><a href=\"https:\/\/github.com\/necolas\/react-native-web\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">React Native Web<\/a> support<\/li><\/ul>\n\n\n\n<p>The UI Kit puts an emphasis on the component structure and provides full control over their design. With RNE, you get a customizable and easy-to-use toolkit for cross-platform development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nachos UI<\/h2>\n\n\n\n<p>Yet another good looking list of more than 30 customizable React Native iOS UI components. Perhaps <a href=\"https:\/\/github.com\/avocode\/nachos-ui\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Nachos<\/a> UI has not achieved the above mentioned toolkits\u2019 level yet, but it\u2019s gradually getting there. Its way of customization is similar to that of RNE\u2019s use of the <code>style<\/code> property. In addition, you get original themes thanks to a prepacked theme manager.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>30+ pre-coded UI components including typography, radio, spinner, slider, card, etc.<\/li><li>Customization using component properties<\/li><li><a href=\"https:\/\/github.com\/necolas\/react-native-web\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">React Native Web<\/a> support<\/li><\/ul>\n\n\n\n<p>Nachos UI offers some awesome components for the RN user interface, so it deserves a place in our chart.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React Native Material Kit<\/h2>\n\n\n\n<p>This React Native UI components library is designed to introduce Material Design to RN apps. Compared to other MD solutions, <a href=\"http:\/\/xinthink.github.io\/react-native-material-kit\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">RN Material Kit<\/a> can boast an advanced customization API, which allows you to define your own styles easier and build custom components in addition to preset dynamic ones like range sliders, spinners, progress bars, etc. However, the components list is rather limited.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Material Design-based components<\/li><li>Advanced API for building custom components<\/li><li>Dynamic components that are not available on some frameworks<\/li><li>Limited basic set of UI components<\/li><\/ul>\n\n\n\n<p>RN Material Kit works great on both the largest mobile operating systems. However, be prepared for the imprint of Android UX of your app even on the Apple\u2019s operating system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React Native UI Kitten<\/h2>\n\n\n\n<p>In this open source framework, UI components have a similar style. <a href=\"https:\/\/github.com\/akveo\/react-native-ui-kitten\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">RN UI Kitten<\/a> was created with the goal of releasing engineers from visual appearance concerns, so they could focus on the business logic. Therefore, customization of elements is made with the aim of easing your efforts and saving time. With that in mind, the <code>RkComponent<\/code> class, a concept similar to CSS classes, contains methods responsible for customization like <code>RkTheme<\/code>, which allows you to make a component theme-dependent, and <code>RkStyleSheet<\/code>, which is a replacement for regular <code>StyleSheet<\/code>.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Limited set of commonly used elements with similar UI design<\/li><li>Flexibility for customization and styling using the RkComponent class akin to CSS classes<\/li><li>Easy change of themes<\/li><\/ul>\n\n\n\n<p>The peculiarities of RN UI Kitten provide a user-friendly and time-efficient customization method.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Other UI libraries<\/h2>\n\n\n\n<p>The following UI libraries deserve separate attention and can be combined with other UI toolkits to bring specific benefits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Styled Components<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/styled-components\/styled-components\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Styled Components<\/a> is not a regular components library but a powerful tool to create the RN UI in a CSS-like way, meaning that you need to write the actual CSS code for styling. The library\u2019s syntax is based on the tagged template literals. Styled Components are compatible with React for both mobile and web. I.e., you can have one approach for web and mobile applications.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A powerful tool to build components through CSS<\/li><li>Syntax based on the tagged template literals<\/li><li>Simpler component styling<\/li><\/ul>\n\n\n\n<p>With Styled Components, you have the classic CSS syntax back to ensure simpler styling of UI components.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">React Native Vector Icons<\/h3>\n\n\n\n<p>If you click \u2018Browse all\u201d on the GitHub&#8217;s <a href=\"https:\/\/github.com\/oblador\/react-native-vector-icons\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Vector Icons<\/a> page, you\u2019ll get over 6K icons that can be used in your future application. It accumulates icon libraries including FontAwesome, MaterialIconsSome, EvilIcons, and others. iOS and Material Design icons represented by Ionicons are also available.<\/p>\n\n\n\n<p>What you get<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Large amount of platform-specific native icons<\/li><li>Versatile icon libraries including FontAwesome, Foundation, Entypo, EvilIcons, MaterialIcons, Ionicons, and others<\/li><\/ul>\n\n\n\n<p>The library offers a plethora of platform-specific native icons to shape different components including the logo, buttons, bars, etc. All these are easy to style and integrate into your project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>The listed React Native UI components iOS\/Android do not limit the toolkits available for the framework. It is quite possible that some readers may want to opt for other options like RN Material Design, Snowflake, GL React Native, etc. Sharing dev experience is a way to improve knowledge and skills of the community, so we hope that our picks will be useful for your project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Building a user interface in a mobile app is often a challenge, but we know how to ease it. Our selection of React Native UI components will much facilitate your work.<\/p>\n","protected":false},"author":44,"featured_media":10692,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Olexander Paladiy"],"class_list":["post-10676","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/themes\/railsware\/vendors\/images\/article-thumbnail-default.jpg","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/10676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=10676"}],"version-history":[{"count":12,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/10676\/revisions"}],"predecessor-version":[{"id":14023,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/10676\/revisions\/14023"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/10692"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=10676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=10676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=10676"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=10676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}