1
00:00:02,140 --> 00:00:04,210
Many well‑respected corporations are

2
00:00:04,210 --> 00:00:06,740
deeply invested in React and its ecosystem

3
00:00:06,740 --> 00:00:11,020
today. React was created by Facebook, so

4
00:00:11,020 --> 00:00:12,790
of course React is heavily used on

5
00:00:12,790 --> 00:00:14,200
Facebook, one of the highest trafficked

6
00:00:14,200 --> 00:00:16,720
apps in the world, as well as Facebook's

7
00:00:16,720 --> 00:00:18,670
other properties, such as Instagram and

8
00:00:18,670 --> 00:00:21,750
WhatsApp. Facebook is deeply committed to

9
00:00:21,750 --> 00:00:23,650
React. Although React is an open‑source

10
00:00:23,650 --> 00:00:26,400
project, four of the top six committers to

11
00:00:26,400 --> 00:00:28,770
the React project are current full‑time

12
00:00:28,770 --> 00:00:31,680
Facebook employees. And the Facebook

13
00:00:31,680 --> 00:00:33,820
Development Team maintains an active blog

14
00:00:33,820 --> 00:00:35,720
that consistently outlines the details of

15
00:00:35,720 --> 00:00:39,040
each release and plans for the future.

16
00:00:39,040 --> 00:00:40,790
Because of Facebook's deep existing

17
00:00:40,790 --> 00:00:43,110
commitment to React in production, when

18
00:00:43,110 --> 00:00:45,490
breaking changes occur in React, Facebook

19
00:00:45,490 --> 00:00:47,800
has consistently provided a codemod that

20
00:00:47,800 --> 00:00:50,770
automates the change. Now a codemod is a

21
00:00:50,770 --> 00:00:52,580
command line tool that you can point at

22
00:00:52,580 --> 00:00:55,700
your code base to automate changes. So

23
00:00:55,700 --> 00:00:58,090
with React codemod, you can automatically

24
00:00:58,090 --> 00:01:00,240
update older React components to the

25
00:01:00,240 --> 00:01:03,070
latest specifications. Over the years when

26
00:01:03,070 --> 00:01:04,600
breaking changes have occurred, the

27
00:01:04,600 --> 00:01:06,500
Facebook team has consistently published a

28
00:01:06,500 --> 00:01:09,420
codemod in order to automate updating to

29
00:01:09,420 --> 00:01:12,540
the latest version. So, for example, when

30
00:01:12,540 --> 00:01:15,220
Facebook released React 15.5, the

31
00:01:15,220 --> 00:01:17,260
propTypes feature was published as a

32
00:01:17,260 --> 00:01:19,720
separate package, and use of the propTypes

33
00:01:19,720 --> 00:01:21,920
feature embedded in React began throwing a

34
00:01:21,920 --> 00:01:24,010
warning to notify developers of the

35
00:01:24,010 --> 00:01:26,960
change. To make updating easy, Facebook

36
00:01:26,960 --> 00:01:29,260
released a codemod to automate the changes

37
00:01:29,260 --> 00:01:31,270
by updating imports to reference the

38
00:01:31,270 --> 00:01:34,230
separate propTypes packages. And it's

39
00:01:34,230 --> 00:01:36,530
smart enough to update relevant code below

40
00:01:36,530 --> 00:01:39,330
in the body of the components as well. The

41
00:01:39,330 --> 00:01:41,100
beauty is we can feel confident about

42
00:01:41,100 --> 00:01:42,910
writing React components today because of

43
00:01:42,910 --> 00:01:44,900
Facebook's deep investment in the

44
00:01:44,900 --> 00:01:47,460
production React code means they must rely

45
00:01:47,460 --> 00:01:49,750
on the codemods that they create to update

46
00:01:49,750 --> 00:01:52,950
their own code. Codemods exist because

47
00:01:52,950 --> 00:01:55,150
Facebook needs them. Facebook has over

48
00:01:55,150 --> 00:01:58,000
50,000 components in production. This is a

49
00:01:58,000 --> 00:01:59,910
benefit of using React because it helps

50
00:01:59,910 --> 00:02:01,840
assure that significant breaking changes

51
00:02:01,840 --> 00:02:04,590
in the future are highly unlikely. Doing

52
00:02:04,590 --> 00:02:06,500
so would require Facebook to deal with

53
00:02:06,500 --> 00:02:08,430
painful breaking changes to tens of

54
00:02:08,430 --> 00:02:11,070
thousands of their own components. This

55
00:02:11,070 --> 00:02:15,000
helps assure the project's long‑term stability

