Q&A Sessions From React Native EU 2020

Authors
Krzysztof Wróblewski
Marketer
@
Callstack

During the React Native EU 2020 conference, we had the great pleasure to host 24 talks with speakers from all around the world representing such companies as Facebook,  Microsoft, Infinite Red, Wix.com, and many more.

In this article, we gathered questions related to React Native itself and the talks presented during the conference.

First of all, let's go through some questions from the latest episode of our The React Native Show podcast. During this talk, our host, Mike Grabowski, and his guests:

  • Monica Restrepo – Software Engineer at Major League Soccer
  • Kudo Chien – Software Engineer at CloudMosa
  • Eloy Duran – Principal Software Engineer at Microsoft
  • Ram N – an Engineering Manager at Oculus

are discussing such topics as:

  • The new architecture of React Native
  • The multiplatform aspect of the framework
  • General development of React Native.

New Architecture

Last year, the React Native team announced changes to the core of the framework including:

  • TurboModules - a new implementation of native modules for better performance and synchronous access,
  • CodeGen - to ease the creation of native modules by synchronizing the type definitions and method declarations between native and JavaScript,
  • JSI: JavaScript Interface - a unified lightweight general-purpose API for (theoretically) any JavaScript virtual machine. It enables every other piece of the re-architecture and is what makes Hermes integration possible,
  • Fabric - just the UI layer re-architecture, to take full advantage of concurrent React architecture

Now, let's move on to the questions.

What is the status of the re-architecture? What changes are already shipped and when do we expect to have an update on the rest of them?

Ram: This is the question that people have been asking a lot of times. I can clearly see how people can't wait to get their hands on the new architecture but I wanna be careful while talking about it. So, there is no "release" for the new architecture in the sense, that there won't be one single date where things stop and suddenly React Native switches into the new architecture.

The initial plan was to try to get it out in 2020 but unfortunately, the productivity of a lot of people went down, and, as a result, we may not be able to hit 2020. We are looking at 2021 as a time that the new architecture could get out but I don't have a specific date in mind.

Multiplatform

Since it's beginning, React Native was all about cross-platform and although it shipped only with iOS and Android, we knew that other platforms were just a matter of time.

In this year there were a lot of great contributions from our partners (for example Microsoft) on such platforms as Windows or macOS. Having in mind the popularity of this subject, we couldn't omit the question about sharing code between mobile, web, and desktop.  

With new platforms being released and becoming production-ready, what opportunities do you envision when it comes to sharing code between mobile & web (traditional React & React Native targets) and desktop environments? Do these have a lot in common?

Eloy: I think that clearly any code that is not necessarily UI-related or particularly dependent on the OS will be easily shared as plain javascript so that is already "win". I can imagine that if I took, as an example, the RT app  porting into desktop means that all the data layer would just work. When it comes to UI, large pieces of UI would work. I think that if people are familiar with catalyst, it would be somewhat similar to that. You are able to leverage most of the UI but obviously, there are some paradigms that you only have on desktop and then some extra APIs.

However, I think it's always good to reiterate with React Native. It is not about writing once and deploying everywhere but about learning once and writing everywhere. This is similar in the case that you will have to put in some care to make an application on the desktop which I think is what the users deserve.

General Development

As the performance is always a hot topic, we received a lot of questions related to the best practices and interesting challenges we're all facing in our daily duties. Here are some of them.

What was the biggest (and latest) performance challenge that you have faced at your job and how did you solve it? What were the takeaways from the solution?

Monica: There are actually multiple performance gaps and challenges that we are faced with all the time. I guess the most challenging that we have had in recent times has been the massive upgrade of our app. We were trying to migrate to Android dex. It sounds like to be something way behind because we have a lot of libraries that we depend on, and like so much of like native code, we were just recently doing it. After that, the upgrading of some of our major libraries like React Navigation for instance made the process of migrating overall very challenging. Especially, because we had some libraries that were already considered "legacy code" and had changed everything internally.

This particularly forced us to think about ways to solve issues like total incompatibility with the new API. As a result, the whole process led us to have great increases in performance. It was definitely something that every person who is developing in React Native always has to face. I think it was important to bring it up here because we also face it at MLS. Having a bunch of interviews working on and just being an app that we have developed for a long time already.

It was only a few answers from our podcast with the React Native EU 2020 Q&A session. If you'd like to listen to the full version, you can find it here:

Now, let's move to your questions related to the talks. We will go through Q&A with:

  • Pavlos Vinieratos from Artsy
  • Sanket Sahu from GeekyAnts Software
  • Gant Laborde from Infinite Red
  • Alexander Kuttig from Horizon Alpha
  • and Fabrizio Bertoglio.

Pavlos Vinieratos - Xcode complexity? No more

In this talk, Pavlos explains how to deal with problems with Xcode.

Does XcodeGen handle multiple targets & entitlements?

Yes! Both multiple targets and entitlements can be handled with XcodeGen.
Here are some links to the docs:
Targets
Entitlements
Examples

XcodeGen docs mention other alternatives such as Tuist, Xcake, or struct. Have you tried using them? Also, how easy do you think it is to integrate it into an existing project?

I have tried a lot of alternatives listed there and others not listed, and I found the combination of XcodeGen + xUnique to be the most consistent. I hope at some point in the future to be able to remove xUnique and have XcodeGen take its part, by generating a project in a consistent re-creatable idempotent way.

It’s easier than expected. My repo takes care of the initial generation of the YAML file, but you can still do it yourself by looking at the XcodeGen docs and examples, and only grabbing the makefile from my repo, or even look at the YAML files in my repo as examples/inspiration.

When I have an XCode project with a lot of changes, I would have to create this YAML file by hand for the first time. Right?

Creating it yourself from scratch can be a bit more hassle, but it can be rewarding, and definitely not as hard as it might sound. I would say that first of all, try to use my YAML files from here and build on them. It will give you a good base to build on. I would try taking that YAML file, try to build the app, then add things on the YAML file as I need, to make the app run, to add the other targets, etc.

If you want to completely create your own, definitely take a look at my YAML files for inspiration as well as the examples in https://github.com/yonaskolb/XcodeGen/blob/master/Docs/Examples.md, and definitely read the docs, or at least look at them as you go.

Start from the Spec and go from there.

Sanket Sahu - Building Real-Time Multi-User Apps with JSON Patches.

In his presentation, Sanket describes how to use JSON patches with React/React Native to build a framework for real-time multi-user apps.

I'm playing catchup with the stream. What are the deciding factors to take into account when having to decide between your manual sync solution and out of the box services available such as Firebase Storage or Realm?

SyncState is a state-management solution for the entire app, much like Redux and MobX. SyncState can be extended to sync the state with a DB on a remote server while using the same API.

Out of the box services like Firebase Storage or Realm solve similar problems but we can’t use them for local state management and moreover, choosing between SyncState and those services is like choosing between custom solutions and managed services.

Is it a good idea to try SyncState while creating a personal note-taking app?

I think using SyncState to build a personal notetaking app is a perfect use-case because at some point we would like to take the state to the cloud and sync to other devices. We use SyncState for general-purpose state-management as well.

Gant Laborde - Who said it?

Gant decided to look at his professional development from a wider perspective. In this talk, he shares his thoughts about learning new skills and the importance of staying updated with what's going on in React Native community and pushing yourself outside the comfort zone.

Have you worked with Hasura? If so, how does it compare to AWS?

I have not - I’m definitely eager to compare the two.

Is there a free tier for hobby projects where you get all these cool AWS features?

Yes!  I highly recommend you start from this Amazon tier.

Did you or your team at IR put together those comic assets? Or was it from a third-party?

Normally I depend on my Infinite Red team for graphics, but due to the speed at which I wrote this, I purchased these assets, so as not to burden them with my conference hurry!

Alexander Kuttig - The power of process automation brought to React Native development.

In his talk, Alexander explains how to ensure quality through automated PR checks and automated E2E tests on real devices as well as how to save time by automating all steps, for which no human is required.

‍

Have you managed to get BitRise workflow editor working offline?

We didn’t try to, so no :)

Also, do you tag your releases in BitRise? (Tags not supported in App Center)

We are working with tags in our repository, so no, we do not tag our releases in Bitrise.

Isn't taking the screenshots for all those locales and devices a huge task for marketing?

Yes, it is. But we don’t have to change them for every release.

Do you automate uploading your screenshots and videos from Detox to App Store Connect and Google Play Console? (Trick question, because I don't think it's possible yet)

No, we are not doing that at the moment.

Great talk! Thank you for sharing.  How does your team handle regression testing? Or is that covered in your E2E testing with Appium/AWS Device farm?  It is such a huge pain point for my team.

It is handled with our e2e tests.

Why not using Appium for iOS as well?

Detox, from my point of view, is much more developer-friendly and has a much larger community - especially when integrating with RN Apps. So for testing iOS Apps or Android Apps on the simulator, I would go with Detox.

Is Detox that much better than Appium?

We didn’t use it for iOS for the moment, because we didn’t need it, since nearly all our device-specific bugs were occurring on Android. But we will use Appium for iOS in the future as well.

Fabrizio Bertoglio - Contributing to React Native is easy

In this presentation, Fabrizio dives into details of contributing to React Native going through the following steps:

  • Contributing to React Native
  • Setting up the development environment
  • Understanding React Native project structure
  • Finding an issue to solve
  • Publishing pull request contributing to react-native-camera.

Summary

We hope that you found these Q&A's interesting and somehow they'll make your daily work with react Native easier. Once again, we'd like to thank everybody who took a part in React Native EU 2020 and we hope to see you again next year! In the meantime, you can check out the services offered by our React Native development company.

Note: If you'd like to watch more talks from React Native EU 2020, you can find the whole playlist here:

‍

Insights

Learn more about Community

cover

Oct 9Live Stream

React Native Conf 2025: React Foundation, Compiler 1.0 & Future of React Native

React Native Conf 2025 brought huge announcements: React Foundation under Linux Foundation, React Compiler 1.0 and Hermes v1. What’s next for React Native and newest React Features.

cover

Sep 25Live Stream

Live Dev Session: <Activity>, Expo SDK 54, Router v6, Lynx 3.4, TanStack Start

A packed week in the React ecosystem: React experiments with a new <Activity> component, Expo SDK 54 speeds up builds, Expo Router v6 adds native-like navigation, Lynx 3.4 ships inputs & dev tools, TanStack Start hits RC, and React Router previews Framework Mode.

cover

Sep 18Podcast

Core Contributor Summit 2025 Highlights

Core contributors from across the React Native ecosystem discuss stability, tooling, and the path to 1.0, from Flow to TypeScript, desktop apps, and how community fills the gaps left by Meta.

cover

Sep 11Live Stream

Live Dev Session: React Universe Conf, RN 1.0, Expo Updates & More

In Week 37 of our Live Dev Session we talked about React Universe Conf with guest Szymon, ranted about AI, explored what React Native 1.0 really means, reviewed Expo updates, and covered the latest moves in the React Native ecosystem.

cover

Sep 5Podcast

Crossing Paths of React And React Native Ecosystems

React and React Native: are the two ecosystems pulling together or apart? Let's discuss their evolution, similarities, differences, and community dynamics.

cover

Aug 20Podcast

We're Changing Into React Universe On Air

Here comes a new chapter for The React Native Show: we're becoming React Universe On Air!

cover

Jun 10Article

Apple Vision Pro: Insights From Conferences and Beyond

Explore key insights from introducing Apple Vision Pro at tech events. Discover its intuitive interface, immersive experiences, and the challenges faced.

cover

Mar 15Article

How to Make Your Open Source Project Repository Contributor Friendly

Check out 5 tips on making the repository of your Open Source project more contributor friendly for both new maintainers & users.

cover

Mar 1Article

React Native EU 2023 and a Glimpse Into Conference History

React Native EU is back for an on-site 2023 edition! Find out why it's worth attending our React Native conference and how it's evolved since 2017.

cover

Mar 30Article

Supporting Ukraine Through the "Tech to The Rescue" Project: UA SOS App

Learn about Callstack's commitment to the Tech To The Rescue project supporting Ukraine: UA SOS app.

cover

Mar 8Article

Women Who Make Waves in the React Native Community

On International Women’s Day we spoke to women who make waves as React and React Native developers. Check what they said about their tech careers.

cover

Nov 5Article

Events We Hold for You - Culture Powered by Callstack

When working at Callstack, you can join our unique initiatives. Find out more about our conferences, meetups, hackathons & discussion panels. Join our team!

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.