Slide 1

Slide 1 text

@kulkarniankita9 Oh hello Apollo Client, Farewell Redux Ankita Kulkarni, Loblaw Digital

Slide 2

Slide 2 text

@kulkarniankita9 Hi, I’m Ankita!

Slide 3

Slide 3 text

@kulkarniankita9 Let’s take a step back first! 🤚

Slide 4

Slide 4 text

@kulkarniankita9 What is a good state manager? 🤔

Slide 5

Slide 5 text

@kulkarniankita9 Data is normalized 💯

Slide 6

Slide 6 text

@kulkarniankita9 Data transforms Consistently 𝌡

Slide 7

Slide 7 text

@kulkarniankita9 Visualize global state 🧙

Slide 8

Slide 8 text

@kulkarniankita9 Debugging is not hard 🔎

Slide 9

Slide 9 text

@kulkarniankita9 You can write tests ✅

Slide 10

Slide 10 text

@kulkarniankita9 We all know a library that was good at this! ☺

Slide 11

Slide 11 text

@kulkarniankita9 Redux fixes everything ✨

Slide 12

Slide 12 text

@kulkarniankita9 What is Redux? Source: https://bumbu.me/simple-redux/

Slide 13

Slide 13 text

@kulkarniankita9 Redux world request CART SUCCESS CART ERROR CART REQUEST ActionType.CART_REQUEST ActionType.CART_ERROR ActionType.CART_SUCCESS

Slide 14

Slide 14 text

@kulkarniankita9 Async request in redux

Slide 15

Slide 15 text

@kulkarniankita9 Then why switch….? 😅

Slide 16

Slide 16 text

@kulkarniankita9 Apollo GQL happened 👏

Slide 17

Slide 17 text

@kulkarniankita9 After Apollo Client hooks 🚀,

Slide 18

Slide 18 text

@kulkarniankita9 No need for actions 🙅 CART SUCCESS CART FAILURE CART REQUEST ActionType.LOGIN_REQUEST ActionType.LOGIN_FAILURE ActionType.LOGIN_SUCCESS

Slide 19

Slide 19 text

@kulkarniankita9 It still doesn’t replace Redux, not convinced 🙄

Slide 20

Slide 20 text

@kulkarniankita9 I still had questions, how do we? • Normalize data • Handle async actions • Trigger state updates in the component • And remember selectors? • Transform data

Slide 21

Slide 21 text

@kulkarniankita9

Slide 22

Slide 22 text

@kulkarniankita9 Apollo Client 3 is here…✨✨✨

Slide 23

Slide 23 text

@kulkarniankita9 Difference between Redux and Apollo client

Slide 24

Slide 24 text

@kulkarniankita9 Apollo client does the heavy lifting for you 💪

Slide 25

Slide 25 text

@kulkarniankita9 Let’s revisit state management principles

Slide 26

Slide 26 text

@kulkarniankita9 My data is normalized (no dupes please 🙏)

Slide 27

Slide 27 text

@kulkarniankita9 Apollo client 🚀 • automatically caches your data by generating a unique ID • Normalizes new data in query responses and after mutation • Stores data using references so it can look up data easily

Slide 28

Slide 28 text

@kulkarniankita9 Root Query

Slide 29

Slide 29 text

@kulkarniankita9 You need to understand the internal workings of the Apollo client!!! ←

Slide 30

Slide 30 text

@kulkarniankita9 Data transformations

Slide 31

Slide 31 text

@kulkarniankita9 Let’s look at some examples

Slide 32

Slide 32 text

@kulkarniankita9 Cart Query

Slide 33

Slide 33 text

@kulkarniankita9 Out of stock / Low stock msg (react)

Slide 34

Slide 34 text

@kulkarniankita9 How can we achieve the same in Apollo client? 🚀

Slide 35

Slide 35 text

@kulkarniankita9 What are Local only fields 🦋

Slide 36

Slide 36 text

@kulkarniankita9 @client

Slide 37

Slide 37 text

@kulkarniankita9 Local only fields 🦋

Slide 38

Slide 38 text

@kulkarniankita9 To access in a component 🦋

Slide 39

Slide 39 text

@kulkarniankita9 What about fields that don’t need to be defined in in a GQL type?

Slide 40

Slide 40 text

@kulkarniankita9 • Store local state outside the Apollo client cache • You can store whatever you want in whatever shape you want • Modifying them triggers a update Reactive variables 🌸

Slide 41

Slide 41 text

@kulkarniankita9 Reactive variables 🌸

Slide 42

Slide 42 text

@kulkarniankita9 Reactive variables 🌸

Slide 43

Slide 43 text

@kulkarniankita9 Isn’t that cool? 🔥

Slide 44

Slide 44 text

@kulkarniankita9 Debugging with Apollo client

Slide 45

Slide 45 text

@kulkarniankita9 Visualize your cache 🧙

Slide 46

Slide 46 text

@kulkarniankita9 Visualize your cache 🧙 Link!

Slide 47

Slide 47 text

@kulkarniankita9 Testing! ✅

Slide 48

Slide 48 text

@kulkarniankita9 Testing! ✅

Slide 49

Slide 49 text

@kulkarniankita9 Keep an open mind 😇

Slide 50

Slide 50 text

@kulkarniankita9 Take away 🚀 • You take control or give away your control a little • In Redux, we were doing a LOT! • Using Redux and Apollo client with GQL redundant data • You need to understand how Apollo client works

Slide 51

Slide 51 text

@kulkarniankita9 It’s a mindset shift 💯

Slide 52

Slide 52 text

@kulkarniankita9 This is pretty much the end.. Questions? Comments? Feedback…make it positive—😉 Catch me after on Twitch!!

Slide 53

Slide 53 text

@kulkarniankita9 You did it 👏