{"id":14771,"date":"2019-02-18T09:13:24","date_gmt":"2019-02-18T08:13:24","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=14771"},"modified":"2026-03-17T07:59:33","modified_gmt":"2026-03-17T06:59:33","slug":"lessons-learned-react-native","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/","title":{"rendered":"Lessons Learned after Using React Native for a Year"},"content":{"rendered":"<p>Last year I received the assignment to create a sophisticated Android and iOS application for a European retail chain, so their employees could be more productive in their daily routines. The goal was to create a React Native app to enable their employees to scan and maintain the retail chain\u2019s inventory in an easy and convenient way. I began working on the project in October 2017 and finished my work in December 2018. While creating the inventory app I had the opportunity to learn and gained a lot of insights about the pros and cons of using React Native.<\/p>\n<p>In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Please keep in mind that some of the lessons I learned refer to our technology stack which I attached below. For clarity reasons I divided this blog entry in four sections: \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019, and \u2018Additional Learnings\u2019. <!--more--><\/p>\n<figure id=\"attachment_14868\" aria-describedby=\"caption-attachment-14868\" style=\"width: 1378px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14868\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack.png\" alt=\"\" width=\"1378\" height=\"1177\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack.png 1378w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack-300x256.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack-1024x875.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack-768x656.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack-400x342.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/React-Native_Stack-360x307.png 360w\" sizes=\"auto, (max-width: 1378px) 100vw, 1378px\" \/><figcaption id=\"caption-attachment-14868\" class=\"wp-caption-text\">Our React Native technology stack.<\/figcaption><\/figure>\n<div class=\"mceTemp\"><\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#The-Good\" >The Good<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Its-React\" >It\u2019s React<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Fast-Feedback\" >Fast Feedback<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Testing\" >Testing<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#The-Bad\" >The Bad<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Navigation\" >Navigation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Missing-Style-Properties\" >Missing Style Properties<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#The-Ugly\" >The Ugly<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Upgrading-React-Native\" >Upgrading React Native<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Platform-Specific-Updates\" >Platform Specific Updates<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Missing-Native-Modules\" >Missing Native Modules<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Additional-Learnings\" >Additional Learnings<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Documentation\" >Documentation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#TypeScript-Support\" >TypeScript Support<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Warnings\" >Warnings<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Redux\" >Redux<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#GraphQL-Apollo\" >GraphQL &amp; Apollo<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Conclusion\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Read-on\" >Read on<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#Literature\" >Literature<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"The-Good\"><\/span>The Good<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Its-React\"><\/span>It\u2019s React<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As a front-end engineer with a native iOS development background, I found it very easy to get started with React Native since I already had used <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener\">React<\/a> and thus the concept of a component based architecture was familiar to me. React Native itself is just like React with the distinction that it uses native components instead of <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/tutorial\" target=\"_blank\" rel=\"noopener\">web components as its building blocks<\/a>. Due to the popularity of component based architectures in modern frameworks such as React, Vue, and Angular I would argue that the learning curve for most front-end engineers who already used a component based framework is low.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Fast-Feedback\"><\/span>Fast Feedback<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Compared to native iOS app development, React Native offers a feature that is called <i>Hot Reloading <\/i> which is well-known to front-end engineers and Android developers. The idea behind <i>Hot Reloading <\/i>is to inject edited files to an already running app without the need to recompile (on the web re-bundle) the application, and thus the developer doesn\u2019t lose the <a href=\"https:\/\/facebook.github.io\/react-native\/blog\/2016\/03\/24\/introducing-hot-reloading\" target=\"_blank\" rel=\"noopener\">running app state<\/a> [3].<\/p>\n<p><i>Hot Reloading <\/i> is especially useful when tweaking user interface components, since it makes time-consuming re-compilation obsolete. Nevertheless, <i>Hot Reloading <\/i> will only work to a certain degree, since it does not work when updating application logic and other parts like environment variables. Overall, I really miss this functionality when developing iOS apps in my spare time.<\/p>\n<p>A great demonstration how <i>Hot Reloading <\/i>works in detail when developing a React Native application can be seen in the following video:<\/p>\n<div class=\"BorlabsCookie\"><div class=\"_brlbs-content-blocker\"> <div class=\"_brlbs-embed _brlbs-video-youtube\"> <img class=\"_brlbs-thumbnail\" src=\"https:\/\/www.inovex.de\/wp-content\/plugins\/borlabs-cookie\/images\/cb-no-thumbnail.png\" alt=\"YouTube\"> <div class=\"_brlbs-caption\"> <p>By loading the video, you agree to YouTube's privacy policy.<br><a href=\"https:\/\/policies.google.com\/privacy?hl=en&amp;gl=en\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Learn more<\/a><\/p> <p><a class=\"_brlbs-btn _brlbs-icon-play-white\" href=\"#\" data-borlabs-cookie-unblock role=\"button\">Load video<\/a><\/p> <p><label><input type=\"checkbox\" name=\"unblockAll\" value=\"1\" checked> <small>Always unblock YouTube<\/small><\/label><\/p> <\/div> <\/div> <\/div><div class=\"borlabs-hide\" data-borlabs-cookie-type=\"content-blocker\" data-borlabs-cookie-id=\"youtube\">PHA+PGlmcmFtZSBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iNTAwcHgiIGhlaWdodD0iMjgxcHgiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvMnVRelZpLUtGdWMiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj0iYWxsb3dmdWxsc2NyZWVuIj48L2lmcmFtZT48L3A+<\/div><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Testing\"><\/span>Testing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>My team and I decided to use the <i>Jest <\/i> Framework which was also created by Facebook, to test our React Native app. <i>Jest <\/i>worked really well for us, as it was very easy to integrate into our React Native environment and it was pretty straightforward to use. We also loved the detailed documentation of Jest. Ultimately Jest allowed us to write unit and integration tests without any constraints.\u00a0A big benefit of having a single code base compared to writing two native apps (iOS + Android), is that the cost to write tests declines and thus becomes more efficient.<\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"The-Bad\"><\/span>The Bad<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Navigation\"><\/span>Navigation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>We had some trouble implementing a well working navigation concept. React Native itself only provides a native wrapper for the iOS navigation,\u00a0<i>NavigatorIOS <\/i>. For Android there is no out of the box solution provided by React Native. The official documentation recommends using a library named <i>React Navigation <\/i> for a <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/navigatorios\" target=\"_blank\" rel=\"noopener\">cross-platform solution in JavaScript<\/a> [4].<\/p>\n<p>We followed the docs&#8216; advice and added <i>React Navigation <\/i>as a dependency to our project in order to implement our navigation. However, we weren\u2019t really happy with our decision as we often found bugs and faced difficulties using the library in combination with Redux to manage our navigation state. Later we also had to learn that the official Redux integration will no longer be officially supported with the next major React Navigation version (4.x.x) which was a real bummer [5].<\/p>\n<p>Next time I would try the open source library\u00a0<i>React Native Navigation <\/i> (this name is easy to mistake for <i>React Navigation<\/i>) made by the company <i>Wix.com <\/i>. On first sight this library seems to be a good alternative as it also offers <a href=\"https:\/\/wix.github.io\/react-native-navigation\/#\/docs\/third-party?id=redux\" target=\"_blank\" rel=\"noopener\">Redux support<\/a> [6] and even provides a <a href=\"https:\/\/wix.github.io\/react-native-navigation\" target=\"_blank\" rel=\"noopener\">full native platform navigation<\/a> on Android and iOS. [7] The main reasons we didn\u2019t swap <i>React Navigation <\/i>for <i>React Native Navigation <\/i>was that our app was already too big for such a change, and it would have been too much effort.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Missing-Style-Properties\"><\/span>Missing Style Properties<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>While using React Native I often missed the fact that not all CSS properties were available in the React Native <i>StyleSheet <\/i> abstraction, which is pretty similar to the <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/style\" target=\"_blank\" rel=\"noopener\">CSS style sheets on the web platform<\/a> [8]. Don\u2019t get me wrong here, I love the fact that I can style my React Native components using known CSS properties, but sometimes it was a bit annoying to find out that some properties are just not available on the React Native <i>StyleSheet <\/i> abstraction like <em>background-repeat<\/em>, <em>filter<\/em>, and <em>box-shadow<\/em> for example.<\/p>\n<p>On the upside, we could always style our component as needed but it often required some rethinking. You can find a full list of all React Native <i>StyleSheet <\/i> properties <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/layout-props\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"The-Ugly\"><\/span>The Ugly<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Upgrading-React-Native\"><\/span>Upgrading React Native<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Often we had several problems when we tried to update our React Native version with its dependencies to the latest version by using the react-native-git-upgrade module that is provided by the React Native team.<\/p>\n<p>Interestingly there were versions out there where the module worked but more often it did not for us. As a result we had to update our dependencies manually which was a time consuming but very important task as React Native continues to get better and better with every release.<\/p>\n<p>I generally felt that upgrading React Native with its dependencies was more time consuming compared to updating dependencies in either a native or a web application. Personally I think that the process of upgrading React Native versions in the future will become easier as the platform slowly but steadily evolves and gets more mature.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Platform-Specific-Updates\"><\/span>Platform Specific Updates<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>One of the things I missed the most when benchmarked to pure native app development, was that platform specific updates took a while until they were available on React Native.<\/p>\n<p>In our case we had to wait several months until React Native shipped the SafeAreaView component. The SafeAreaView was needed in order to render our components within the safe boundaries of an iOS device which affects newer iPhones (X, XR, XS, and XS Max), since those devices limit the screen as they have rounded corners and camera notches.<\/p>\n<p>Sure, we could have manually created a React Native component in order to guarantee that our content stays within the devices safe boundaries, but it is always easier and more convenient to use officially supported components rather than creating your own.<\/p>\n<p>Another characteristic that annoyed me was that I had to use some workarounds in order to execute our React Native app after I updated my system to the newest macOS (Mojave) and Xcode (10) version. Initially our app didn\u2019t run on Xcode 10 because <a href=\"https:\/\/github.com\/facebook\/react-native\/issues\/19573\" target=\"_blank\" rel=\"noopener\">changes to the Xcode build system<\/a> have been made [9]. Please note that I don\u2019t blame React Native here, but for me as a developer it means that I have to be very cautious before updating to the latest macOS and Xcode versions from\u00a0the first day they are released. This is the case less frequently when developing a native or web application.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Missing-Native-Modules\"><\/span>Missing Native Modules<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sometimes my team and I missed some modules which React Native oddly didn\u2019t ship. As a result we had to add extra dependencies like <i>React Navigation<\/i>, React-Native-i18n , and React-Native-Config (Configuration Variables) that aren\u2019t needed when developing a native iOS\/Android app, since they are already included in Apple\u2019s and Google\u2019s mobile SDK.<\/p>\n<p>While this isn\u2019t necessarily a bad thing, it definitely requires some effort to find good and reliable libraries or the time to implement your own solution. Also, please consider that all added dependencies have to be updated from time to time.<\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"Additional-Learnings\"><\/span>Additional Learnings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Documentation\"><\/span>Documentation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In my first 6 months using React Native I noticed that some parts of the official React Native documentation were lacking some information. I particularly struggled with the <i>Animated <\/i> and <i>LayoutAnimation API<\/i>, because some parts of the docs were just <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/animations\" target=\"_blank\" rel=\"noopener\">incomplete<\/a> [10]. I often had to look in the React Native implementation itself or read some articles online to understand how to animate a simple React Native component.<\/p>\n<p>Having said that, I noticed that the overall documentation is becoming better and better every month. The <i>Animated <\/i> and <i>LayoutAnimation API <\/i>part in the docs is looking more complete now. At this point, I would like to give a shout out to the React Native Team!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"TypeScript-Support\"><\/span>TypeScript Support<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In the beginning there was a short period of time where we thought about writing the inventory app in TypeScript. TypeScript can be particularly interesting for team members with a native mobile background, since Swift and Java (used for iOS and Android) are both static typed languages, where JavaScript is not. Using a typed language like TypeScript \u2013 a typed superset of JavaScript \u2013 facilitates spotting bugs while typing the code and also enables a more powerful auto completion.<\/p>\n<p>However, TypeScript support at the time (October 2017) wasn\u2019t good enough and so we went on with JavaScript. On the upside, the <a href=\"https:\/\/facebook.github.io\/react-native\/blog\/2018\/05\/07\/using-typescript-with-react-native\" target=\"_blank\" rel=\"noopener\">TypeScript support<\/a> nowadays seems to be great and I would definitely give it a try and use it with React Native [11].<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Warnings\"><\/span>Warnings<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>What I immediately noticed after setting up React Native with the CLI (command-line interface) for the first time is that out of the box my newly generated project had several warnings. I got annoyed by the constant stream of warnings that occurred every time I compiled and executed the inventory app.<\/p>\n<figure id=\"attachment_14792\" aria-describedby=\"caption-attachment-14792\" style=\"width: 2856px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14792 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2019\/01\/Xcode_warnings.jpg\" alt=\"Xcode screenshot when executing a newly generated CLI React Native project\" width=\"2856\" height=\"890\" \/><figcaption id=\"caption-attachment-14792\" class=\"wp-caption-text\">Xcode screenshot when executing a newly generated CLI React Native project.<\/figcaption><\/figure>\n<p>For me this behavior was a bit disturbing, since I learned in my early career that warnings should be avoided. Although this fact isn\u2019t crucial when developing React Native, it still bothered me that our newly created project had so many warnings. I still tried to get rid of all warnings but wasn\u2019t successful and learned to live with it.<\/p>\n<p>In defense of React Native, you will likely also face the same situation when you add dependencies to an iOS, Android, or Web project.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Redux\"><\/span>Redux<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In order to manage our application state we decided to go with Redux, mainly because some team members had already used it in another project and loved it. After using Redux for over a year within our app, I must say that it worked well but I noticed that some team members (myself included) had some problems learning Redux, because it required learning new concepts and thus often a new way of thinking. I would argue that Redux has a pretty steep learning curve and can be a bit intimidating at the beginning.<\/p>\n<p>Overall, Redux worked for us, but required a lot of effort to get used to. Ultimately, Redux was probably not necessarily needed, as our application state was rather small. Today, if I had the chance to choose a solution to manage our app state, I would first go with the React Context API and use it until the app state becomes unmanageable, if ever. At this point I highly recommend you to read Dan\u2019s article <a href=\"https:\/\/medium.com\/@dan_abramov\/you-might-not-need-redux-be46360cf367\" target=\"_blank\" rel=\"noopener\">\u2018You Might Not Need Redux\u2019<\/a> first, before deciding whether to use Redux or not [12].<\/p>\n<h3><span class=\"ez-toc-section\" id=\"GraphQL-Apollo\"><\/span>GraphQL &amp; Apollo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>GraphQL is a query language for APIs with a runtime in order to fulfill those queries. In summary, the idea of <a href=\"https:\/\/graphql.org\" target=\"_blank\" rel=\"noopener\">GraphQL<\/a> is to give clients more flexibility as they can ask exactly for the data they need. [13]<\/p>\n<p>We used the Apollo framework (implementation of GraphQL) to create a GraphQL backend for our React Native application \u2013 often called BFF (Backend for frontend) \u2013, so we could be more flexible on the client site and also pre-process some data on the BFF first. The whole idea was to decouple backend logic from the frontend.<\/p>\n<p>After using Apollo with GraphQL for over a year, I must say that our setup worked well, as it was stable and resulted in a cleaner code on the client side (React Native) than it would be the case without. Ultimately, one must not forget that it is much easier to just use existing REST-APIs (if applicable) without creating a BFF, since writing and maintaining the BFF also requires time and effort.<\/p>\n<p>Before creating a BFF, please make sure that it makes sense for your project constellation. If your project is rather big, or requires data from multiple data sources, GraphQL might be the right idea though.<\/p>\n<hr \/>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Would I use React Native in the same project again?<\/p>\n<p>Well, after analyzing and learning about all project requirements (weren\u2019t all known in the beginning), our project could also be created by solely relying on modern web technologies. This is mainly due to the fact that the application primarily only displays data, doesn\u2019t use much animation, will only be used internally (no app store requirement), and the dedicated mobile scanner itself registers as a simple keyboard. With the help of modern web standards like the Service Worker and the Web App Manifest, an installable and offline capable web application could have been created.<\/p>\n<p>Sure, React Native wasn\u2019t a bad choice either as it worked for our use-case and the finished app received much praise. However, developing a web application would have been faster since many problems which I already described above wouldn\u2019t have existed, and other things like app deployment would have been simpler and thus would allow us to move at a faster pace.<\/p>\n<p>As a result, I think that React Native has its right to exist as it already allowed our team and larger companies such as Uber, Walmart, and Tesla to successfully create <a href=\"https:\/\/facebook.github.io\/react-native\/showcase\" target=\"_blank\" rel=\"noopener\">sophisticated applications<\/a> [14]. Before deciding whether to use React Native\/native\/web technologies, you should first start thinking what the project requirements really are and then balance pros and cons of each technology against each other, and ultimately decide with all team members what technology to use.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Read-on\"><\/span>Read on<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Need more support working with React Native or other mobile technologies? Have a look at our <a href=\"https:\/\/www.inovex.de\/en\/our-services\/apps\/\">portfolio for iOS and Android<\/a>. If you want to get your hands dirty, you might want to join us yourself.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Literature\"><\/span>Literature<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>[1] <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/tutorial\">https:\/\/facebook.github.io\/react-native\/docs\/tutorial <\/a><\/p>\n<p>[2] <a href=\"https:\/\/webpack.js.org\/concepts\/hot-module-replacement\/\">https:\/\/webpack.js.org\/concepts\/hot-module-replacement <\/a><\/p>\n<p>[3] <a href=\"https:\/\/facebook.github.io\/react-native\/blog\/2016\/03\/24\/introducing-hot-reloading\">https:\/\/facebook.github.io\/react-native\/blog\/2016\/03\/24\/introducing-hot-reloading<\/p>\n<p><\/a><\/p>\n<p>[4] <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/navigatorios\">https:\/\/facebook.github.io\/react-native\/docs\/navigatorios <\/a><\/p>\n<p>[5] https:\/\/reactnavigation.org\/docs\/en\/redux-integration.html <\/p>\n<p>[6] <a href=\"https:\/\/wix.github.io\/react-native-navigation\/#\/docs\/third-party?id=redux\">https:\/\/wix.github.io\/react-native-navigation\/#\/docs\/third-party?id=redux <\/a><\/p>\n<p>[7] <a href=\"https:\/\/wix.github.io\/react-native-navigation\">https:\/\/wix.github.io\/react-native-navigation <\/a><\/p>\n<p>[8] <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/style\">https:\/\/facebook.github.io\/react-native\/docs\/style <\/a><\/p>\n<p>[9] <a href=\"https:\/\/github.com\/facebook\/react-native\/issues\/19573\">https:\/\/github.com\/facebook\/react-native\/issues\/19573 <\/a><\/p>\n<p>[10] <a href=\"https:\/\/facebook.github.io\/react-native\/docs\/animations\">https:\/\/facebook.github.io\/react-native\/docs\/animations <\/a><\/p>\n<p>[11] <a href=\"https:\/\/facebook.github.io\/react-native\/blog\/2018\/05\/07\/using-typescript-with-react-native\">https:\/\/facebook.github.io\/react-native\/blog\/2018\/05\/07\/using-typescript-with-react-native <\/a><\/p>\n<p>[12] <a href=\"https:\/\/medium.com\/@dan_abramov\/you-might-not-need-redux-be46360cf367\">https:\/\/medium.com\/@dan_abramov\/you-might-not-need-redux-be46360cf367 <\/a><\/p>\n<p>[13] <a href=\"https:\/\/graphql.org\/\">https:\/\/graphql.org <\/a><\/p>\n<p>[14] <a href=\"https:\/\/facebook.github.io\/react-native\/showcase\">https:\/\/facebook.github.io\/react-native\/showcase <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year I received the assignment to create a sophisticated Android and iOS application for a European retail chain, so their employees could be more productive in their daily routines. The goal was to create a React Native app to enable their employees to scan and maintain the retail chain\u2019s inventory in an easy and [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":15579,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[510],"service":[420],"coauthors":[{"id":65,"display_name":"Filipe Santos Correa","user_nicename":"fsantoscorrea"}],"class_list":["post-14771","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-apps-2","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Lessons Learned after Using React Native for a Year<\/title>\n<meta name=\"description\" content=\"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!\" \/>\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.inovex.de\/de\/blog\/lessons-learned-react-native\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lessons Learned after Using React Native for a Year\" \/>\n<meta property=\"og:description\" content=\"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-18T08:13:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T06:59:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Filipe Santos Correa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Filipe Santos Correa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Filipe Santos Correa\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/\"},\"author\":{\"name\":\"Filipe Santos Correa\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/f44f1a26f6601ae1a39ef0a9f2111b9f\"},\"headline\":\"Lessons Learned after Using React Native for a Year\",\"datePublished\":\"2019-02-18T08:13:24+00:00\",\"dateModified\":\"2026-03-17T06:59:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/\"},\"wordCount\":2515,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/one-year-of-react-native.png\",\"keywords\":[\"Apps\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/\",\"name\":\"Lessons Learned after Using React Native for a Year\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/one-year-of-react-native.png\",\"datePublished\":\"2019-02-18T08:13:24+00:00\",\"dateModified\":\"2026-03-17T06:59:33+00:00\",\"description\":\"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/one-year-of-react-native.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/one-year-of-react-native.png\",\"width\":1920,\"height\":1080,\"caption\":\"The react native logo surrounded by 365 bars\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/lessons-learned-react-native\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lessons Learned after Using React Native for a Year\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/f44f1a26f6601ae1a39ef0a9f2111b9f\",\"name\":\"Filipe Santos Correa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g397c5045ad5487d80dc5c919ad75831a\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g\",\"caption\":\"Filipe Santos Correa\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/fsantoscorrea\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lessons Learned after Using React Native for a Year","description":"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!","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.inovex.de\/de\/blog\/lessons-learned-react-native\/","og_locale":"de_DE","og_type":"article","og_title":"Lessons Learned after Using React Native for a Year","og_description":"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!","og_url":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2019-02-18T08:13:24+00:00","article_modified_time":"2026-03-17T06:59:33+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png","type":"image\/png"}],"author":"Filipe Santos Correa","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Filipe Santos Correa","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten","Written by":"Filipe Santos Correa"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/"},"author":{"name":"Filipe Santos Correa","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/f44f1a26f6601ae1a39ef0a9f2111b9f"},"headline":"Lessons Learned after Using React Native for a Year","datePublished":"2019-02-18T08:13:24+00:00","dateModified":"2026-03-17T06:59:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/"},"wordCount":2515,"commentCount":4,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png","keywords":["Apps"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/","url":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/","name":"Lessons Learned after Using React Native for a Year","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png","datePublished":"2019-02-18T08:13:24+00:00","dateModified":"2026-03-17T06:59:33+00:00","description":"In this article you will find a brief summary of the lessons I learned while working with React Native on a daily basis for over a year. Here is \u2018The Good\u2019, \u2018The Bad\u2019, \u2018The Ugly\u2019\u2014and some more!","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2022\/01\/one-year-of-react-native.png","width":1920,"height":1080,"caption":"The react native logo surrounded by 365 bars"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/lessons-learned-react-native\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Lessons Learned after Using React Native for a Year"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/f44f1a26f6601ae1a39ef0a9f2111b9f","name":"Filipe Santos Correa","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g397c5045ad5487d80dc5c919ad75831a","url":"https:\/\/secure.gravatar.com\/avatar\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a81b72f44e639206806252ded2e8541bdab4efd3c68ca20b65e28a0d1b8e61c?s=96&d=retro&r=g","caption":"Filipe Santos Correa"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/fsantoscorrea\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/14771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=14771"}],"version-history":[{"count":3,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/14771\/revisions"}],"predecessor-version":[{"id":66527,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/14771\/revisions\/66527"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/15579"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=14771"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=14771"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=14771"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=14771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}