Listen On:

Meet your hosts,

three of the most

exhilarating

thrilling

brilliant

remarkable

mind-blowing

insightful

astounding

captivating

React Native experts around.

Jamon Holmgren

Co-Founder & CTO

Jamon is Co-Founder and CTO of Infinite Red and one of the most recognizable voices in the React Native community. You may have seen him speak at various conferences around the world, but most know him from where he is just as likely to nerd out about React Native as he is to show pictures of his tractor. He lives in southwest Washington state with his family, plays recreational hockey as a goalie, and has a new granddaughter!

Robin Heinze

Director of Engineering

Robin, the Director of Engineering at Infinite Red, leads our team of senior-level React Native engineers. She’s guided numerous high-profile clients on their journey to the App Store and is just as known for her engineering knowledge as her seemingly endless collection of “mom jokes” on the show. She lives near Portland, Oregon with her family and enjoys knitting and Formula One.

Mazen Chami

Senior Software Engineer

Mazen’s smooth bass voice rounds out the trifecta of React Native Radio hosts. He’s one of the leading senior software engineers on the Infinite Red team. He’s spoken at tech conferences around the world, is on the React Native core release team, and is also our lead React Native workshop instructor. He lives in Durham, NC, and uses his former professional soccer (“football”) skills to play goalie for a local team.

Recent episodes

RNR 146: React Native Radio at RxJS Live

In this episode of React Native Radio Charles Max Wood does interviews at RxJS Live. His first interview is with Ben Lesh, a core team member of RxJS. Ben has been working on RxJS for the last four years. In his talk, he shares the future of RxJs, the timeline for versions 7 and 8. With Charles, he discusses his work on RxJS and the adoption of RxJS. Next, Charles interviews Sam Julien and Kim Maida. They gave a talk together covering the common problems developers have when learning RxJS. In the talk, they share tips for those learning RxJS. Charles wonders what inspired them to give this talk. Both share experiences where they encouraged someone to use RxJS but the learning curve was to steep. They discuss the future of RxJS adoptions and resources. Finally, Charles interviews Kim alone about her second talk about RxJS and state management. She explains to Charles that many state management libraries are built on RxJS and that it is possible to roll out your own state management solution with RxJS. They discuss why there are so many different state management libraries. Kim shares advice for those looking to roll out their own solutions. Panelists Charles Max Wood Guests Ben Lesch Sam Julien Kim Maida Sponsors Infinite Red G2i CacheFly Links https://twitter.com/benlesh http://www.samjulien.com/ https://twitter.com/samjulien https://twitter.com/KimMaida https://www.rxjs.live/ https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio

December 17, 2019
28:18
E
143
RNR 145: The Five Approaches to Using React Native

In this episode of React Native Radio the panel discusses Josh Justice’s blog post outlining four approaches to using React Native and a fifth approach he has heard about since publishing the post. Josh summarizes the post and explains how knowing the benefits of each approach can minimize the downsides of using React Native that scare people away from using it. Understanding each approach can also help you decide which approach would work best for your company. The first approach and the recommend approach recommended by React Native is Expo. Josh explains what Expo is and how it simplifies React Native for those starting out. The panel shares their experiences with Expo and considers the benefits of using it. They list many of the tools that Expo has right of the box and praise the simplicity of setting up and using for developers unfamiliar with native development tools. The next approach to using React Native is React Native CLI. React Native CLI is the default approach to using React Native. This approach does require some knowledge of Xcode and android studio. It is the best option if you need to use some native integration not included in Expo. The panel shares recommendations for learning and the use of React Native CLI. The next approach is inserting React Native into an existing native app. Josh explains how this is done and the benefits of doing so gradually. The panel considers why this approach might be used. Josh shares some challenges he saw when using this approach. The panel briefly discusses the approach Josh does not mention in his post, Expo Kit. The final approach from the blog post and the most complex is using React Native in an independent component library. The panel considers the benefits of this approach including the isolation of the React Native code and freeing up native developers. Reusing code is discussed including how this approach can be used to save time and be used for testing. The episode ends as the panel gives recommendations for native developers wanting to get into React Native or bring React Native to their companies. React Native has a very helpful and tightknit community and the panel invites anyone struggling or wanting to know more about React Native to reach out to the community. Panelists Charles Max Wood Josh Justice Narendra Shetty Christopher Reyes Sponsors Infinite Red G2i CacheFly Links Four Approaches to React Native Big Nerd Ranch guides for iOS and Android ExpoKit React Native Community CLI Reactiflux https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Josh Justice: GitHub Actions GitHub Packages (Package Registry) Exploring JS Deep JavaScript Foundations Christopher Reyes: Ignite cli reactotron

December 10, 2019
67:56
E
142
RNR 143: The Roles of QA and Development

In this episode of React Native Radio the panel considers the roles of QA and development teams. Charles Max Wood and Josh Justice share their backgrounds in QA and development, this gives them a unique perspective, having seen it from both sides. They begin by discussing and defining some terms. Charles explains that most terms are defined more by an organization than the industry. The panel discusses testing tools like Cypress and Detox, explaining their uses and value. They define black box and gray box testing and consider the benefits of each testing type. Josh explains the value of manual testing and how that value may never be lost. They consider the strategy of relying on users to find bugs. They compare testing mobile and web development. They consider how the roles of QA and development overlap and the best ways to define the roles of each team. Charles recommends each organization sit down and clearly define these roles. Josh recommends clearly outlining where CI and CD come into play. They consider the common relationship issues found between QA and development, including animosity and an “us vs. them” mentality. Charles and Josh explain the value of working together and communicating with each other. They give advice on how to work together and improve relationships between QA and development. Panelists Charles Max Wood Josh Justice Sponsors Infinite Red G2i CacheFly Links The MaxCoders Guide To Finding Your Dream Developer Job https://github.com/wix/Detox Appium https://www.cypress.io/ https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Charles Max Wood: Holiday Inn White Christmas The MaxCoders Guide To Finding Your Dream Developer Job Josh Justice: Code review Slack

November 26, 2019
60:49
E
140
RNR 142: Battling Bugs with James Smith

In this episode of React Native Radio Charles Max Wood interviews James Smith, the co-founder, and CEO of Bugsnag. James gives Bugsnag’s background and explains what makes it different than other bug-finding tools. He shares statistics on how much bugs cost. Developers spend on average 17.3 hrs per week dealing with bad code, 85 billion dollars in GDP dollars are lost to bad code every year and most customers leave an app after two crashes, harming your brand. Chuck and James consider when and why customers leave reviews. They consider how reviews help in finding and fixing bugs. They discuss how helpful it would be if they could communicate with unhappy customers to help them find bugs. James explains how Bugsnag can help with this by replicating user interactions to find what steps led to a bug. James explains what to once all the data has been gathered and the best processes for actually fixing the bugs. This process stems on establishing ownership and identifying priority bugs. Although QAs and QEs are getting more common, James recommends empowering the engineering team to fix bugs. Chuck and James consider the idea of a bug sheriff, a rotating position who holds the responsibility of determining priorities and ownership. They consider how these processes could lower the number of bugs and teach developers to better handle bugs. James explains that “zero bugs” is an impossible goal because there will always be more bugs, the hope is to stay on top of them so the team can reach new velocity. Performance bugs are considered and James explains how these can be measured and improved each release. Panelists Charles Max Wood Guest James Smith Sponsors Infinite Red G2i CacheFly Links https://stripe.com/reports/developer-coefficient-2018 Buckaroo https://square.github.io/leakcanary/ https://www.bugsnag.com/ https://twitter.com/loopj?lang=en https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Charles Max Wood: The MaxCoders Guide To Finding Your Dream Developer Job It's A Wonderful Life Mr. Krueger's Christmas James Smith: DroidCon Links Awakening

November 19, 2019
57:18
E
138
RNR 141: EEON Mitch Masia

In this episode of React Native Radio, panelists Josh Justice and Charles Max Wood interview Mitch Masia. He is a software engineer from Chicago and works with all things JavaScript, React, React Native, Node, and is currently working on a project to create a financial research platform. The product is called EEON. It is inspired by the lack of apps for people to easily research and make informed financial decisions when it comes to investing with all the amazing zero commission trading apps out there. They are looking to expand upon the information available within those apps to be able to give a rating system, real time visualizations, and data on financial statements. They discuss how this app is constructed and Mitch mentions how great Redis Pub/Sub is for real time functionality. He talks about how difficult it has been to work with multiple services and that recently he has condensed some of those services. React Native with Expo is what he is currently using on his frontend. Right now, iOS is the focus, but android will be following soon thereafter. Mitch acknowledges that most of this already is online, but there is a lack of resources specifically for apps and the panelists agree that how great it is to have an app specifically meant for what they want to do on a web browser. The panelists discuss how the project was started with Expo and the many templates and preset configurations that are available and they compare it to Rails for React Native. Mitch states that the build process is the biggest benefit with Expo among many others. They go on to talk about the different services that Mitch is using for his frontend and backend and what he has used in the past. Mitch talks about how to create a seamless dev experience and his intentionality with constants and consistent build and release process. He uses a library called Semantic Release to release software quicker and more efficiently with an automated system. Redis has been a huge asset for Mitch and has used it as a cache, pub/sub mechanism, and loves the API they expose. Next, the panelists talk about the visualization of data and how Mitch does it. The design has followed an iOS feel with large text and lots of white space. For the charting he used a web view with React Native echarts wrapper, and it has done an exceptional job and Mitch praises the developers who worked on it. The panelists question Mitch about GraphQL and its automated updating of the cache. He responds with options of optimistic updates and automatic updates and that he uses the latter. Mitch goes into some of the difficulties with implementing the automatic updates, but they’ve been able to get around it to provide a seamless experience. They next talk about difficulties with animation and that Mitch ended up using a library called React Native Pose that gives a spring like automation. This leads into a discussion about favorite React Native libraries and Mitch talks about React Native Typography which has a lot of prebuilt styles with default weights and sizes which helps the app feel a lot more Native. For forms they have used Formik and React Final Form. Next, the panelists talk about testing and how Mitch uses the testing diamond, which is to write few end to end tests, a lot of integration tests, and few unit tests. Charles Max Wood used unit testing in the past, but as he has entered the business side, he does more end to end tests because of its importance with client retention. The panelists discuss more about EEON and how Mitch wants to make the data that the app provides to the user be given in a heat map form to make it more navigable and within certain parameters that the user sets. He uses React Native Snap Carousel with heat maps nested within it to create a very nice-looking UI (see EEON for visual). Next, the panel talks about collaborating with the app and how the app will be funded. Mitch talks about how the app will have a generous number of free features but will be funded with premium subscriptions to access all of the information. With regards to collaboration, Mitch says the biggest win has been GraphQL and its graphical data explorer and React Native Expo. Mitch talks about how energizing and fun it is to be greenfielding a project and that they are currently testing with financial experts to create this app. Panelists Josh Justice Charles Max Wood Guest Mitch Masia Sponsors Infinite Red CacheFly Ruby Rogues iPhreaks Links Mitch Masia - GitHub Mitch Masia - Blog EEON Mitch Masia - Slides Expo React Native Typography React Native Snap Carousel React Native Popmotion Redis Pub/Sub RNR on Facebook RNR on Twitter Picks Josh Justice MobX Twitter Charles Max Wood St. George Marathon CES Mitch Masia Ant Design GraphQL Shield Can it be done in React Native? YouTube videos Raquetball

October 29, 2019
54:14
E
137
RNR 140: Best Practices with Zain Sajjad

In this episode of React Native Radio Josh Justice interviews Zain Sajjad. Zain leads the team of frontend developers at Peekaboo Guru. They use React on their web interfaces and React Native on their mobile interfaces. Zain and Josh discuss some of the work Zain is doing and overviews his recent blog post outlining best practices for React developers. Zain explains how smooth the transition was to React Native coming from React. They had a good knowledge of how React worked from their web applications which made learning React Native easy. Zain shares why they chose React Native, they wanted a quality frontend and a lot of code reusability across platforms. Josh and Zain consider some of the other benefits of using React and React Native, including maintaining the same mental model and libraries. Zain discusses their recent update and the Hermes engine. He explains how it makes apps more performant and with better execution. Josh and Zain discuss how they measure performance. Zain shares the tools they use at Peekaboo Guru and their goals in making the whole app more performant not just one aspect of the app. Navigation is the next topic they discuss. Zain explains how his team tried both React Native Navigation and React Navigation. He compares the tool, explaining why he would choose React Navigation for most applications. Zain shares the improvements that have been made to React Navigation in the past couple of years. They are currently using React Native Navigation which was better for their application at the time in order to maintain performance on low-end android phones. Zain explains how low-end android phones can affect performance and how they test for low-end phones. Josh and Zain move on to discuss Zain’s blog article outlining best practices for react developers. Josh considers how difficult it must have been to pinpoint best practices for React, with its unique approach to programming. Zain explains that these best practices are best for those unfamiliar with React but can benefit everyone. Josh shares some of his own advice for developers new to React. Mainly, don’t be discouraged by the lack of structure, learn patterns that work from more experienced developers and don’t be afraid to experiment. The first practice explained in the blog article is Container and Presentation components. Zain explains that this is one key factor in keeping applications simple and scalable. It stems from cognitive condense, by separating and containing things, developers can focus on one thing at a time. Zain explains the best way to do this. He and Josh consider the benefits of using this in React and React Native. Next, Zain explains some React Architecture best practices. He tells Josh its all about having good constraints available and being flexible as you build. Josh considers how this changes the way he builds his applications, being more fluid with his files based on the needs of the application. Another best practice discussed is called React Wrapper Component Minimized. While working with large scale React apps developers tend to use a lot of third-party libraries. The best practice Zain describes is to wrap the library in a component, this allows you to use the library but also to switch it out more easily in the future if you find a better library. You don’t have to do this with every library just the ones that are used everywhere in your app so you can easily switch it out. Josh explains the power of this practice. Uniformity Across React Components, this best practice makes components easier to read and adapt. Zain explains how implementing this best practice in his team saved the a lot of time. He and Josh consider how consistency could benefit a team of any size. Zain and Josh finish up by touching on the last few best practices. Testing React components, how linting your code can help you avoid problems that may occur once your code is executed. Portability of code and keeping it usable for other platforms. Making React testing less annoying and deploying React Apps using CI/CD tools, for which Zain and Josh share resources. Panelists Josh Justice Guest Zain Sajjad Sponsors Infinite Red Adventures in Angular Adventures in Blockchain CacheFly Links RRU 080: Navigating React Navigation with Zain Sajjad React Best Practices: Maintaining Large Scale Projects Comparing Mobile Machine Learning Frameworks https://peekaboo.guru/ Hermes Prepack Plop JS Firebase Performance React Native Navigation React Navigation React Navigation 5.0 Building resilient frontend architecture - Monica Lent The Universal Architecture React Native Testing Library Detox E2E testing CircleCI https://twitter.com/zsajjad93 https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Josh Justice: Thank you Meetup Organizers! Poké Bar

October 22, 2019
45:11
E
136
RNR 139: Upgrade Helper with Lucas Bento

In this week’s episode of React Native Radio Charles Max Wood interview Lucas Bento. Lucas has been working with React Native for around four years. He helped create and maintains Upgrade Helper. Upgrade Helper helps React Native developers when an automatic upgrade fails. In this episode, they talk about Upgrade Helper, React Native Doctor and open sourcing software. Upgrading React Native can be awful. Lucas explains how this process has become easier and now most problems happen with developers who are new to React Native. They are still working on ways to make upgrading more smooth. Charles shares his plans to build a mobile DevChat application with React Native. He asks Lucas for advice on how to update the template app he purchased in the past to help with this project. Lucas explains that it depends on what version the app is currently using. He recommends not skipping versions when updating, to run the upgrade command and check the app for errors. The panel discusses the common problems seen when upgrading versions. The most common problems comes from integration with libraries. When the app uses a react native library there are fewer problems with recent releases, as the library maintainers have time to make any changes before the release. Libraries from outside maintainers may lag as they have to play catch up after the release. Lucas explains how Upgrade Helper works. It is a web interface that shows tutorials, comments and other content that help developers upgrade their applications. They tell Upgrade Helper what version they are currently using and what version they would like to use. Upgrade helper shows the changelogs for the version jumps, major changes that were made between versions, along with a guide that walks you through the upgrades. Upgrade helper has a couple more things coming soon. Lucas is really excited about implementing a dark mode. They are also launching a discussion forum for people to discuss the different versions, sharing problems and solutions. Lucas explains how he got involved in this project. After seeing something similar in the angular project, Lucas, Pablo Discobar and Lorenzo Sciandra decided to build Upgrade Helper for React Native. Now they maintain it together. Lucas shares how much he enjoys working on this project and finding solutions to these messy upgrade problems. He shares his first experience running into these problems and explains that they do get easier the longer you deal with them. Charles asks how upgrading works with native dependencies. Lucas explains that currently when you run the upgrade command it does not check the native dependencies, it is very minimal and barebones. Developers can check the changelogs and make the necessary changes after. This is one reason that upgrading can be so difficult. The React Native Community does want to build a tool in the future that will automatically upgrade native dependencies. Lucas explains that they have a lot of exciting ideas for React Native but not enough time to work on them. Charles commiserates, explaining how time is a precious commodity when volunteers are running the show. Lucas and Charles discuss resources and recommendations for help upgrading. Lucas tells listeners to look out for Upgrade Support, the discussion forum. He explains that there are a lot of upgrading tutorials for React Native If there is anyone out there who likes creating posts on upgrading React Native Lucas invites them to reach out, he would gladly put them up on the forum. The panel talks briefly about React Native Doctor. React Native Doctor is an interactive CLI that checks apps for problems and then fixes them. Lucas explains what Doctor will check and how it works. If it can’t fix a problem on its own, it logs a message on the UI explaining how the engineer can fix the problem. Lucas explains how this will be very helpful when upgrading versions as well. The episode ends with a discussion on open source contributions. Lucas explains how developers can get involved in these projects and the React Native Community. He and Charles tell everyone not to be afraid to contribute, they are all volunteers. Open source is for everyone and a place where developers can learn new things. Lucas shares what he has learned since working in opensource. They discuss the spectrum of attitudes towards open source, either everything from “I open source everything” all the way to “I don’t open source at all”. They encourage everyone to honor the individual decisions of fellow developers and avoid shaming those they disagree with. Panelists Charles Max Wood Guest Lucas Bento Sponsors Infinite Red Views on Vue G2i CacheFly Links https://github.com/lucasbento https://twitter.com/lbentosilva https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Charles Max Wood: Memberpress https://www.membershipacademy.com?aff=cmaxw https://www.learndash.com Maxcoders.io Lucas Bento: Upgrade Helper React Native Doctor Avengers: Endgame

October 15, 2019
41:32
E
135
RNR 138: Startup Mindset with Calvin Yu

In this episode of React Native Radio, Josh Justice interviews Calvin Yu. Calvin is a consultant mostly working with Ruby on Rails but also works with React Native and mobile development. He has quite the history of working with startups, all varying in size. Calvin shares what it was like working with startup companies. Calvin explains what you have to change mentally to work in a startup. First, you have to realize that you don’t have all the answers and that it takes a commitment. He also explains that because you don’t have all the answers you will make a mistake, which means you need to be able to learn from it and move on. Josh and Calvin share their thought on using risky or bleeding edge technologies in a startup. Calvin explains that when developers are looking to join a start-up they want to work in something new, exciting and a little risky. They consider the risks and the benefits, how new technologies could give a startup a leg up on the competition. Josh brings up a blog post titled “Choose Boring Technology”, he summarizes explaining that startups should pick boring, old reliable technology for the parts of the app that don’t matter. The panel moves on to discuss React Native more specifically, Calvin explains why he chose React Native over another cross-platform mobile solution. React Native provides a great experience in the mobile platform, it allows him to give the users what they want. Josh and Calvin discuss what users want from their apps or a user's hierarchy of needs. First, the app needs to be useful, if an app isn’t useful who cares if it performs well. After making sure the app is useful, you can then go back and worry about performance and other secondary needs, Calvin shares the story of how he got into React Native. He was working on some React apps to render kiosk displays when he was approached to build an internal iOS app. The app did some internal functionality for a team of home repair contractors. At the time NativeiOS seemed like overkill for what they wanted. Not to mention they would want the same thing in Android. React Native seemed the obvious choice, so he just dove right in; learning trial by fire. Josh and Calvin consider how React Native has evolved over the years. Calvin shares some of the enduring pros and cons of the framework and explains when to reach for React Native and when to reach for something else. He makes most of his comparisons to Flutter. Flutter is great for game design and custom UI, but React Native is the ideal solution for cross-platform native applications. React Native is well-tuned for reusability. Calvin believes that the React Native ecosystem will grow because it is such an approachable language. Ruby on Rails is considered due to Josh and Calvin’s background in it. Josh considers Ruby on Rails and how it comes with everything you need right out the box but React Native is quite the opposite. This makes Josh wonder what is so appealing about React Native to Calvin. Calvin explains that he hopes that someday React Native will be ready out of the box and gives ideas of how it might get there. Calvin considers the future of software development. He believes that building applications will be pushed up in the stack. That building applications will a thing that anyone can do, just like anyone can use a spreadsheet. He thinks software development will get more approachable and easy tooling that will make building applications much simpler. He considers how comfortable his kids are with technology and touch screens and this will affect future software developers. Panelists Josh Justice Guest Calvin Yu Sponsors Adventures in DevOps React Round Up G2i CacheFly Links Choose Boring Technology blog post Hierarchy of User Needs GraphQL Airtable Coda The Core Team of the Internet (with Yehuda Katz) https://twitter.com/cyu https://github.com/cyu/ https://www.rylabs.io/ https://www.facebook.com/ReactNativeRadio/ https://twitter.com/R_N_Radio Picks Josh Justice: VuePress https://atom.io/ Visual Studio Code Calvin Yu: Visual Studio Code Live Share Apache Airflow

October 6, 2019
51:25
E
134

Obsessed with RNR?
So is the React Native community!

Photo of Gant Laborde and Mark Rickert hugging at a retreat.Photo of Todd Werth laughing during an online team game. Other members of the team are in the background.Photo of team members Jed Bartausky and Carlin Isaacson at a team dinner.Photo of Darin Wilson sitting at a table listening to a presentation

Ready to get started with us? Chat with our team over zoom

There’s no perfect time to get started. Whether you have a formal proposal or a few napkin sketches, we’re always happy to chat about your project at any stage of the process.

Schedule a call