React Native Blog Jan 27, 2023

React Native 0.71 RC1 Android Outage Postmortem

Article Summary

A single character in a Gradle config file took down Android builds for every React Native version simultaneously. Here's how the React Native team handled a 4-day global outage.

The React Native team published a detailed postmortem of the November 2022 incident where releasing version 0.71 RC0 broke Android builds across all versions. The culprit? A dynamic version operator (+) in build.gradle that caused projects to pull incompatible artifacts from Maven Central.

Key Takeaways

Critical Insight

A Gradle antipattern that existed since React Native 0.12.0 finally caused a global outage, prompting major improvements to release infrastructure and incident response.

The timeline reveals why it took 48 hours to shift from community workarounds to active mitigation, and what that means for open source incident response.

About This Article

Problem

React Native's template used Gradle dynamic versioning with the + symbol, which meant older projects like 0.68.0 automatically pulled incompatible 0.71.0-rc.0 artifacts from Maven Central. This broke builds across all versions at once.

Solution

The React Native team worked with Sonatype to delete the problematic artifacts and released patches back through version 0.63. They also built automated fixes instead of waiting for the community to discover workarounds.

Impact

The fix took 4 days and required patching 9 previous versions to reach 90% of developers. It led to new release support policies, better testing infrastructure, and stronger relationships with library maintainers like Callstack.