{"id":7,"date":"2019-12-02T11:00:00","date_gmt":"2019-12-02T10:00:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/building-mobile-applications-in-javascript-with-react-native\/"},"modified":"2021-12-23T15:21:26","modified_gmt":"2021-12-23T14:21:26","slug":"building-mobile-applications-in-javascript-with-react-native","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/","title":{"rendered":"Building mobile applications in JavaScript with React Native"},"content":{"rendered":"\n<p><b><span id=\"urn:local-annotation-58294\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/react_native_2\">React Native<\/span><\/b> is a <span id=\"urn:enhancement-055bf574-d329-f822-2927-41dc8521b68b\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> framework that allows us to build <span id=\"urn:enhancement-89c562a6\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_computing\">mobile<\/span> <span id=\"urn:enhancement-20bcee98\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>. It is based on <b>React<\/b>, <span id=\"urn:enhancement-26a43803\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/facebook\">Facebook<\/span>\u2019s <span id=\"urn:enhancement-9b7392e8-1cfd-caed-0e6d-9323f3e3b762\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> library for building web user interfaces, but instead of targeting browsers, it generates <b>fully-native <span id=\"urn:enhancement-2c85820f\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_computing\">mobile<\/span> <span id=\"urn:enhancement-39af2358\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span><\/b>. This means that you can use <span id=\"urn:enhancement-d5a96d74-406d-c244-b819-dc732156c52a\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> and a single <span id=\"urn:enhancement-765bbb4a\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codebase\">codebase<\/span> for <b>creating <span id=\"urn:enhancement-cdfc4125\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">apps<\/span> for <span id=\"urn:enhancement-1922cd84\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/android_operating_system\">Android<\/span> and iOS<\/b>, without using two different frameworks and <span id=\"urn:enhancement-f9a7e953\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rust_programming_language\">programming languages<\/span>. Different to other frameworks, React <span id=\"urn:enhancement-9be6a7c\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> also \u201cconverts\u201d the <span id=\"urn:enhancement-3e0b1074-d623-d189-27f3-648ab2a311a8\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> into <b>native code<\/b> (i.e. <span id=\"urn:enhancement-11daa1d8\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/objective-c\">Objective-C<\/span> or <span id=\"urn:enhancement-dfcb9639\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span>), without leaning on WebViews.<\/p>\n\n\n\n<p>Presented this way, React <span id=\"urn:enhancement-be2260b1\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> seems like the perfect solution for creating cross-platform <span id=\"urn:enhancement-ee7714b9\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_computing\">mobile<\/span> <span id=\"urn:enhancement-42414e59\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span>. However, there are some not very straightforward issues that need to be taken into account during the development of <span id=\"urn:local-annotation-417595\" class=\"textannotation disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/react\">React<\/span> <span id=\"urn:enhancement-9034c156\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> <span id=\"urn:enhancement-c4cfd23e\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">apps<\/span>. This was the main topic addressed by <b>Ofir Dagan<\/b>, R&amp;D Manager at Wix, during his talk at <b>Codemotion Rome 2019<\/b>. In this article we will provide a summary of his talk, based on three years\u2019 experience in developing <span id=\"urn:enhancement-28282fe6\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_computing\">mobile<\/span> <span id=\"urn:enhancement-c971ebea\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">apps<\/span> with React <span id=\"urn:enhancement-444277ef\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span>, within a team of around 60 developers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why React Native is so problematic<\/h2>\n\n\n\n<p>It should be clear that the main advantage of using <span id=\"urn:local-annotation-642375\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/react_native\">React Native<\/span> is to build multiple <span id=\"urn:enhancement-b8042604\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">applications<\/span> (for multiple <span id=\"urn:enhancement-89a19d4b\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_computing\">mobile<\/span> OSs) with a single <span id=\"urn:enhancement-e4c010c5\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codebase\">codebase<\/span>. However, this has implications that unfortunately affect performance. As highlighted by Dagan during his talk, writing the React <span id=\"urn:enhancement-8be48e0c\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> <span id=\"urn:enhancement-b4fd4391\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">app<\/span> is not easy and this is due to the following reasons:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>React Native adds an abstraction layer over native APIs<\/li><li>Since it uses JavaScript, all the applications are single-threaded<\/li><li>It is often more difficult to accomplish things that otherwise are very easy in regular native apps (managing lost lists efficiently is one of these cases)<\/li><li>Building apps is a more complex task<\/li><\/ul>\n\n\n\n<p>In other words, while React <span id=\"urn:enhancement-2bd53268\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> allows us to use a single <span id=\"urn:enhancement-4f4fca17\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codebase\">codebase<\/span> for building more <span id=\"urn:enhancement-608ce57d\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">apps<\/span>, it does not solve everything. <b>If you want a truly performant <span id=\"urn:enhancement-e9b9d7bf\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">app<\/span>, you need to write it natively<\/b>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Solving problems in <span id=\"urn:enhancement-8b5c5dbc-0500-d4a4-f5a3-7bb4940988f9\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span><\/h2>\n\n\n\n<p>While Dagar often underlined that native <span id=\"urn:enhancement-1c6c637f\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">apps<\/span> are probably the most performant ones, he also explained that exploiting React <span id=\"urn:enhancement-45b75873\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/native_computing\">Native<\/span> still remains a valid alternative. And in his experience, <b>90% of the problems can be solved in <span id=\"urn:enhancement-64022643-92ce-adb4-408a-46299950fffa\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span><\/b> by just looking at the code, identifying problematic snippets and applying some proper optimisations to them.<\/p>\n\n\n\n<p>In the following, we will summarise some of the examples provided by Dagan during <span id=\"urn:enhancement-ae1e51e5\" class=\"textannotation disambiguated wl-organisation\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codemotion_2\">Codemotion<\/span>, all of which are real cases analysed (and solved) during the development of a real, popular, complex React Native <span id=\"urn:enhancement-4a905554\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/mobile_app\">app<\/span> on production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A slow send button<\/h3>\n\n\n\n<p>The first <span id=\"urn:enhancement-33286c06\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/case_study\">case study<\/span> proposed by Dagan was a simple send button embedded inside a chat module. Such a button has to be disabled when the text input is empty and becomes enabled when <span id=\"urn:enhancement-ce15a397\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/user_computing\">user<\/span> starts writing.<\/p>\n\n\n\n<center><br><figure><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1184\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/send-button.gif\" alt=\"\" width=\"280\" height=\"81\"><\/figure><\/center>\n\n\n\n<p>The problem they noted in this case was that the button became enabled some seconds after the <span id=\"urn:enhancement-ffd71314\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/user_computing\">user<\/span> started typing. This is one of those cases where finding out why a weird behaviour is happening might <b>drive a <span id=\"urn:enhancement-3f755019\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developer<\/span> completely out of target<\/b>. One could think that this is something due to React Native and the additional <span id=\"urn:enhancement-28254600\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/abstraction_layer\">abstraction layer<\/span> that was causing a performance issue. Instead, what Dagan and his team discovered is that they were <span id=\"urn:enhancement-30fd40bd\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rendering_computer_graphics\">rendering<\/span> the entire list of <span id=\"urn:enhancement-abf8c069\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/chat_room\">chat rooms<\/span> at every change in any of the other <span id=\"urn:enhancement-65e6eb2d\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/chat_room\">chat rooms<\/span>. So in this case, changing the text and enabling the button caused a lot of useless <span id=\"urn:enhancement-2b26d2a3\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> loading and <span id=\"urn:enhancement-45c60af4\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/rendering_computer_graphics\">rendering<\/span>.<\/p>\n\n\n\n<p>While this may look like a shoddy way of building such a simple feature, it actually was caused by the need of <b>programming in a functional manner<\/b>. Dagan explained that they solved this issue by saving the unchanged <span id=\"urn:enhancement-dc44e529\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/chat_room\">chat rooms<\/span> using <b>memoization<\/b>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Delays in delivering messages<\/h3>\n\n\n\n<p>Another interesting example discussed by Dagan involved a messaging module. In this case, the message sent by one were received with annoying delays by the recipient. This video depicts the issue:<\/p>\n\n\n\n<center><br>https:\/\/www.youtube.com\/watch?v=gCmSf67won4<\/center>\n\n\n\n<p>The problem here was <i>componentWillReceiveProps<\/i> being called too many times, which in turn triggered every new render cycle, due to a call to <i>setState<\/i>. While this is of course related to React Native, <b>knowing how it works under the hood<\/b> can help in solving such kind of problems by just <b>optimising the <span id=\"urn:enhancement-46697bcd-14f2-3a8a-586e-057d533d4cef\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> <span id=\"urn:enhancement-f3d57aa7\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/source_code\">source code<\/span><\/b>. After discovering this issue, the result was much more performant:<\/p>\n\n\n\n<center><br>https:\/\/www.youtube.com\/watch?v=d6fJaLqBlvY<\/center>\n\n\n\n<h3 class=\"wp-block-heading\">Animations<\/h3>\n\n\n\n<p>Another interesting <span id=\"urn:enhancement-a71db4a\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/case_study\">case study<\/span> involved the implementation of a custom animation. While designers can have interesting and very creative ideas, implementing is often much more difficult than describing.<\/p>\n\n\n\n<p>Dagan and his team first tried a React Native approach based on the library Animated which, however, did not work. After some trials, they opted for a native implementation of such animation, which worked perfectly during the tests, but did not result in a valid solution when integrated in the <span id=\"urn:enhancement-c806681f\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span>. Finally, they had to rewrite all the animation based on React Native\u2019s <b>LayoutAnimations<\/b>, which in the end resulted in a working solution.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Module Load Time<\/h3>\n\n\n\n<p>The last example discussed by Dagan is about importing modules. The <span id=\"urn:enhancement-a0acb3bd\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span> <span id=\"urn:enhancement-3724e724\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/video_game_developer\">developed<\/span> by his team is indeed divided into many independent modules. They discovered that delaying the import <span id=\"urn:enhancement-82d9b2cb\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/statement_computer_science\">statements<\/span> by requiring each of them only when needed made the <span id=\"urn:enhancement-4cd0def8\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span> much more reactive and efficient. So the solution consisted in <b>removing the <i>import<\/i> <span id=\"urn:enhancement-f87abe2d\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/statement_computer_science\">statements<\/span> from the top of the file and instead requiring them only when needed<\/b>.<\/p>\n\n\n\n<p>Of course, they figured out this after some tests, but this is just another example that shows how just working on <span id=\"urn:enhancement-19d712d0-ced3-0d16-9b3f-fb4c593e1c18\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> allows to improve the efficiency, without the need of going native.<\/p>\n\n\n\n<center><br><figure><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1186\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/requireimport-1024x560.png\" alt=\"\" width=\"1024\" height=\"560\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/requireimport-1024x560.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/requireimport-300x164.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/requireimport-768x420.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/requireimport.png 1050w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/center>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Dagan concluded his talk by highlighting that React Native is not to blame in most cases. Instead, this is just how <span id=\"urn:enhancement-8824d94f-561c-1bab-5081-5bcbbb32af27\" class=\"textannotation wl-creative-work disambiguated\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> and React work. To prove this point, he also released a project (available on <a href=\"https:\/\/github.com\/ofirdagan\/good-card-bad-card\">GitHub<\/a>) that includes a simple <span id=\"urn:enhancement-bb45cbee\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/application_software\">application<\/span> implemented in two <span id=\"urn:enhancement-f80a1895\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_versioning\">versions<\/span>: one that is very laggy, and another one that incorporates proper optimisations, resulting in a much more efficient solution.<\/p>\n\n\n\n<p>Finally, Dagan suggested some<b> guidelines<\/b> that any <span id=\"urn:enhancement-80b3292b\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span> (especially React <span id=\"urn:enhancement-8cd62d21\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/software_developer\">developers<\/span>) should always take into consideration:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><b>Know your crucial app flows and keep monitoring them<\/b>: it is important to monitor the app flow, in order to be notified in case of performance degradation<\/li><li><b>Avoid writing anonymous functions as props<\/b>, since they could potentially have a huge impact<\/li><li><b>Know your components<\/b> and do not think that writing pure components will solve everything (see the above example about animations)<\/li><\/ul>\n\n\n\n<p><b>Know your <span id=\"urn:enhancement-314d8ac3\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/component-based_software_engineering\">components<\/span> life-cycle <span id=\"urn:enhancement-1aaf9e8a\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/method_computer_programming\">methods<\/span><\/b>: each <span id=\"urn:enhancement-9e3e3c3e\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/component-based_software_engineering\">component<\/span> is different and might use different life-cycle <span id=\"urn:enhancement-2f2175e9\" class=\"textannotation disambiguated wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/method_computer_programming\">methods<\/span>.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>React Native is a JavaScript framework that allows us to build mobile applications. It is based on React, Facebook\u2019s JavaScript library for building web user interfaces, but instead of targeting browsers, it generates fully-native mobile applications. This means that you can use JavaScript and a single codebase for creating apps for Android and iOS, without&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":8,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":4,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[33],"tags":[4,54],"collections":[],"class_list":{"0":"post-7","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-mobile-dev","8":"tag-codemotion-rome","9":"tag-react","10":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Building mobile applications in JavaScript with React Native - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building mobile applications in JavaScript with React Native\" \/>\n<meta property=\"og:description\" content=\"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-02T10:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-23T14:21:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vito Gentile\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ViGentile\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vito Gentile\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\"},\"author\":{\"name\":\"Vito Gentile\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313\"},\"headline\":\"Building mobile applications in JavaScript with React Native\",\"datePublished\":\"2019-12-02T10:00:00+00:00\",\"dateModified\":\"2021-12-23T14:21:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\"},\"wordCount\":1099,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg\",\"keywords\":[\"Codemotion Rome\",\"React\"],\"articleSection\":[\"Mobile Developer\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\",\"name\":\"Building mobile applications in JavaScript with React Native - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg\",\"datePublished\":\"2019-12-02T10:00:00+00:00\",\"dateModified\":\"2021-12-23T14:21:26+00:00\",\"description\":\"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg\",\"width\":900,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Mobile Developer\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Building mobile applications in JavaScript with React Native\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313\",\"name\":\"Vito Gentile\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g\",\"caption\":\"Vito Gentile\"},\"description\":\"I\u2019m a data scientist, tech writer, software developer with experience in mobile, web (full-stack) and Python programming, and former researcher with interests in human-computer interaction. I thus have a multi-faceted experience in the area of software development, and that\u2019s why I love my job(s)!\",\"sameAs\":[\"https:\/\/vitogentile.it\",\"https:\/\/www.linkedin.com\/in\/vitogentile\/en\",\"https:\/\/x.com\/ViGentile\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building mobile applications in JavaScript with React Native - Codemotion Magazine","description":"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...","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:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/","og_locale":"en_US","og_type":"article","og_title":"Building mobile applications in JavaScript with React Native","og_description":"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-12-02T10:00:00+00:00","article_modified_time":"2021-12-23T14:21:26+00:00","og_image":[{"width":900,"height":675,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg","type":"image\/jpeg"}],"author":"Vito Gentile","twitter_card":"summary_large_image","twitter_creator":"@ViGentile","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Vito Gentile","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/"},"author":{"name":"Vito Gentile","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313"},"headline":"Building mobile applications in JavaScript with React Native","datePublished":"2019-12-02T10:00:00+00:00","dateModified":"2021-12-23T14:21:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/"},"wordCount":1099,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg","keywords":["Codemotion Rome","React"],"articleSection":["Mobile Developer"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/","name":"Building mobile applications in JavaScript with React Native - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg","datePublished":"2019-12-02T10:00:00+00:00","dateModified":"2021-12-23T14:21:26+00:00","description":"React Native is a JavaScript framework to build mobile applications. In this article, however, you will learn that things are not always so easy...","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg","width":900,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/building-mobile-applications-in-javascript-with-react-native\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"Mobile Developer","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/"},{"@type":"ListItem","position":4,"name":"Building mobile applications in JavaScript with React Native"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/f9c99d8dfb99900d709bb8199225d313","name":"Vito Gentile","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebcb5b885a4f1669578d08a55deb81064893c07c1b35b7b36eb059cce730ae90?s=96&d=mm&r=g","caption":"Vito Gentile"},"description":"I\u2019m a data scientist, tech writer, software developer with experience in mobile, web (full-stack) and Python programming, and former researcher with interests in human-computer interaction. I thus have a multi-faceted experience in the area of software development, and that\u2019s why I love my job(s)!","sameAs":["https:\/\/vitogentile.it","https:\/\/www.linkedin.com\/in\/vitogentile\/en","https:\/\/x.com\/ViGentile"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-600x600.jpg","author_info":{"display_name":"Vito Gentile","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg",900,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-300x225.jpg",300,225,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-768x576.jpg",768,576,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg",900,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg",900,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg",900,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan.jpg",100,75,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/09\/ofir-dagan-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Vito Gentile","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/vito-gentile\/"},"uagb_comment_info":0,"uagb_excerpt":"React Native is a JavaScript framework that allows us to build mobile applications. It is based on React, Facebook\u2019s JavaScript library for building web user interfaces, but instead of targeting browsers, it generates fully-native mobile applications. This means that you can use JavaScript and a single codebase for creating apps for Android and iOS, without&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":12,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":15117,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/7\/revisions\/15117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/8"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=7"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}