about

Practical knowledge & top experts at your fingertips

We know nothing beats learning from experience, so this year, we’re hosting two workshops for React Native developers at all levels of advancement. Held by Callstack’s experts, the workshops are designed as a practical way to take your cross-platform skills to the next level and as a complementary experience that allows you to make the most of React Native EU 2023. 

The workshops take place on September 6. As each training lasts 8 hours, you can choose to participate in one workshop only, so make sure you pick the one that suits your needs the most. Please note that workshop tickets are sold separately from the conference tickets. Don't miss out on this opportunity to learn from the best in the business and take your React Native skills to the next level!
Travel guide
icon arrow
Categories: React Native
Level: Advanced
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - Concordia Design
Trainers:
Adam Trzciński
Wiktor Szlegier
More
icon arrow
Categories: React Native
Level: Entry
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - TBA
More
icon arrow
Categories: React Native
Level: Advanced
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - Concordia Design
Trainers:
Thiago Brezinski
Bartłomiej Tomczyk
More
icon arrow
about

React Native performance

The following course is designed for developers who have production experience with React Native. The scope dives deep into the native side of the framework. It’s a very low level in terms of React Native development. The course tackles a lot of iOS and Android application development topics. It’s perfect for gaining a comprehensive overview of mobile app creation and lets you look at React Native differently.
Categories: React Native
Level: Advanced
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - Concordia Design
Trainers:
Adam Trzciński
Wiktor Szlegier
AGENDA

During this workshop, we’ll cover the following topics:

DMAIC methodology

arrow-down

DMAIC (Define, Measure, Analyze, Improve, and Control) is a methodology for a structured approach to performance optimization efforts. It helps the project team to identify the key bottlenecks and their reasons and focus their efforts on improving performance in high-value areas.

React performance techniques

arrow-down

Optimizing React code is crucial for well-made React Native apps. At the beginning of this training, we’ll explain the life cycles of React and the best ways to consume them to achieve performance boosts. After that, we’ll show some patterns and antipatterns used in daily React development, which significantly affect performance.

JavaScript and React debugging and profiling

arrow-down

Writing JavaScript code is a major part of React Native development. As with any other language, sometimes it’s easy to introduce a shiny line of code that could kill performance. In this section, we’ll introduce tools to help participants diagnose their code and eliminate bottlenecks.

Understanding the communication between JS & Native

arrow-down

Understanding the communication between JS and Native is crucial for optimizing React Native performance. We want to make every participant aware of how it works, what it means to block a bridge, and how we count FPS. Differences between new and old RN architecture. Additionally, we will compare an initialized React Native app with native apps, including a demonstration of native tools that work well with React Native.

Diving deep into profiling in Native IDEs (Xcode, Android Studio)

arrow-down

Apps written in React Native are fully native apps. It means that the tools used by native developers could be helpful for React Native developers. We would like to focus on things like UI Inspectors in Xcode and Android Studio, Xcode’s Instruments, and Android Profiler.

Native debugging techniques

arrow-down

Sometimes debugging the dev build in Chrome or generally debugging JavaScript is not enough. We want all participants to be aware of the native debugging techniques, which include reading the logcat and xcode console, reading the device’s console, placing breakpoints in native code, and inspecting the UI.

Typical performance issues

arrow-down

In our experience, we found that RN performance is affected by a set of common performance issues. This module will present these issues, as well as ways to properly diagnose and resolve them.

Restructuring components and Memoization

arrow-down

A large set of performance issues occurring in RN apps is the result of excessive re-rendering of complex element trees. This process can be greatly optimized by properly restructuring your components and applying various memoization techniques. We will also showcase typical issues that happen when applying memoization and how to address them.

sold out
about

Working with native modules

This workshop aims to show participants how to write native modules that work well with React Native. We’ll show how to write such a module using Swift and Kotlin. Participants will learn how to bridge not only the APIs but also the native views that are ready to be used in JavaScript. This module will showcase both old and new React Native architectures.
Categories: React Native
Level: Entry
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - TBA
AGENDA

During this workshop, we’ll cover the following topics:

Introduction to native modules

arrow-down

In the beginning, we’ll explain the concept of a native module. We’ll answer the question of how it is possible to run native code from JavaScript. Also, we’ll show that we can bridge the native view components and combine them with React Native easily.

How JavaScript and native talk to each other

arrow-down

When we mix native and React Native components, we eventually find the need to communicate between these two worlds. In this section, we’ll explain the concept of the bridge, show how it can affect app performance, and what kind of data can be passed through it back and forth. We will also present modern approaches to JS/native communication: JSI, and Turbo Modules.

Why Swift and Kotlin?

arrow-down

The native code in React Native is mostly written in Objective C and Java. These languages have been available on the market for a very long time, but as time passes, industry standards change. It’s fine to use new languages for each platform – our goal is to present you with all the pros and cons.

Creating a native module in Swift

arrow-down

It’s time to get our hands dirty and write some code. We’ll create our first native module with Swift. Participants will learn how to invoke native functions from JS, export constants, and send events from native to JS. In this unit, developers will learn how to create backward-compatible Turbo Modules that work with new and old RN architecture.

Creating a native module in Kotlin

arrow-down

After we finish the iOS part, we'll do the same with the Android platform. In the end, we should have a universal module with a unified JavaScript API.

Exporting a native iOS view to JavaScript

arrow-down

Bridging native APIs is sometimes not enough. Often in real life, you would like to consume some SDK and embed a predefined view in your JavaScript layout. We’ll show participants how to tackle these kinds of tasks. In this module, we will showcase both classing ViewManagers, as well as modern Fabric renderer.

Exporting a native Android view to JavaScript

arrow-down

Similarly as with the module, we’ll copy what we did on iOS with Android. At the end, we’ll have a cross-platform component, ready to be used in JavaScript. In this module, we will showcase both classing ViewManagers and modern Fabric renderer.

Combining the RN and native screens

arrow-down

In this section, we’ll show how to push a React Native screen to a native navigation stack. We’ll create a simple native layout and push the React Native view to the stack. We’ll also show how to pre-initialize the bridge to match the native navigation user experience.

save your spot
about

Testing

Let’s say you have a perfect bug-free app you’re very proud of. Does it change over time? How many developers work within the same codebase? How familiar are they with this code? How do you ensure your code is still perfect? The answer is automated testing, and this workshop is all about it. Let’s take a deep dive into this fascinating world to boost participants' confidence from shipping to production.
Categories: React, React Native
Level: Advanced
Duration: 8h
Max Participants: 15
Date: Sept 6, 2023
Venue: Wrocław, Poland - Concordia Design
Trainers:
Thiago Brezinski
Bartłomiej Tomczyk
AGENDA

During this workshop, we’ll cover the following topics:

Different types of tests (and the testing pyramid/trophy)

arrow-down

We’ll start by explaining common testing terminology and introducing the testing pyramid and testing trophy as a depiction of the importance of certain types of testing and time-to-value ratio.

Static analysis

arrow-down

We’ll talk about TypeScript, Flow, ESLint, and show how certain types of tests can be replaced with these tools to give developers real-time feedback that’s faster than most of the tests.

Intro to Jest

arrow-down

The next step is presenting Jest as a platform, showing what’s powerful about the library, and what’s baked in, and explaining how it can be configured and extended to your needs.

Unit testing

arrow-down

Write unit tests for our app using Jest. Taking a solid ride through the app functionalities, and identifying places where we want to add tests using code coverage.

Integration testing

arrow-down

Write integration tests for our app to test connections between our units/components for the functionality we’ve just covered in the previous topic.

End-to-end testing

arrow-down

Introduce Maestro (React Native) / Cypress.io (web) to test in simulators, emulators, and on real devices. Guide participants through the setup, identify core functionalities, and cover them with e2e tests.

Snapshot testing

arrow-down

Explain the ideas behind snapshot testing, when to use it, and common pitfalls. Show how it serializes structured data to a string and how we can write our custom serializers

sold out
newsletter

Subscribe to our newsletter for the latest React Native EU news

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Twitter RNEUYoutube RNEU