Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The day I broke React Native

The day I broke Reactย Native

4th November 2022 - It was just a regular day for the "release crew" as we were approaching to prepare the first release candidate for React Native 0.71. Little did we know how an innocuous release could have triggered a domino effect resulting in failing builds for nearly every React Native developer out there.

With the wisdom of hindsight, we'll walk through what happened, what are our lessons learned and the lowlights of this incident. We'll have the opportunity to look through the internals of React Native, discover our incident-response culture, and learn how we're hardening our ecosystem to protect us against similar events in the future.

Join me as we revive this incident, and don't miss this opportunity to gain insights, be inspired, and embrace the lessons learned from the day I broke React Native.

Nicola Corti

November 26, 2023
Tweet

More Decks by Nicola Corti

Other Decks in Programming

Transcript

  1. W

  2. $ tree node_modules/react-native/android node_modules/react-native/android โ””โ”€โ”€ com โ””โ”€โ”€ facebook โ””โ”€โ”€ react

    โ””โ”€โ”€ react-native โ”œโ”€โ”€ 0.68.7 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module โ”‚ โ””โ”€โ”€ react-native-0.68.7.pom โ””โ”€โ”€ maven-metadata.xml W hy
  3. $ tree node_modules/react-native/android node_modules/react-native/android โ””โ”€โ”€ com โ””โ”€โ”€ facebook โ””โ”€โ”€ react

    โ””โ”€โ”€ react-native โ”œโ”€โ”€ 0.68.7 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.sha256 โ”‚ โ””โ”€โ”€ react-native-0.68.7.pom.sha512 โ”œโ”€โ”€ maven-metadata.xml โ”œโ”€โ”€ maven-metadata.xml.md5 โ”œโ”€โ”€ maven-metadata.xml.sha1 โ”œโ”€โ”€ maven-metadata.xml.sha256 โ””โ”€โ”€ maven-metadata.xml.sha512 W hy
  4. $ tree node_modules/react-native/android node_modules/react-native/android โ””โ”€โ”€ com โ””โ”€โ”€ facebook โ””โ”€โ”€ react

    โ””โ”€โ”€ react-native โ”œโ”€โ”€ 0.68.7 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7-sources.jar.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.aar.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha256 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.module.sha512 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.md5 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.sha1 โ”‚ โ”œโ”€โ”€ react-native-0.68.7.pom.sha256 โ”‚ โ””โ”€โ”€ react-native-0.68.7.pom.sha512 โ”œโ”€โ”€ maven-metadata.xml โ”œโ”€โ”€ maven-metadata.xml.md5 โ”œโ”€โ”€ maven-metadata.xml.sha1 โ”œโ”€โ”€ maven-metadata.xml.sha256 โ””โ”€โ”€ maven-metadata.xml.sha512 W hy
  5. // android/app/build.gradle dependencies { // noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:0.68.7" }

    // node_modules/react-native-reanimated/android/build.gradle dependencies { // noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" } H ow
  6. Incident Response Time SEV 0 SEV 1 SEV 2 SEV

    3 SEV 4 Lessons Company-level crisis Red alert! All Hands on Deck! Major problem, resolution is very high priority. Significant problem, resolution is moderate or high priority. "A heads up"