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

React Native at Skyscanner: The Good Parts

React Native at Skyscanner: The Good Parts

(Presented at React Edinburgh Meetup: May 23, 2019)

This talk takes a look at what our React Native setup at Skyscanner looks like and how we maintain and scale it from an infrastructure point of view. Here’s a general outline of what I intend to cover:

-Current State of React Native in Skyscanner
-Stages where infrastructure team is involved:
-Development: Details about our in house scaffolding tool, design system and navigation solutions
-Review: A brief run through of what happens in different CI Stages and some interesting tooling decisions
-Release: A deep dive into how we measure different aspects of our application in production including react native performance metrics and code size metrics

Original Keynote presentation link: http://bit.ly/react-edi

Karan Thakkar

May 23, 2019
Tweet

More Decks by Karan Thakkar

Other Decks in Technology

Transcript

  1. Current State ! " ✅ 6 feature teams 2 platform

    teams 50 developers 20 PR’s merged every week
  2. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: (Use arrow keys) › Create a new feature Update an existing feature
  3. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: (Use arrow keys) › Create a new feature Update an existing feature
  4. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ReactEdinburgh Create a new feature
  5. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ReactEdinburgh Create a new feature
  6. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ReactEdinburgh ? What is the name of the new screen you want to create? MayMeetup Create a new feature
  7. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh y Create a new feature
  8. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? (Y/n) y Create a new feature
  9. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? (Y/n) n Create a new feature
  10. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? No ? Will the new screen use redux? (Y/n) y Create a new feature
  11. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? ? Will the new screen use redux? (Y/n) y Create a new feature No
  12. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? (Y/n) No
  13. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? (Y/n) y No
  14. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? Yes ? What is the name of the new component you want to create? No
  15. Development Review Re Scaffolding npm run cookiecutter > [email protected] cookiecutter

    /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? Yes ? What is the name of the new component you want to create? Header No ➜ react-native git:(develop)
  16. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new feature you want to create? ? What is the name of the new screen you want to create? MayMeetup ReactEdinburgh ? Will the new screen be deep link-able? No ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? Yes ? What is the name of the new component you want to create? Header
  17. ➜ react-native git:(develop) Development Review Re Scaffolding npm run cookiecutter

    > [email protected] cookiecutter /Users/karanthakkar/Work/Repos/Skyscanner/skyscanner-app/react-native > node cookiecutter ? Choose what you want to do: ? What is the name of the new screen you want to create? MayMeetup ? Will the new screen be deep link-able? Yes ? Will the new screen use redux? Yes Create a new feature ? Do you want to create a new component? Yes ? What is the name of the new component you want to create? Header
  18. Development Review Re Design System Hyatt Place Bangkok Sukhumvit £626.00

    5 nights 8.1 https://backpack.github.io/ Backpack
  19. Development Review Re Design System Hyatt Place Bangkok Sukhumvit £626.00

    5 nights 8.1 https://backpack.github.io/ Backpack
  20. Development Review Re Navigation navigator.push('SCREEN_1', { data: 'test' }, {

    navigationMode: }); 'IN_PAGE''MODAL_RIGHT_TO_LEFT'
  21. Development Review Re Navigation navigator.push('SCREEN_1', { data: 'test' }, {

    navigationMode: }); 'MODAL_RIGHT_TO_LEFT' 'IN_PAGE' 'MODAL_BOTTOM_TO_TOP'
  22. Development Review Re Navigation navigator.push('SCREEN_1', { data: 'test' }, {

    navigationMode: }); 'MODAL_BOTTOM_TO_TOP' 'MODAL_RIGHT_TO_LEFT'
  23. pment Review Release , Size Javascript Bundle 0 3 6

    9 12 4/15 4/16 4/17 4/18 4/19 4/20 4/21 4/22 4/23 4/24 4/25
  24. pment Review Release , Size Native Code 0 5.5 11

    16.5 22 4/15 4/16 4/17 4/18 4/19 4/20 4/21 4/22 4/23 4/24 4/25 Dynamic Libs Source Code Static Libs Total
  25. pment Review Release - Performance React Native vs. Native Startup

    Time (in seconds) App Release Cycle React Native Native
  26. pment Review Release - Performance Native Modules Setup Localisation Culture

    Configuration PlatformConstants Time (in ms) 0 27.5 55 82.5 110