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

Changing React Native from Within

Adam Foxman
September 01, 2022

Changing React Native from Within

Changing React Native... from within!

React Native has been used across Microsoft a lot, over the last few years. Only recently, though, we have realized how its developer experience and its community are in a precarious situation. We decided, then, to approach the problem in the most impactful way possible: by going straight to the source!

Join us in this talk to hear what we are doing to make life better for everyone in the community, from open sourcing new tools, to creating new cross-company groups and even in collaborating directly with Meta in the core codebase (and not just there!).

As a smart man once said: “a rising tide lifts all boats” - and we, we want to be the moon!

Adam Foxman

September 01, 2022
Tweet

Other Decks in Technology

Transcript

  1. Hi ! — Adam Foxman — Principal Engineer @Microsoft —

    25 years in software — 5 years with React Native — DevRel enthusiast @afoxman4 2
  2. Microsoft ❤ React Native — Years of investment — Windows

    and MacOS platforms — Apps and experiences — Mobile and desktop @afoxman4 3
  3. Dev experience doesn't scale — Dependency alignment, compatibility — Bundling

    performance, missing features — TypeScript is not part of core experience — Engineering velocity is too slow Photo by Graphic Node on Unsplash @afoxman4 4
  4. Changing the status quo — Make a substantial contribution —

    Partnerships, community engagement — Core contributions ⚛ Photo by Christophe Hautier on Unsplash @afoxman4 6
  5. Changing the status quo — Modern, scalable tools — Exceptional

    developer experience — Goodness for everyone is key Photo by Christophe Hautier on Unsplash @afoxman4 7
  6. Apps and experiences — Adding React Native to an existing

    app — The guide is complicated, one size fits all — Doesn't teach, easy to go off course Photo by Rafif Prawira on Unsplash @afoxman4 10
  7. Staying up-to-date, at scale — Monorepos with 5,000+ dependencies —

    Upgrades are labor-intensive — Compatibility mistakes become runtime errors Photo by Cederic Vandenberghe on Unsplash @afoxman4 11
  8. Inner-loop experience, at scale — Node tools are slow vs.

    native, especially bundlers Photo by Rémi Jacquaint on Unsplash @afoxman4 12
  9. Inner-loop experience, at scale — Node tools are slow vs.

    native, especially bundlers — Haste (crawl) doesn't scale Photo by Rémi Jacquaint on Unsplash @afoxman4 14
  10. Inner-loop experience, at scale — Node tools are slow vs.

    native, especially bundlers — Haste (crawl) doesn't scale — Metro is missing features Photo by Rémi Jacquaint on Unsplash @afoxman4 15
  11. Inner-loop experience, at scale — Node tools are slow vs.

    native, especially bundlers — Haste (crawl) doesn't scale — Metro is missing features — TypeScript is absent from React Native workflows, yet is essential for large projects Photo by Rémi Jacquaint on Unsplash @afoxman4 18
  12. What does success look like? — Upgrades are safe, easy,

    and trustworthy — Bundlers are fast and extensible — TypeScript is a first-class citizen — More PRs create a virtuous cycle Photo by Norbert Braun on Unsplash @afoxman4 19
  13. Focused on developer experience By developers. For developers. Community first.

    All are welcome. Tested at scale. Supported by Microsoft. @afoxman4 22
  14. Dependencies — dep-check — Align to React Native, and across

    repos — Compatibility included, extensible — V2 RFC, beyond React Native @afoxman4 24
  15. Bundling with Metro — Symlinks for pnpm, npm*, yarn link

    Photo by Daniel Lloyd on Unsplash @afoxman4 25
  16. Bundling with Metro — Symlinks for pnpm, npm*, yarn link

    — TypeScript validation Photo by Daniel Lloyd on Unsplash @afoxman4 26
  17. Bundling with Metro — Symlinks for pnpm, npm*, yarn link

    — TypeScript validation — Tree shaking with esbuild Photo by Daniel Lloyd on Unsplash @afoxman4 28
  18. Bundling with Metro — Symlinks for pnpm, npm*, yarn link

    — TypeScript validation — Tree shaking with esbuild — Plugins: duplicates, cycles Photo by Daniel Lloyd on Unsplash @afoxman4 29
  19. Command-line interface — Extends React Native CLI — Task-oriented, scriptable

    commands Photo by Cookie the Pom on Unsplash @afoxman4 33
  20. Command-line interface — Extends React Native CLI — Task-oriented, scriptable

    commands — Configurable defaults Photo by Cookie the Pom on Unsplash @afoxman4 34
  21. Command-line interface — Extends React Native CLI — Task-oriented, scriptable

    commands — Configurable defaults — Bundling: drop-in replacement Photo by Cookie the Pom on Unsplash @afoxman4 35
  22. Straight to the source — Collaboration is key — Industry

    partnerships — Bundle Working Group — Meta: platforms, UX, and developer experience Photo by Camylla Battani on Unsplash @afoxman4 37
  23. What did you learn today? — Microsoft ❤ React Native

    — Challenges require change — Toward an exceptional developer experience — rnx-kit tools solve problems — Collaboration is key Photo by No Revisions on Unsplash @afoxman4 39
  24. Join us! — Try the tools — Share ideas, feedback,

    code — Engage in the community — Find me - let's talk! Photo by Randy Fath on Unsplash @afoxman4 40
  25. Thank you ! Adam Foxman @afoxman4 DMs are open I

    can't wait to meet you! https://speakerdeck.com/afoxman/changing-react-native-from-within 43