Bringing the best back to native
Overview
The article discusses Airbnb's transition from React Native back to native mobile development, highlighting their ongoing projects and innovations. Key topics include server-driven rendering, the Epoxy framework, and a new Android product framework called MvRx, which aims to enhance developer experience and application performance.
What You'll Learn
1
How to implement server-driven rendering in mobile applications
2
Why using Epoxy can improve component management in mobile development
3
How to leverage MvRx for building seamless Android screens
4
How to enhance iteration speed in mobile development
Prerequisites & Requirements
- Understanding of mobile development frameworks and design patterns
- Familiarity with Android Studio and Kotlin(optional)
Key Questions Answered
What are the benefits of server-driven rendering in mobile apps?
Server-driven rendering allows developers to send data to devices that describe components and screen configurations. This approach enables instant updates and experimentation over-the-air, improving the flexibility and responsiveness of mobile applications.
How does Epoxy improve mobile UI development?
Epoxy simplifies the creation of heterogeneous RecyclerViews, UICollectionViews, and UITableViews by allowing developers to break screens into isolated components. This leads to better management of UI elements and supports lazy rendering, enhancing performance and maintainability.
What is MvRx and how does it enhance Android development?
MvRx is a new framework developed by Airbnb that combines principles from Epoxy, Jetpack, and React to streamline screen building in Android. It is designed to be thread-safe, reducing lifecycle management complexity and improving the fluidity of scrolling and animations.
What improvements were made to iteration speed in mobile development?
Airbnb implemented infrastructure changes that allow for partial app compilation, significantly reducing build times. Development builds are now 2.5 times faster on average, with a notable decrease in builds taking longer than five minutes.
Key Statistics & Figures
Build speed improvement
2.5 times faster on average
This improvement was achieved by enabling partial compilation of the app.
Reduction in builds taking longer than five minutes
15 times
This was accomplished through the implementation of new gradle product flavors.
Technologies & Tools
Some links below are affiliate links. We may earn a commission if you make a purchase.
Frontend
Epoxy
Used for creating heterogeneous RecyclerViews and managing UI components efficiently.
Backend
Mvrx
A framework for building Android screens that simplifies lifecycle management and enhances performance.
Programming Language
Kotlin
Used for implementing DSLs in Epoxy and MvRx frameworks.
Frontend
React Native
Previously used at Airbnb for mobile development before transitioning back to native.
Key Actionable Insights
1Implement server-driven rendering to enhance your mobile app's flexibility and update capabilities.This approach allows for real-time updates and experimentation, making it easier to adapt to user feedback and changing requirements.
2Utilize Epoxy to manage complex UI components efficiently in your mobile applications.By breaking down screens into isolated components, you can improve performance and maintainability, especially in large applications.
3Adopt MvRx for a smoother development experience in Android applications.This framework simplifies lifecycle management and enhances performance, making it easier to build responsive and fluid user interfaces.
4Focus on optimizing iteration speed by implementing partial compilation in your development workflow.This can significantly reduce build times, allowing developers to test changes more quickly and improve overall productivity.
Common Pitfalls
1
Relying solely on outdated articles or experiences when making technology decisions can lead to poor choices.
The article emphasizes the importance of revalidating technical points due to the rapid evolution of frameworks and ecosystems.
Related Concepts
Mobile Development Frameworks
Server-driven Rendering
Component-based UI Design
Performance Optimization Techniques