WEBVTT

1
00:00:02.405 --> 00:00:02.755
Great.

2
00:00:03.015 --> 00:00:07.555
<00:00:03.015>Um, <00:00:03.142>hope <00:00:03.269>you <00:00:03.396>can <00:00:03.524>see <00:00:03.651>my <00:00:03.778>screen <00:00:03.905>but <00:00:04.033>uh, <00:00:04.160>yeah. <00:00:04.287>Hi <00:00:04.415>everyone.

3
00:00:07.695 --> 00:00:10.955
<00:00:07.695>Um, <00:00:07.850>my <00:00:08.006>name <00:00:08.161>is <00:00:08.317>Ire <00:00:08.472>Aku <00:00:08.628>and <00:00:08.783>I'm <00:00:08.939>the <00:00:09.095>co-founder

4
00:00:11.135 --> 00:00:13.075
<00:00:11.135>and <00:00:11.415>VP <00:00:11.695>engineering <00:00:11.975>at <00:00:12.254>Heli <00:00:12.535>Carrier,

5
00:00:13.075 --> 00:00:15.515
<00:00:13.075>which <00:00:13.354>is <00:00:13.635>a <00:00:13.915>company <00:00:14.194>building <00:00:14.475>cryptocurrency

6
00:00:15.515 --> 00:00:16.955
<00:00:15.515>infrastructure <00:00:16.163>for <00:00:16.811>Africa.

7
00:00:17.855 --> 00:00:19.875
<00:00:17.855>So <00:00:18.010>as <00:00:18.166>I'm <00:00:18.321>sure <00:00:18.477>like <00:00:18.632>a <00:00:18.788>lot <00:00:18.943>of <00:00:19.099>you <00:00:19.255>are,

8
00:00:19.935 --> 00:00:21.075
<00:00:19.935>I'm <00:00:20.276>really <00:00:20.619>excited <00:00:20.961>about

9
00:00:21.105 --> 00:00:23.275
<00:00:21.105>what <00:00:21.280>progressive <00:00:21.455>web <00:00:21.630>apps <00:00:21.805>have <00:00:21.980>done <00:00:22.155>for <00:00:22.330>the <00:00:22.505>web.

10
00:00:23.815 --> 00:00:25.915
<00:00:23.815>So <00:00:23.990>today <00:00:24.165>I'm <00:00:24.340>gonna <00:00:24.515>be <00:00:24.690>talking <00:00:24.865>to <00:00:25.040>you <00:00:25.215>about

11
00:00:26.015 --> 00:00:28.835
<00:00:26.015>how <00:00:26.170>progressive <00:00:26.326>web <00:00:26.481>apps <00:00:26.637>have <00:00:26.792>developed <00:00:26.948>over <00:00:27.103>the <00:00:27.259>past <00:00:27.415>five

12
00:00:28.835 --> 00:00:32.315
<00:00:28.835>years <00:00:28.975>and <00:00:29.115>what <00:00:29.255>it's <00:00:29.395>like <00:00:29.535>to <00:00:29.675>develop <00:00:29.815>and <00:00:29.955>use <00:00:30.095>them <00:00:30.235>today.

13
00:00:33.815 --> 00:00:36.515
<00:00:33.815>So <00:00:33.989>before <00:00:34.165>progressive <00:00:34.339>web <00:00:34.515>apps <00:00:34.690>were <00:00:34.864>introduced <00:00:35.040>about <00:00:35.214>five

14
00:00:36.515 --> 00:00:39.555
<00:00:36.515>years <00:00:36.670>ago, <00:00:36.826>the <00:00:36.981>web <00:00:37.137>was <00:00:37.292>really <00:00:37.448>lagging <00:00:37.603>behind <00:00:37.759>mobile <00:00:37.915>apps.

15
00:00:39.695 --> 00:00:42.355
<00:00:39.695>So <00:00:39.895>websites <00:00:40.095>had <00:00:40.295>the <00:00:40.495>advantage <00:00:40.695>of <00:00:40.895>being <00:00:41.095>open

16
00:00:42.495 --> 00:00:43.875
<00:00:42.495>and <00:00:42.909>accessible <00:00:43.323>to <00:00:43.737>anyone,

17
00:00:44.375 --> 00:00:46.795
<00:00:44.375>but <00:00:44.575>they <00:00:44.775>were <00:00:44.975>really <00:00:45.175>lacking <00:00:45.375>in <00:00:45.575>cap <00:00:45.775>capabilities.

18
00:00:47.015 --> 00:00:49.875
<00:00:47.015>And <00:00:47.142>native <00:00:47.269>apps <00:00:47.396>on <00:00:47.524>the <00:00:47.651>other <00:00:47.778>hand <00:00:47.905>were <00:00:48.033>really <00:00:48.160>great <00:00:48.287>in <00:00:48.415>terms

19
00:00:49.875 --> 00:00:52.675
<00:00:49.875>of <00:00:50.075>capabilities, <00:00:50.275>but <00:00:50.475>they're <00:00:50.675>really <00:00:50.875>poor <00:00:51.075>in <00:00:51.275>reach

20
00:00:52.675 --> 00:00:55.195
<00:00:52.675>because <00:00:52.875>they're <00:00:53.074>closed <00:00:53.275>off <00:00:53.474>to <00:00:53.675>a <00:00:53.875>certain <00:00:54.074>ecosystem.

21
00:00:56.365 --> 00:00:59.145
<00:00:56.365>So <00:00:56.520>progressive <00:00:56.676>web <00:00:56.831>apps <00:00:56.987>were <00:00:57.142>introduced <00:00:57.298>to <00:00:57.453>be <00:00:57.609>the <00:00:57.765>best

22
00:00:59.325 --> 00:01:01.025
<00:00:59.325>of <00:00:59.791>these <00:01:00.258>two <00:01:00.725>worlds

23
00:01:02.085 --> 00:01:04.465
<00:01:02.085>and <00:01:02.318>they're <00:01:02.551>defined <00:01:02.785>by <00:01:03.018>this <00:01:03.251>exact <00:01:03.485>intersection.

24
00:01:04.765 --> 00:01:06.945
<00:01:04.765>So <00:01:05.045>they <00:01:05.325>use <00:01:05.605>modern <00:01:05.885>web <00:01:06.165>capabilities

25
00:01:07.085 --> 00:01:09.265
<00:01:07.085>to <00:01:07.318>deliver <00:01:07.551>a <00:01:07.785>user <00:01:08.018>experience <00:01:08.251>that's <00:01:08.485>similar

26
00:01:09.325 --> 00:01:10.465
<00:01:09.325>to <00:01:09.838>native <00:01:10.351>applications

27
00:01:11.325 --> 00:01:12.785
<00:01:11.325>and <00:01:11.587>they <00:01:11.850>do <00:01:12.113>this <00:01:12.376>while <00:01:12.639>maintaining

28
00:01:12.785 --> 00:01:13.945
<00:01:12.785>the <00:01:12.993>main <00:01:13.202>benefit <00:01:13.411>of <00:01:13.620>the <00:01:13.829>web.

29
00:01:13.945 --> 00:01:16.065
<00:01:13.945>So <00:01:14.145>it's <00:01:14.345>reach <00:01:14.544>and <00:01:14.744>low <00:01:14.945>barrier <00:01:15.145>to <00:01:15.345>entry.

30
00:01:17.165 --> 00:01:18.705
<00:01:17.164>And <00:01:17.442>there <00:01:17.719>are <00:01:17.996>three <00:01:18.273>core <00:01:18.551>features

31
00:01:18.705 --> 00:01:20.265
<00:01:18.705>that <00:01:18.985>make <00:01:19.265>a <00:01:19.545>progressive <00:01:19.825>web <00:01:20.105>app.

32
00:01:20.285 --> 00:01:23.625
<00:01:20.285>So <00:01:20.460>it <00:01:20.634>needs <00:01:20.810>to <00:01:20.985>be <00:01:21.160>capable, <00:01:21.335>reliable <00:01:21.509>and <00:01:21.685>installable.

33
00:01:24.605 --> 00:01:27.625
<00:01:24.605>So <00:01:24.745>by <00:01:24.885>capable <00:01:25.025>we <00:01:25.165>mean <00:01:25.305>that <00:01:25.445>progressive <00:01:25.585>web <00:01:25.725>apps <00:01:25.865>needs <00:01:26.005>need

34
00:01:27.625 --> 00:01:30.585
<00:01:27.625>to <00:01:27.752>take <00:01:27.879>advantage <00:01:28.006>of <00:01:28.134>the <00:01:28.261>modern <00:01:28.388>APIs <00:01:28.515>which <00:01:28.643>put <00:01:28.770>it <00:01:28.897>on <00:01:29.025>the

35
00:01:30.585 --> 00:01:32.265
<00:01:30.585>same <00:01:30.935>footing <00:01:31.285>as <00:01:31.635>native <00:01:31.985>applications.

36
00:01:32.925 --> 00:01:35.545
<00:01:32.925>So <00:01:33.158>for <00:01:33.391>example, <00:01:33.625>getting <00:01:33.858>like <00:01:34.091>push <00:01:34.325>notifications

37
00:01:35.545 --> 00:01:37.025
<00:01:35.545>with <00:01:35.878>the <00:01:36.211>web <00:01:36.544>push <00:01:36.877>API

38
00:01:37.205 --> 00:01:40.825
<00:01:37.205>or <00:01:37.360>getting <00:01:37.516>access <00:01:37.671>to <00:01:37.827>the <00:01:37.982>contacts <00:01:38.138>with <00:01:38.293>the <00:01:38.449>contacts <00:01:38.605>API

39
00:01:40.825 --> 00:01:42.105
<00:01:40.825>and <00:01:41.055>so <00:01:41.285>on <00:01:41.516>and <00:01:41.746>so <00:01:41.976>forth.

40
00:01:43.255 --> 00:01:44.315
<00:01:43.255>Or <00:01:43.573>even <00:01:43.890>taking <00:01:44.209>advantage

41
00:01:44.455 --> 00:01:46.435
<00:01:44.455>of <00:01:44.688>new <00:01:44.921>web <00:01:45.155>standards <00:01:45.388>like <00:01:45.621>web <00:01:45.855>assembly.

42
00:01:47.865 --> 00:01:49.475
<00:01:47.865>Then <00:01:48.215>by <00:01:48.565>reliable <00:01:48.915>we <00:01:49.265>mean

43
00:01:49.475 --> 00:01:51.795
<00:01:49.475>that <00:01:49.630>a <00:01:49.786>progressive <00:01:49.941>web <00:01:50.097>app <00:01:50.252>should <00:01:50.408>feel <00:01:50.563>fast <00:01:50.719>and <00:01:50.875>dependable.

44
00:01:51.795 --> 00:01:53.835
<00:01:51.795>So <00:01:52.145>regardless <00:01:52.495>of <00:01:52.845>network <00:01:53.195>connection.

45
00:01:54.255 --> 00:01:56.315
<00:01:54.255>So <00:01:54.535>in <00:01:54.815>essence <00:01:55.095>nothing <00:01:55.375>should <00:01:55.655>slow

46
00:01:56.315 --> 00:01:57.675
<00:01:56.315>down <00:01:56.621>a <00:01:56.926>progressive <00:01:57.233>web <00:01:57.539>app.

47
00:01:57.975 --> 00:02:00.875
<00:01:57.975>And <00:01:58.115>in <00:01:58.255>fact <00:01:58.395>progressive <00:01:58.535>web <00:01:58.675>app <00:01:58.815>should <00:01:58.955>take <00:01:59.095>an <00:01:59.235>offline <00:01:59.375>first

48
00:02:01.235 --> 00:02:03.235
<00:02:01.235>approach <00:02:01.435>so <00:02:01.635>that <00:02:01.835>they <00:02:02.035>should <00:02:02.235>think <00:02:02.435>of <00:02:02.635>connection

49
00:02:03.235 --> 00:02:05.315
<00:02:03.235>to <00:02:03.435>the <00:02:03.635>network <00:02:03.835>as <00:02:04.035>more <00:02:04.235>of <00:02:04.435>an <00:02:04.635>enhancement

50
00:02:05.615 --> 00:02:07.075
<00:02:05.615>and <00:02:05.943>provide <00:02:06.271>a <00:02:06.600>base <00:02:06.929>experience

51
00:02:07.075 --> 00:02:09.395
<00:02:07.075>that <00:02:07.308>doesn't <00:02:07.541>actually <00:02:07.775>depend <00:02:08.008>on <00:02:08.241>being <00:02:08.475>online.

52
00:02:09.855 --> 00:02:12.075
<00:02:09.854>And <00:02:10.030>this <00:02:10.204>is <00:02:10.380>probably <00:02:10.554>the <00:02:10.729>most <00:02:10.905>drastic <00:02:11.079>diff <00:02:11.255>difference

53
00:02:12.075 --> 00:02:14.955
<00:02:12.075>between <00:02:12.274>like <00:02:12.475>traditional <00:02:12.674>websites <00:02:12.875>and <00:02:13.075>progressive <00:02:13.274>web <00:02:13.475>apps

54
00:02:14.955 --> 00:02:18.475
<00:02:14.955>because <00:02:15.130>the <00:02:15.305>former <00:02:15.480>were <00:02:15.655>essentially <00:02:15.830>defined <00:02:16.005>by <00:02:16.180>their <00:02:16.355>access

55
00:02:18.475 --> 00:02:22.625
<00:02:18.475>to <00:02:18.630>the <00:02:18.786>internet <00:02:18.941>and <00:02:19.097>when <00:02:19.252>online <00:02:19.408>progressive <00:02:19.563>web <00:02:19.719>apps <00:02:19.875>need

56
00:02:22.625 --> 00:02:24.505
<00:02:22.625>to <00:02:22.905>be <00:02:23.185>really <00:02:23.465>fast <00:02:23.745>and <00:02:24.025>resilient

57
00:02:24.525 --> 00:02:27.505
<00:02:24.525>and <00:02:24.700>this <00:02:24.875>means <00:02:25.050>loading <00:02:25.225>as <00:02:25.400>quickly <00:02:25.575>as <00:02:25.750>possible, <00:02:25.925>responding

58
00:02:27.505 --> 00:02:28.945
<00:02:27.505>to <00:02:27.936>user <00:02:28.369>inputs <00:02:28.801>seamlessly

59
00:02:29.165 --> 00:02:31.385
<00:02:29.165>and <00:02:29.445>being <00:02:29.725>accessible <00:02:30.005>across <00:02:30.285>all <00:02:30.565>devices.

60
00:02:32.815 --> 00:02:35.465
<00:02:32.815>Finally, <00:02:33.048>progressive <00:02:33.281>web <00:02:33.515>apps <00:02:33.748>should <00:02:33.981>be <00:02:34.215>installable

61
00:02:35.885 --> 00:02:38.025
<00:02:35.885>and <00:02:36.024>this <00:02:36.165>means <00:02:36.304>that <00:02:36.445>they <00:02:36.584>can <00:02:36.725>be <00:02:36.864>installed <00:02:37.005>to <00:02:37.144>the <00:02:37.285>device

62
00:02:38.025 --> 00:02:41.625
<00:02:38.025>as <00:02:38.180>a <00:02:38.336>standalone <00:02:38.491>application <00:02:38.647>and <00:02:38.802>used <00:02:38.958>outside <00:02:39.113>of <00:02:39.269>the <00:02:39.425>browser.

63
00:02:42.125 --> 00:02:43.585
<00:02:42.125>So <00:02:42.387>they <00:02:42.650>should <00:02:42.913>also <00:02:43.176>be <00:02:43.439>integrated

64
00:02:43.615 --> 00:02:45.865
<00:02:43.615>with <00:02:43.848>the <00:02:44.081>system <00:02:44.315>like <00:02:44.548>other <00:02:44.781>native <00:02:45.015>applications.

65
00:02:46.165 --> 00:02:48.305
<00:02:46.165>So <00:02:46.445>for <00:02:46.725>example, <00:02:47.005>by <00:02:47.285>being <00:02:47.565>accessible

66
00:02:48.305 --> 00:02:51.345
<00:02:48.305>by <00:02:48.432>an <00:02:48.559>icon <00:02:48.686>on <00:02:48.814>the <00:02:48.941>home <00:02:49.068>screen <00:02:49.195>or <00:02:49.323>within <00:02:49.450>the <00:02:49.577>app <00:02:49.705>drawer

67
00:02:51.485 --> 00:02:54.185
<00:02:51.485>or <00:02:51.835>wherever <00:02:52.185>native <00:02:52.535>applications <00:02:52.885>live.

68
00:02:55.585 --> 00:02:57.725
<00:02:55.585>And <00:02:55.818>tying <00:02:56.051>all <00:02:56.285>these <00:02:56.518>three <00:02:56.751>concepts <00:02:56.985>together

69
00:02:57.905 --> 00:02:59.285
<00:02:57.905>is <00:02:58.526>progressive <00:02:59.147>enhancement.

70
00:02:59.425 --> 00:03:01.605
<00:02:59.425>So <00:02:59.658>progressive <00:02:59.891>web <00:03:00.125>apps <00:03:00.358>are <00:03:00.591>so <00:03:00.825>called

71
00:03:01.605 --> 00:03:04.165
<00:03:01.605>because <00:03:01.838>at <00:03:02.071>their <00:03:02.304>core, <00:03:02.538>their <00:03:02.771>applications <00:03:03.005>built

72
00:03:04.165 --> 00:03:07.405
<00:03:04.165>with <00:03:04.364>progressive <00:03:04.565>enhancement <00:03:04.765>in <00:03:04.965>mind, <00:03:05.165>meaning <00:03:05.364>that <00:03:05.565>none

73
00:03:07.405 --> 00:03:10.205
<00:03:07.405>of <00:03:07.560>the <00:03:07.716>extra <00:03:07.871>features <00:03:08.027>should <00:03:08.182>be <00:03:08.338>implemented <00:03:08.493>at <00:03:08.649>the <00:03:08.805>detriment

74
00:03:10.205 --> 00:03:12.045
<00:03:10.205>to <00:03:10.485>having <00:03:10.765>that <00:03:11.045>core <00:03:11.325>standard <00:03:11.605>website

75
00:03:12.045 --> 00:03:13.285
<00:03:12.045>experience <00:03:12.323>that <00:03:12.602>we've <00:03:12.882>always <00:03:13.161>had.

76
00:03:14.665 --> 00:03:17.925
<00:03:14.665>And <00:03:14.898>like <00:03:15.131>I <00:03:15.364>mentioned <00:03:15.598>back <00:03:15.831>in <00:03:16.065>2016,

77
00:03:18.125 --> 00:03:20.405
<00:03:18.125>I <00:03:18.300>think <00:03:18.475>when <00:03:18.650>progressive <00:03:18.825>web <00:03:19.000>apps <00:03:19.175>were <00:03:19.350>first <00:03:19.525>introduced,

78
00:03:20.405 --> 00:03:22.645
<00:03:20.405>they <00:03:20.605>didn't <00:03:20.805>really <00:03:21.005>live <00:03:21.205>up <00:03:21.405>to <00:03:21.605>this <00:03:21.805>dream

79
00:03:23.555 --> 00:03:25.325
<00:03:23.555>because <00:03:23.788>in <00:03:24.021>order <00:03:24.255>for <00:03:24.488>progressive <00:03:24.721>web <00:03:24.955>apps

80
00:03:25.325 --> 00:03:27.605
<00:03:25.325>to <00:03:25.605>really <00:03:25.885>na <00:03:26.165>rival <00:03:26.445>native <00:03:26.725>applications,

81
00:03:27.755 --> 00:03:30.245
<00:03:27.755>there's <00:03:27.954>some <00:03:28.155>capabilities <00:03:28.355>that <00:03:28.555>are <00:03:28.755>really <00:03:28.954>just <00:03:29.155>critical

82
00:03:30.245 --> 00:03:31.285
<00:03:30.245>to <00:03:30.479>have <00:03:30.713>that <00:03:30.947>were <00:03:31.180>missing.

83
00:03:31.625 --> 00:03:34.605
<00:03:31.625>So <00:03:31.800>for <00:03:31.975>example, <00:03:32.150>push <00:03:32.325>notifications, <00:03:32.500>it <00:03:32.675>was <00:03:32.850>just <00:03:33.025>starting

84
00:03:34.705 --> 00:03:36.285
<00:03:34.704>to <00:03:35.054>be <00:03:35.404>implemented <00:03:35.755>in <00:03:36.105>Chrome

85
00:03:36.385 --> 00:03:37.805
<00:03:36.385>and <00:03:36.811>basically <00:03:37.237>only <00:03:37.663>Chrome

86
00:03:39.425 --> 00:03:42.345
<00:03:39.425>features <00:03:39.580>like <00:03:39.736>background <00:03:39.891>fetch <00:03:40.047>just <00:03:40.202>wasn't <00:03:40.358>a <00:03:40.513>thing <00:03:40.669>at <00:03:40.825>all.

87
00:03:42.415 --> 00:03:46.185
<00:03:42.415>Similar <00:03:42.590>story <00:03:42.765>for <00:03:42.940>things <00:03:43.114>like <00:03:43.290>having <00:03:43.465>um, <00:03:43.640>like <00:03:43.815>access

88
00:03:46.185 --> 00:03:48.185
<00:03:46.185>to <00:03:46.385>the <00:03:46.585>file <00:03:46.785>system <00:03:46.985>and <00:03:47.185>things <00:03:47.385>like <00:03:47.585>that.

89
00:03:49.045 --> 00:03:50.545
<00:03:49.045>And <00:03:49.382>then <00:03:49.720>service <00:03:50.057>workers <00:03:50.395>and

90
00:03:50.545 --> 00:03:53.385
<00:03:50.545>by <00:03:50.745>extension <00:03:50.945>the <00:03:51.145>offline <00:03:51.345>first <00:03:51.545>model <00:03:51.745>wasn't <00:03:51.945>totally

91
00:03:53.515 --> 00:03:54.665
<00:03:53.515>ready <00:03:54.032>yet <00:03:54.549>either.

92
00:03:55.445 --> 00:03:57.385
<00:03:55.445>And <00:03:55.678>like <00:03:55.911>the <00:03:56.144>other <00:03:56.378>capabilities <00:03:56.611>I <00:03:56.845>mentioned,

93
00:03:57.565 --> 00:03:59.665
<00:03:57.565>the <00:03:57.798>support <00:03:58.031>was <00:03:58.265>just <00:03:58.498>not <00:03:58.731>widespread <00:03:58.965>enough

94
00:03:59.665 --> 00:04:01.225
<00:03:59.665>to <00:04:00.015>be <00:04:00.364>used <00:04:00.715>that <00:04:01.065>reliably.

95
00:04:03.295 --> 00:04:05.195
<00:04:03.295>But <00:04:03.528>arguably <00:04:03.761>I <00:04:03.994>think <00:04:04.228>the <00:04:04.461>main <00:04:04.695>issue

96
00:04:05.195 --> 00:04:06.435
<00:04:05.195>with <00:04:05.474>service <00:04:05.753>workers <00:04:06.032>was <00:04:06.311>just

97
00:04:06.455 --> 00:04:07.835
<00:04:06.455>how <00:04:06.703>difficult <00:04:06.951>they <00:04:07.200>were <00:04:07.448>to <00:04:07.697>use.

98
00:04:08.015 --> 00:04:10.995
<00:04:08.015>I'm <00:04:08.170>sure <00:04:08.326>we <00:04:08.481>can <00:04:08.637>all <00:04:08.792>relate <00:04:08.948>to <00:04:09.103>this <00:04:09.259>person's <00:04:09.415>predicaments

99
00:04:10.995 --> 00:04:12.875
<00:04:10.995>of <00:04:11.228>being <00:04:11.461>stuck <00:04:11.695>with <00:04:11.928>a <00:04:12.161>service <00:04:12.395>worker

100
00:04:12.905 --> 00:04:14.595
<00:04:12.905>that <00:04:13.255>would <00:04:13.605>just <00:04:13.955>never <00:04:14.305>update.

101
00:04:14.665 --> 00:04:18.115
<00:04:14.665>It's <00:04:14.804>like <00:04:14.945>something <00:04:15.084>that <00:04:15.225>was <00:04:15.364>just <00:04:15.505>so, <00:04:15.644>it <00:04:15.785>happens <00:04:15.924>so <00:04:16.065>often

102
00:04:18.115 --> 00:04:19.595
<00:04:18.115>that <00:04:18.448>it's <00:04:18.781>almost <00:04:19.114>like <00:04:19.447>comical.

103
00:04:20.995 --> 00:04:22.735
<00:04:20.995>And <00:04:21.345>then <00:04:21.695>capabilities <00:04:22.045>with <00:04:22.395>frameworks

104
00:04:22.735 --> 00:04:23.815
<00:04:22.735>was <00:04:23.059>another <00:04:23.383>major <00:04:23.707>issue.

105
00:04:23.995 --> 00:04:26.055
<00:04:23.995>So <00:04:24.195>a <00:04:24.395>lot <00:04:24.595>of <00:04:24.795>progressive <00:04:24.995>web <00:04:25.195>apps <00:04:25.395>um,

106
00:04:26.055 --> 00:04:27.895
<00:04:26.055>ended <00:04:26.335>up <00:04:26.615>being <00:04:26.895>just <00:04:27.175>like <00:04:27.455>experiments

107
00:04:27.995 --> 00:04:31.055
<00:04:27.995>and <00:04:28.170>they <00:04:28.345>were <00:04:28.520>built <00:04:28.695>completely <00:04:28.870>different <00:04:29.045>from <00:04:29.220>whatever <00:04:29.395>the

108
00:04:31.055 --> 00:04:34.255
<00:04:31.055>main <00:04:31.288>websites <00:04:31.521>or <00:04:31.755>main <00:04:31.988>web <00:04:32.221>application <00:04:32.455>was

109
00:04:34.285 --> 00:04:36.495
<00:04:34.284>because <00:04:34.564>there <00:04:34.844>wasn't <00:04:35.124>really <00:04:35.405>a <00:04:35.684>straightforward

110
00:04:36.675 --> 00:04:39.575
<00:04:36.675>or <00:04:36.815>known <00:04:36.955>way <00:04:37.095>to <00:04:37.235>make <00:04:37.375>progressive <00:04:37.515>web <00:04:37.655>apps <00:04:37.795>with <00:04:37.935>the <00:04:38.075>tools

111
00:04:39.575 --> 00:04:41.455
<00:04:39.575>and <00:04:39.808>frameworks <00:04:40.041>that <00:04:40.275>we <00:04:40.508>were <00:04:40.741>already <00:04:40.974>using.

112
00:04:43.505 --> 00:04:46.005
<00:04:43.505>And <00:04:43.680>then <00:04:43.855>the <00:04:44.030>install <00:04:44.205>experience <00:04:44.380>for <00:04:44.555>progressive <00:04:44.730>web <00:04:44.905>apps.

113
00:04:46.005 --> 00:04:47.765
<00:04:46.005>So <00:04:46.205>this <00:04:46.405>like <00:04:46.605>add <00:04:46.805>to <00:04:47.005>home <00:04:47.205>screen <00:04:47.405>feature,

114
00:04:48.225 --> 00:04:51.085
<00:04:48.225>it <00:04:48.365>was <00:04:48.505>just <00:04:48.645>not <00:04:48.785>the <00:04:48.925>same <00:04:49.065>as <00:04:49.205>installing <00:04:49.345>a <00:04:49.485>native <00:04:49.625>application

115
00:04:51.085 --> 00:04:54.285
<00:04:51.085>because <00:04:51.240>all <00:04:51.396>it <00:04:51.551>did <00:04:51.707>was <00:04:51.862>literally <00:04:52.018>just <00:04:52.173>add <00:04:52.329>the <00:04:52.484>websites

116
00:04:54.285 --> 00:04:56.565
<00:04:54.284>to <00:04:54.440>the <00:04:54.596>home <00:04:54.751>screen <00:04:54.907>and <00:04:55.062>there <00:04:55.218>wasn't <00:04:55.373>much <00:04:55.529>like <00:04:55.684>deeper

117
00:04:56.595 --> 00:04:58.725
<00:04:56.595>integration <00:04:56.875>into <00:04:57.155>the <00:04:57.435>system <00:04:57.715>than <00:04:57.995>that.

118
00:04:59.785 --> 00:05:00.805
<00:04:59.784>So <00:05:00.091>across <00:05:00.397>the <00:05:00.703>board,

119
00:05:01.125 --> 00:05:03.405
<00:05:01.125>progressive <00:05:01.325>web <00:05:01.525>apps <00:05:01.725>couldn't <00:05:01.925>really <00:05:02.125>be <00:05:02.325>considered <00:05:02.525>capable,

120
00:05:04.005 --> 00:05:08.325
<00:05:04.005>reliable <00:05:04.160>or <00:05:04.316>installable, <00:05:04.471>but <00:05:04.627>here <00:05:04.782>we <00:05:04.938>are <00:05:05.093>five <00:05:05.249>years <00:05:05.405>on.

121
00:05:08.325 --> 00:05:09.725
<00:05:08.325>So <00:05:08.640>what's <00:05:08.955>it <00:05:09.270>like <00:05:09.585>developing

122
00:05:09.785 --> 00:05:11.765
<00:05:09.785>and <00:05:10.065>using <00:05:10.345>progressive <00:05:10.625>web <00:05:10.905>apps <00:05:11.185>today?

123
00:05:12.975 --> 00:05:15.605
<00:05:12.975>While <00:05:13.115>we've <00:05:13.255>seen <00:05:13.395>progressive <00:05:13.535>web <00:05:13.675>apps <00:05:13.815>being <00:05:13.955>used <00:05:14.095>in <00:05:14.235>a <00:05:14.375>lot

124
00:05:15.605 --> 00:05:16.845
<00:05:15.605>more <00:05:15.884>cases <00:05:16.163>today <00:05:16.442>than <00:05:16.721>ever

125
00:05:16.845 --> 00:05:20.245
<00:05:16.845>before, <00:05:17.078>basically <00:05:17.311>every <00:05:17.545>major <00:05:17.778>application <00:05:18.011>now <00:05:18.245>has

126
00:05:20.405 --> 00:05:21.605
<00:05:20.405>a <00:05:20.674>progressive <00:05:20.945>web <00:05:21.215>app <00:05:21.485>version.

127
00:05:23.155 --> 00:05:26.535
<00:05:23.155>In <00:05:23.330>fact, <00:05:23.505>an <00:05:23.679>estimated <00:05:23.854>1.5 <00:05:24.030>million <00:05:24.205>websites <00:05:24.380>are <00:05:24.554>considered

128
00:05:26.535 --> 00:05:29.735
<00:05:26.535>to <00:05:26.710>be <00:05:26.885>installable <00:05:27.060>as <00:05:27.235>progressive <00:05:27.410>web <00:05:27.585>apps <00:05:27.760>with <00:05:27.935>tens

129
00:05:29.735 --> 00:05:32.975
<00:05:29.735>of <00:05:29.910>millions <00:05:30.085>of <00:05:30.260>installations <00:05:30.435>happening <00:05:30.610>every <00:05:30.785>single <00:05:30.960>month <00:05:31.135>on

130
00:05:32.975 --> 00:05:36.855
<00:05:32.975>Chrome <00:05:33.150>for <00:05:33.325>Android <00:05:33.500>alone, <00:05:33.675>we're <00:05:33.850>also <00:05:34.025>really, <00:05:34.200>really <00:05:34.375>close

131
00:05:36.995 --> 00:05:38.055
<00:05:36.995>to <00:05:37.949>20%

132
00:05:38.075 --> 00:05:41.415
<00:05:38.075>of <00:05:38.215>all <00:05:38.354>page <00:05:38.495>loads <00:05:38.635>in <00:05:38.775>Chrome <00:05:38.914>being <00:05:39.055>controlled <00:05:39.195>by <00:05:39.335>service <00:05:39.474>workers.

133
00:05:41.675 --> 00:05:44.575
<00:05:41.675>And <00:05:41.815>this <00:05:41.955>is <00:05:42.095>really <00:05:42.235>huge <00:05:42.375>because <00:05:42.515>it <00:05:42.655>means <00:05:42.795>that <00:05:42.935>service <00:05:43.075>worker

134
00:05:44.715 --> 00:05:47.855
<00:05:44.715>and <00:05:44.890>offline <00:05:45.065>websites <00:05:45.240>are <00:05:45.415>becoming <00:05:45.590>more <00:05:45.765>and <00:05:45.940>more <00:05:46.115>common.

135
00:05:49.555 --> 00:05:51.055
<00:05:49.555>So <00:05:50.005>how <00:05:50.455>capable, <00:05:50.905>reliable

136
00:05:51.155 --> 00:05:53.535
<00:05:51.155>and <00:05:51.388>installable <00:05:51.621>are <00:05:51.854>progressive <00:05:52.088>web <00:05:52.321>apps <00:05:52.554>today?

137
00:05:54.555 --> 00:05:55.575
<00:05:54.555>So <00:05:55.014>first <00:05:55.473>capable

138
00:05:56.635 --> 00:05:58.085
<00:05:56.635>and <00:05:56.896>thanks <00:05:57.157>to <00:05:57.418>a <00:05:57.679>project <00:05:57.940>code,

139
00:05:58.085 --> 00:06:01.205
<00:05:58.085>name <00:05:58.240>project <00:05:58.396>Fugu <00:05:58.551>Progre <00:05:58.707>Progressive <00:05:58.862>web <00:05:59.018>apps <00:05:59.173>are <00:05:59.329>a <00:05:59.484>lot

140
00:06:01.205 --> 00:06:02.365
<00:06:01.205>more <00:06:01.727>capable <00:06:02.249>today.

141
00:06:03.385 --> 00:06:06.205
<00:06:03.385>So <00:06:03.525>this <00:06:03.664>is <00:06:03.805>an <00:06:03.945>initiative <00:06:04.085>that <00:06:04.224>started <00:06:04.365>with <00:06:04.505>the <00:06:04.645>Chromium <00:06:04.784>team

142
00:06:06.465 --> 00:06:08.485
<00:06:06.465>but <00:06:06.640>has <00:06:06.815>now <00:06:06.989>grown <00:06:07.164>to <00:06:07.340>be <00:06:07.515>a <00:06:07.690>collective <00:06:07.864>project

143
00:06:08.555 --> 00:06:11.045
<00:06:08.555>with <00:06:08.835>contributions <00:06:09.115>from <00:06:09.395>Microsoft, <00:06:09.675>Intel, <00:06:09.955>Samsung,

144
00:06:11.385 --> 00:06:12.725
<00:06:11.385>and <00:06:11.686>the <00:06:11.988>core <00:06:12.289>Google <00:06:12.591>team.

145
00:06:13.585 --> 00:06:16.005
<00:06:13.585>And <00:06:13.784>basically <00:06:13.984>what <00:06:14.185>it <00:06:14.385>is <00:06:14.585>is <00:06:14.784>an <00:06:14.984>effort

146
00:06:16.005 --> 00:06:18.205
<00:06:16.005>to <00:06:16.205>close <00:06:16.405>the <00:06:16.605>gap <00:06:16.805>in <00:06:17.005>the <00:06:17.205>web's <00:06:17.405>capabilities

147
00:06:18.705 --> 00:06:20.685
<00:06:18.705>by <00:06:18.984>enabling <00:06:19.265>a <00:06:19.544>new <00:06:19.825>class <00:06:20.104>classes

148
00:06:20.785 --> 00:06:22.525
<00:06:20.785>of <00:06:21.018>applications <00:06:21.251>to <00:06:21.485>run <00:06:21.718>on <00:06:21.951>the <00:06:22.185>web.

149
00:06:22.905 --> 00:06:26.365
<00:06:22.905>So <00:06:23.044>this <00:06:23.184>just <00:06:23.325>basically <00:06:23.465>means <00:06:23.604>shipping <00:06:23.744>a <00:06:23.885>lot <00:06:24.025>more <00:06:24.164>web <00:06:24.304>APIs

150
00:06:26.365 --> 00:06:27.565
<00:06:26.365>quicker <00:06:26.725>than <00:06:27.085>ever <00:06:27.445>before.

151
00:06:28.775 --> 00:06:31.235
<00:06:28.775>So <00:06:28.914>what <00:06:29.054>exactly <00:06:29.195>has <00:06:29.335>been <00:06:29.474>shipped <00:06:29.614>in <00:06:29.755>the <00:06:29.895>last <00:06:30.034>five <00:06:30.174>years,

152
00:06:31.345 --> 00:06:33.955
<00:06:31.345>both <00:06:31.545>under <00:06:31.745>this <00:06:31.945>project <00:06:32.145>and <00:06:32.345>outside <00:06:32.545>of <00:06:32.745>it?

153
00:06:35.695 --> 00:06:36.835
<00:06:35.695>So <00:06:35.951>to <00:06:36.207>start <00:06:36.464>off <00:06:36.721>with,

154
00:06:36.855 --> 00:06:39.955
<00:06:36.855>we <00:06:36.995>can <00:06:37.135>build <00:06:37.275>a <00:06:37.415>lot <00:06:37.555>more <00:06:37.695>engaging <00:06:37.835>progressive <00:06:37.975>web <00:06:38.115>apps <00:06:38.255>today

155
00:06:42.205 --> 00:06:45.425
<00:06:42.205>and <00:06:42.360>a <00:06:42.516>major <00:06:42.671>part <00:06:42.827>of <00:06:42.982>making <00:06:43.138>web <00:06:43.293>applications <00:06:43.449>engaging <00:06:43.604>is

156
00:06:45.425 --> 00:06:47.185
<00:06:45.425>having <00:06:45.891>reliable <00:06:46.358>push <00:06:46.825>notifications.

157
00:06:47.445 --> 00:06:49.305
<00:06:47.445>And <00:06:47.724>as <00:06:48.005>we <00:06:48.284>probably <00:06:48.565>all <00:06:48.844>experienced,

158
00:06:49.375 --> 00:06:51.665
<00:06:49.375>most <00:06:49.575>progressive <00:06:49.775>web <00:06:49.975>apps <00:06:50.175>definitely <00:06:50.375>have <00:06:50.575>this <00:06:50.775>feature

159
00:06:51.665 --> 00:06:52.705
<00:06:51.665>implemented <00:06:52.601>now.

160
00:06:53.645 --> 00:06:56.465
<00:06:53.645>And <00:06:53.878>um, <00:06:54.111>this <00:06:54.344>feature <00:06:54.578>of <00:06:54.811>push <00:06:55.044>notifications

161
00:06:56.485 --> 00:06:59.025
<00:06:56.485>as <00:06:56.660>a <00:06:56.835>whole <00:06:57.010>is <00:06:57.185>controlled <00:06:57.360>by <00:06:57.535>two <00:06:57.710>main <00:06:57.885>APIs.

162
00:06:59.045 --> 00:07:01.625
<00:06:59.045>So <00:06:59.278>we <00:06:59.511>have <00:06:59.745>the <00:06:59.978>web <00:07:00.211>notifications <00:07:00.445>API,

163
00:07:02.035 --> 00:07:03.785
<00:07:02.035>which <00:07:02.501>controls <00:07:02.968>the <00:07:03.435>permissions

164
00:07:03.805 --> 00:07:05.945
<00:07:03.805>and <00:07:04.038>the <00:07:04.271>display <00:07:04.505>of <00:07:04.738>a <00:07:04.971>notification <00:07:05.205>message.

165
00:07:06.485 --> 00:07:08.825
<00:07:06.485>And <00:07:06.625>then <00:07:06.765>we <00:07:06.905>have <00:07:07.045>the <00:07:07.185>push <00:07:07.325>API <00:07:07.465>which <00:07:07.605>allows <00:07:07.745>the <00:07:07.885>browser

166
00:07:08.845 --> 00:07:11.305
<00:07:08.845>to <00:07:09.078>receive <00:07:09.311>push <00:07:09.545>messages <00:07:09.778>from <00:07:10.011>a <00:07:10.245>server.

167
00:07:12.405 --> 00:07:13.985
<00:07:12.405>And <00:07:12.684>in <00:07:12.965>terms <00:07:13.244>of <00:07:13.525>support, <00:07:13.804>both

168
00:07:13.985 --> 00:07:16.865
<00:07:13.985>of <00:07:14.185>these <00:07:14.385>APIs <00:07:14.585>are <00:07:14.785>actually <00:07:14.985>relatively <00:07:15.185>well <00:07:15.385>supported.

169
00:07:17.645 --> 00:07:21.025
<00:07:17.645>The <00:07:17.820>only <00:07:17.995>major <00:07:18.169>market <00:07:18.344>missing <00:07:18.520>is <00:07:18.695>iOS <00:07:18.870>Safari, <00:07:19.044>which

170
00:07:21.245 --> 00:07:23.825
<00:07:21.245>as <00:07:21.400>we'll <00:07:21.556>see <00:07:21.711>is <00:07:21.867>a <00:07:22.022>bit <00:07:22.178>of <00:07:22.333>a <00:07:22.489>theme <00:07:22.645>unfortunately

171
00:07:24.325 --> 00:07:25.665
<00:07:24.325>and <00:07:24.727>is <00:07:25.129>quite <00:07:25.531>disappointing

172
00:07:25.665 --> 00:07:27.265
<00:07:25.665>because <00:07:25.865>it <00:07:26.065>is <00:07:26.265>like <00:07:26.465>such <00:07:26.665>a <00:07:26.865>big <00:07:27.065>market

173
00:07:27.365 --> 00:07:30.225
<00:07:27.365>and <00:07:27.505>there <00:07:27.645>aren't <00:07:27.785>really, <00:07:27.925>as <00:07:28.065>far <00:07:28.205>as <00:07:28.345>I <00:07:28.485>know, <00:07:28.625>any <00:07:28.765>signs

174
00:07:30.225 --> 00:07:31.265
<00:07:30.225>that <00:07:30.537>Apple <00:07:30.849>is <00:07:31.161>going

175
00:07:31.265 --> 00:07:33.985
<00:07:31.265>to <00:07:31.498>actually <00:07:31.731>implement <00:07:31.965>this <00:07:32.198>particular <00:07:32.431>web <00:07:32.664>standard.

176
00:07:35.135 --> 00:07:39.035
<00:07:35.135>Um, <00:07:35.275>the <00:07:35.414>only <00:07:35.555>real <00:07:35.695>solution <00:07:35.835>if <00:07:35.974>you <00:07:36.115>want <00:07:36.255>notifications <00:07:36.395>on <00:07:36.534>iOS

177
00:07:39.095 --> 00:07:42.035
<00:07:39.095>is <00:07:39.235>to <00:07:39.375>basically <00:07:39.515>just <00:07:39.655>wrap <00:07:39.795>your <00:07:39.935>progressive <00:07:40.075>web <00:07:40.215>app <00:07:40.355>in <00:07:40.495>a

178
00:07:42.035 --> 00:07:44.995
<00:07:42.034>native <00:07:42.174>iOS <00:07:42.314>app, <00:07:42.455>which <00:07:42.594>of <00:07:42.734>course <00:07:42.874>sort <00:07:43.015>of <00:07:43.155>defeats <00:07:43.294>the <00:07:43.434>purpose,

179
00:07:45.215 --> 00:07:48.475
<00:07:45.215>but <00:07:45.342>um, <00:07:45.469>it's <00:07:45.596>something <00:07:45.724>that <00:07:45.851>people <00:07:45.978>just <00:07:46.105>kind <00:07:46.233>of <00:07:46.360>have <00:07:46.487>to <00:07:46.615>do.

180
00:07:50.535 --> 00:07:52.955
<00:07:50.534>And <00:07:50.690>we <00:07:50.846>have <00:07:51.001>a <00:07:51.157>similar <00:07:51.312>story <00:07:51.468>for <00:07:51.623>the <00:07:51.779>Push <00:07:51.934>API.

181
00:07:52.975 --> 00:07:54.635
<00:07:52.975>The <00:07:53.255>support <00:07:53.535>is <00:07:53.815>essentially <00:07:54.095>the <00:07:54.375>same.

182
00:07:55.055 --> 00:07:57.835
<00:07:55.055>Um, <00:07:55.230>but <00:07:55.405>I <00:07:55.580>added <00:07:55.755>this <00:07:55.930>asterisk <00:07:56.105>for <00:07:56.280>Desktop <00:07:56.455>Safari

183
00:07:57.835 --> 00:07:59.915
<00:07:57.835>because <00:07:58.068>it <00:07:58.301>actually <00:07:58.534>does <00:07:58.768>support <00:07:59.001>a <00:07:59.234>form

184
00:08:00.015 --> 00:08:01.315
<00:08:00.015>of <00:08:00.599>push <00:08:01.185>notifications

185
00:08:01.375 --> 00:08:03.955
<00:08:01.375>but <00:08:01.550>it's <00:08:01.725>just <00:08:01.900>not <00:08:02.075>the <00:08:02.250>web <00:08:02.425>standard <00:08:02.600>like <00:08:02.775>a

186
00:08:03.955 --> 00:08:04.995
<00:08:03.955>custom <00:08:04.891>implementation.

187
00:08:06.955 --> 00:08:09.655
<00:08:06.955>So <00:08:07.155>to <00:08:07.354>go <00:08:07.555>along <00:08:07.755>with <00:08:07.955>push <00:08:08.155>notifications, <00:08:08.354>um,

188
00:08:09.895 --> 00:08:13.535
<00:08:09.895>progressive <00:08:10.034>web <00:08:10.174>apps <00:08:10.315>can <00:08:10.455>now <00:08:10.594>also <00:08:10.734>have <00:08:10.875>badge <00:08:11.015>app <00:08:11.155>badge <00:08:11.294>icons

189
00:08:13.645 --> 00:08:16.295
<00:08:13.645>that <00:08:13.800>let <00:08:13.956>you <00:08:14.111>know <00:08:14.267>when <00:08:14.422>you <00:08:14.578>have <00:08:14.733>like <00:08:14.889>unread <00:08:15.044>notifications.

190
00:08:16.675 --> 00:08:19.775
<00:08:16.675>And <00:08:16.830>this <00:08:16.986>is <00:08:17.141>available <00:08:17.297>both <00:08:17.452>to <00:08:17.608>desktop <00:08:17.763>progressive <00:08:17.919>web <00:08:18.075>apps

191
00:08:20.075 --> 00:08:23.175
<00:08:20.075>and <00:08:20.230>also <00:08:20.386>like <00:08:20.541>mobile <00:08:20.697>progressive <00:08:20.852>web <00:08:21.008>apps <00:08:21.163>and <00:08:21.319>on <00:08:21.474>mobile

192
00:08:23.355 --> 00:08:25.655
<00:08:23.355>and <00:08:23.510>some <00:08:23.666>devices <00:08:23.821>you <00:08:23.977>can <00:08:24.132>even <00:08:24.288>get <00:08:24.443>like <00:08:24.599>a <00:08:24.755>preview

193
00:08:25.715 --> 00:08:26.855
<00:08:25.715>of <00:08:26.228>the <00:08:26.741>notification

194
00:08:27.075 --> 00:08:29.615
<00:08:27.075>by <00:08:27.230>like <00:08:27.386>long <00:08:27.541>pressing <00:08:27.697>on <00:08:27.852>the <00:08:28.008>badge <00:08:28.163>icon <00:08:28.319>as <00:08:28.474>well.

195
00:08:31.155 --> 00:08:35.255
<00:08:31.155>And <00:08:31.271>the <00:08:31.388>API <00:08:31.505>behind <00:08:31.621>this <00:08:31.738>is <00:08:31.854>the <00:08:31.971>app <00:08:32.088>badging <00:08:32.204>API, <00:08:32.321>which <00:08:32.438>is <00:08:32.554>one

196
00:08:35.255 --> 00:08:37.055
<00:08:35.255>of <00:08:35.488>my <00:08:35.721>favorites <00:08:35.955>'cause <00:08:36.188>it's <00:08:36.421>really <00:08:36.655>simple

197
00:08:37.275 --> 00:08:39.775
<00:08:37.275>and <00:08:37.430>it's <00:08:37.586>just <00:08:37.741>these <00:08:37.897>two <00:08:38.052>methods <00:08:38.208>like <00:08:38.363>set <00:08:38.519>up <00:08:38.674>badge

198
00:08:39.835 --> 00:08:41.655
<00:08:39.835>and <00:08:40.068>clear <00:08:40.301>up <00:08:40.535>badge, <00:08:40.768>it's <00:08:41.001>like <00:08:41.235>great.

199
00:08:43.045 --> 00:08:44.785
<00:08:43.044>And <00:08:43.278>this <00:08:43.511>is <00:08:43.745>a <00:08:43.978>pretty <00:08:44.211>new <00:08:44.444>API.

200
00:08:44.785 --> 00:08:46.665
<00:08:44.785>It's <00:08:45.064>only <00:08:45.344>about <00:08:45.625>a <00:08:45.905>year <00:08:46.185>old

201
00:08:47.085 --> 00:08:49.705
<00:08:47.085>so <00:08:47.240>I <00:08:47.396>think <00:08:47.551>it <00:08:47.707>has <00:08:47.862>pretty <00:08:48.018>good <00:08:48.173>adoption <00:08:48.329>so <00:08:48.485>far.

202
00:08:50.405 --> 00:08:53.265
<00:08:50.405>And <00:08:50.560>um, <00:08:50.716>Mozilla, <00:08:50.871>which <00:08:51.027>is <00:08:51.182>like <00:08:51.338>the <00:08:51.493>last <00:08:51.649>major <00:08:51.805>browser

203
00:08:53.295 --> 00:08:55.565
<00:08:53.295>besides <00:08:53.495>Safari <00:08:53.694>that <00:08:53.895>has <00:08:54.094>yet <00:08:54.295>to <00:08:54.495>adopt <00:08:54.694>it,

204
00:08:55.875 --> 00:08:58.645
<00:08:55.875>they <00:08:56.015>will <00:08:56.155>also <00:08:56.295>already <00:08:56.435>like <00:08:56.575>marked <00:08:56.715>it <00:08:56.855>as <00:08:56.995>a <00:08:57.135>feature <00:08:57.275>kind

205
00:08:58.645 --> 00:09:00.845
<00:08:58.645>of <00:08:58.925>worth <00:08:59.204>looking <00:08:59.485>into <00:08:59.765>worth <00:09:00.045>prototyping.

206
00:09:00.865 --> 00:09:02.885
<00:09:00.865>So <00:09:01.040>we <00:09:01.215>see, <00:09:01.390>we <00:09:01.565>hope <00:09:01.740>to <00:09:01.915>see <00:09:02.090>this <00:09:02.265>um,

207
00:09:02.885 --> 00:09:04.765
<00:09:02.885>implemented <00:09:03.351>in <00:09:03.818>Firefox <00:09:04.285>soon.

208
00:09:06.805 --> 00:09:09.905
<00:09:06.805>So <00:09:06.960>progressive <00:09:07.116>web <00:09:07.271>apps <00:09:07.427>today <00:09:07.582>can <00:09:07.738>also <00:09:07.893>have <00:09:08.049>real <00:09:08.204>interaction

209
00:09:09.905 --> 00:09:12.105
<00:09:09.905>with <00:09:10.138>other <00:09:10.371>applications <00:09:10.605>installed <00:09:10.838>on <00:09:11.071>the <00:09:11.305>device.

210
00:09:13.085 --> 00:09:15.625
<00:09:13.085>So <00:09:13.285>we <00:09:13.485>can <00:09:13.685>now <00:09:13.885>share <00:09:14.085>data <00:09:14.285>both <00:09:14.485>from

211
00:09:15.765 --> 00:09:17.225
<00:09:15.765>and <00:09:16.093>to <00:09:16.422>progressive <00:09:16.750>web <00:09:17.079>apps.

212
00:09:17.525 --> 00:09:20.065
<00:09:17.525>So <00:09:17.652>for <00:09:17.779>example, <00:09:17.906>in <00:09:18.034>the <00:09:18.161>Twitter <00:09:18.288>app <00:09:18.415>you <00:09:18.543>can <00:09:18.670>share <00:09:18.797>a <00:09:18.925>tweet

213
00:09:20.125 --> 00:09:23.345
<00:09:20.125>to <00:09:20.280>other <00:09:20.436>applications <00:09:20.591>the <00:09:20.747>same <00:09:20.902>way <00:09:21.058>you <00:09:21.213>would <00:09:21.369>do <00:09:21.525>um,

214
00:09:23.495 --> 00:09:25.305
<00:09:23.495>from <00:09:23.775>like <00:09:24.055>the <00:09:24.335>native <00:09:24.615>mobile <00:09:24.895>application.

215
00:09:25.325 --> 00:09:27.705
<00:09:25.325>So <00:09:25.465>you <00:09:25.605>can <00:09:25.745>see <00:09:25.885>I'm <00:09:26.025>in <00:09:26.165>the <00:09:26.305>Twitter <00:09:26.445>progressive <00:09:26.585>web <00:09:26.725>app

216
00:09:27.705 --> 00:09:31.425
<00:09:27.705>and <00:09:27.832>I <00:09:27.959>can <00:09:28.086>share <00:09:28.214>this <00:09:28.341>tweet <00:09:28.468>to <00:09:28.595>like <00:09:28.723>this <00:09:28.850>Google <00:09:28.977>Notes <00:09:29.105>thing

217
00:09:32.935 --> 00:09:35.635
<00:09:32.935>and <00:09:33.109>this <00:09:33.285>is <00:09:33.459>enabled <00:09:33.635>by <00:09:33.810>the <00:09:33.984>web <00:09:34.160>share <00:09:34.334>API.

218
00:09:36.655 --> 00:09:39.315
<00:09:36.655>And <00:09:36.771>on <00:09:36.888>the <00:09:37.005>flip <00:09:37.121>side, <00:09:37.238>a <00:09:37.355>progressive <00:09:37.471>web <00:09:37.588>app <00:09:37.704>can <00:09:37.821>be <00:09:37.938>a <00:09:38.055>target

219
00:09:39.375 --> 00:09:40.955
<00:09:39.375>of <00:09:39.725>shares <00:09:40.075>from <00:09:40.425>other <00:09:40.775>applications.

220
00:09:41.615 --> 00:09:44.675
<00:09:41.615>So <00:09:41.770>here <00:09:41.926>I'm <00:09:42.081>the <00:09:42.237>like, <00:09:42.392>um, <00:09:42.548>we <00:09:42.703>are <00:09:42.859>dev <00:09:43.015>sites

221
00:09:44.855 --> 00:09:48.075
<00:09:44.855>and <00:09:44.982>I <00:09:45.109>can <00:09:45.236>share <00:09:45.364>that <00:09:45.491>link <00:09:45.618>to <00:09:45.745>the <00:09:45.873>Twitter <00:09:46.000>progressive <00:09:46.127>web <00:09:46.255>app

222
00:09:48.295 --> 00:09:50.315
<00:09:48.295>and <00:09:48.574>it <00:09:48.854>can <00:09:49.135>accept <00:09:49.415>that <00:09:49.694>information

223
00:09:50.535 --> 00:09:52.475
<00:09:50.535>and <00:09:50.768>like <00:09:51.001>handle <00:09:51.235>it <00:09:51.468>in <00:09:51.701>different <00:09:51.935>ways.

224
00:09:52.535 --> 00:09:54.555
<00:09:52.535>So <00:09:52.735>obviously <00:09:52.935>in <00:09:53.135>this <00:09:53.334>way <00:09:53.535>you <00:09:53.735>can <00:09:53.935>see

225
00:09:54.555 --> 00:09:56.875
<00:09:54.555>that <00:09:54.755>it's <00:09:54.954>creating <00:09:55.155>like <00:09:55.354>composing <00:09:55.555>a <00:09:55.755>new <00:09:55.954>tweet

226
00:09:57.335 --> 00:10:00.155
<00:09:57.335>and <00:09:57.490>this <00:09:57.646>is <00:09:57.801>achieved <00:09:57.957>with <00:09:58.112>the <00:09:58.268>web <00:09:58.423>shared <00:09:58.579>target <00:09:58.735>API,

227
00:10:00.155 --> 00:10:01.795
<00:10:00.155>which <00:10:00.435>is <00:10:00.714>in <00:10:00.995>our <00:10:01.275>manifest <00:10:01.555>file.

228
00:10:02.255 --> 00:10:03.795
<00:10:02.255>So <00:10:02.532>we <00:10:02.809>define <00:10:03.086>like <00:10:03.363>what <00:10:03.641>types

229
00:10:03.795 --> 00:10:05.635
<00:10:03.795>of <00:10:03.995>data <00:10:04.194>the <00:10:04.395>progressive <00:10:04.594>web <00:10:04.795>app <00:10:04.995>can <00:10:05.194>accept

230
00:10:05.655 --> 00:10:07.355
<00:10:05.655>and <00:10:05.829>what <00:10:06.005>to <00:10:06.180>do <00:10:06.355>when <00:10:06.530>that <00:10:06.704>data <00:10:06.880>is <00:10:07.055>received.

231
00:10:07.415 --> 00:10:11.195
<00:10:07.415>So <00:10:07.555>in <00:10:07.694>this <00:10:07.834>example <00:10:07.974>it <00:10:08.115>goes <00:10:08.255>to <00:10:08.395>the <00:10:08.535>composed <00:10:08.675>tweet <00:10:08.814>path

232
00:10:13.655 --> 00:10:15.715
<00:10:13.655>and <00:10:13.888>the <00:10:14.121>support <00:10:14.355>for <00:10:14.588>the <00:10:14.821>Webshare <00:10:15.055>API.

233
00:10:15.715 --> 00:10:17.515
<00:10:15.715>So <00:10:15.948>going <00:10:16.181>from <00:10:16.415>our <00:10:16.648>progressive <00:10:16.881>web <00:10:17.115>app

234
00:10:17.535 --> 00:10:21.595
<00:10:17.535>to <00:10:17.675>other <00:10:17.814>apps <00:10:17.954>is <00:10:18.094>pretty <00:10:18.235>good <00:10:18.375>and <00:10:18.515>for <00:10:18.655>the <00:10:18.795>webshare <00:10:18.935>target.

235
00:10:21.695 --> 00:10:24.035
<00:10:21.695>So <00:10:21.850>the <00:10:22.006>other <00:10:22.161>way <00:10:22.317>around <00:10:22.472>the <00:10:22.628>support <00:10:22.783>isn't <00:10:22.939>as <00:10:23.095>clear

236
00:10:24.575 --> 00:10:26.915
<00:10:24.575>but <00:10:24.750>we <00:10:24.925>know <00:10:25.100>for <00:10:25.275>sure <00:10:25.450>that <00:10:25.625>supported <00:10:25.800>increment <00:10:25.975>edge

237
00:10:26.915 --> 00:10:29.435
<00:10:26.915>and <00:10:27.070>we <00:10:27.226>know <00:10:27.381>that <00:10:27.537>it's <00:10:27.692>not <00:10:27.848>supported <00:10:28.003>in <00:10:28.159>Safari <00:10:28.314>yet.

238
00:10:30.335 --> 00:10:32.995
<00:10:30.335>But <00:10:30.490>um, <00:10:30.646>the <00:10:30.801>other <00:10:30.957>browsers <00:10:31.112>are <00:10:31.268>still <00:10:31.423>a <00:10:31.579>bit <00:10:31.735>unclear.

239
00:10:34.965 --> 00:10:38.225
<00:10:34.965>And <00:10:35.120>in <00:10:35.276>terms <00:10:35.431>of <00:10:35.587>capabilities, <00:10:35.742>perhaps <00:10:35.898>the <00:10:36.053>most <00:10:36.209>impressive <00:10:36.365>is

240
00:10:38.225 --> 00:10:40.465
<00:10:38.225>that <00:10:38.400>progressive <00:10:38.575>web <00:10:38.750>apps <00:10:38.925>today <00:10:39.100>can <00:10:39.275>have <00:10:39.450>like <00:10:39.625>real

241
00:10:40.525 --> 00:10:41.665
<00:10:40.525>access <00:10:40.867>to <00:10:41.209>the <00:10:41.550>device.

242
00:10:42.645 --> 00:10:45.465
<00:10:42.645>And <00:10:42.772>this <00:10:42.899>can <00:10:43.026>be <00:10:43.154>something, <00:10:43.281>it <00:10:43.408>can <00:10:43.535>be <00:10:43.663>from <00:10:43.790>something <00:10:43.917>as <00:10:44.045>small

243
00:10:45.485 --> 00:10:48.425
<00:10:45.485>as <00:10:45.660>like <00:10:45.835>detecting <00:10:46.010>which <00:10:46.185>color <00:10:46.360>scheme <00:10:46.535>the <00:10:46.710>user <00:10:46.885>prefers.

244
00:10:48.645 --> 00:10:51.545
<00:10:48.645>And <00:10:48.785>this <00:10:48.925>is <00:10:49.064>done <00:10:49.204>with <00:10:49.345>the <00:10:49.485>prefers <00:10:49.625>color <00:10:49.765>scheme <00:10:49.905>media <00:10:50.045>query

245
00:10:52.525 --> 00:10:55.385
<00:10:52.525>or <00:10:52.665>actually <00:10:52.805>being <00:10:52.944>able <00:10:53.084>to <00:10:53.225>access <00:10:53.365>the <00:10:53.505>contacts <00:10:53.645>on <00:10:53.785>the <00:10:53.925>device

246
00:10:55.385 --> 00:10:56.505
<00:10:55.385>with <00:10:55.721>the <00:10:56.057>contact <00:10:56.393>picker.

247
00:10:56.845 --> 00:10:58.785
<00:10:56.845>And <00:10:57.020>this <00:10:57.195>is <00:10:57.370>an <00:10:57.545>app <00:10:57.720>that <00:10:57.895>actually <00:10:58.070>just <00:10:58.245>demos

248
00:10:58.785 --> 00:11:00.065
<00:10:58.785>how <00:10:59.073>this <00:10:59.361>contact <00:10:59.649>picker <00:10:59.937>works.

249
00:11:00.205 --> 00:11:02.305
<00:11:00.205>So <00:11:00.405>we <00:11:00.605>can <00:11:00.805>select <00:11:01.005>which <00:11:01.205>fields <00:11:01.405>we <00:11:01.605>want

250
00:11:02.365 --> 00:11:05.745
<00:11:02.365>to <00:11:02.505>extract <00:11:02.645>from <00:11:02.785>the <00:11:02.925>contacts <00:11:03.065>book <00:11:03.205>display <00:11:03.345>and <00:11:03.485>it <00:11:03.625>just <00:11:03.765>works.

251
00:11:07.045 --> 00:11:10.625
<00:11:07.045>Or <00:11:07.219>even <00:11:07.395>more <00:11:07.569>impressively <00:11:07.745>progressive <00:11:07.920>WebOps <00:11:08.094>can <00:11:08.270>now <00:11:08.444>read

252
00:11:10.625 --> 00:11:12.345
<00:11:10.625>and <00:11:10.858>write <00:11:11.091>to <00:11:11.325>files <00:11:11.558>on <00:11:11.791>the <00:11:12.025>device

253
00:11:12.525 --> 00:11:15.945
<00:11:12.525>or <00:11:12.725>like <00:11:12.925>um, <00:11:13.125>actually <00:11:13.324>interact <00:11:13.525>with <00:11:13.725>those <00:11:13.925>files.

254
00:11:16.125 --> 00:11:19.185
<00:11:16.125>So <00:11:16.280>um, <00:11:16.436>a <00:11:16.591>great <00:11:16.747>example <00:11:16.902>of <00:11:17.058>this <00:11:17.213>is <00:11:17.369>Photo <00:11:17.525>pia,

255
00:11:19.185 --> 00:11:21.505
<00:11:19.185>which <00:11:19.464>is <00:11:19.744>a <00:11:20.025>Photoshop <00:11:20.305>style <00:11:20.584>application

256
00:11:21.505 --> 00:11:23.105
<00:11:21.505>that <00:11:21.785>runs <00:11:22.064>entirely <00:11:22.345>in <00:11:22.625>the <00:11:22.905>browser,

257
00:11:23.275 --> 00:11:25.625
<00:11:23.275>which <00:11:23.741>is <00:11:24.208>incredibly <00:11:24.675>impressive.

258
00:11:26.165 --> 00:11:29.865
<00:11:26.165>So <00:11:26.272>what <00:11:26.380>we <00:11:26.488>can <00:11:26.595>do <00:11:26.703>is <00:11:26.811>like <00:11:26.918>read <00:11:27.026>a <00:11:27.134>file <00:11:27.241>like <00:11:27.349>locally <00:11:27.457>from <00:11:27.564>the

259
00:11:29.865 --> 00:11:31.665
<00:11:29.865>device <00:11:30.145>edited <00:11:30.425>and <00:11:30.705>then <00:11:30.985>save <00:11:31.265>back

260
00:11:31.665 --> 00:11:33.505
<00:11:31.665>to <00:11:31.898>it <00:11:32.131>from <00:11:32.365>the <00:11:32.598>progressive <00:11:32.831>web <00:11:33.064>app,

261
00:11:33.505 --> 00:11:35.105
<00:11:33.505>which <00:11:33.855>is <00:11:34.205>like <00:11:34.555>absolutely <00:11:34.905>amazing.

262
00:11:37.165 --> 00:11:40.105
<00:11:37.165>And <00:11:37.339>um, <00:11:37.515>all <00:11:37.689>these <00:11:37.865>APIs <00:11:38.040>are <00:11:38.214>pretty <00:11:38.390>well <00:11:38.564>supported.

263
00:11:40.125 --> 00:11:42.385
<00:11:40.125>So <00:11:40.325>first <00:11:40.525>Color <00:11:40.725>scheme <00:11:40.925>has <00:11:41.125>the <00:11:41.325>most <00:11:41.525>support

264
00:11:42.665 --> 00:11:43.745
<00:11:42.665>'cause <00:11:42.908>it's <00:11:43.151>a <00:11:43.394>CSS <00:11:43.637>thing

265
00:11:43.745 --> 00:11:45.945
<00:11:43.745>and <00:11:43.945>it's <00:11:44.145>also <00:11:44.345>been <00:11:44.545>around <00:11:44.745>longest <00:11:44.945>I <00:11:45.145>think

266
00:11:46.495 --> 00:11:47.985
<00:11:46.495>then <00:11:46.942>the <00:11:47.389>contacts <00:11:47.836>API,

267
00:11:47.985 --> 00:11:50.065
<00:11:47.985>this <00:11:48.218>is <00:11:48.451>only <00:11:48.685>available <00:11:48.918>on <00:11:49.151>mobile <00:11:49.385>browsers.

268
00:11:50.135 --> 00:11:52.305
<00:11:50.135>It's <00:11:50.335>also <00:11:50.535>pretty <00:11:50.735>well <00:11:50.935>supported <00:11:51.135>with <00:11:51.335>the <00:11:51.535>exception

269
00:11:52.305 --> 00:11:54.685
<00:11:52.305>of <00:11:52.584>Firefox <00:11:52.864>and <00:11:53.145>I <00:11:53.425>iOS <00:11:53.704>Safari.

270
00:11:56.805 --> 00:11:59.945
<00:11:56.805>And <00:11:56.944>then <00:11:57.084>the <00:11:57.224>file <00:11:57.364>system <00:11:57.505>Access <00:11:57.645>API <00:11:57.785>has <00:11:57.925>the <00:11:58.064>most <00:11:58.204>limited

271
00:12:00.055 --> 00:12:02.185
<00:12:00.055>support <00:12:00.334>which <00:12:00.614>is <00:12:00.895>to <00:12:01.175>be <00:12:01.454>expected

272
00:12:02.185 --> 00:12:04.825
<00:12:02.185>because <00:12:02.418>it <00:12:02.651>was <00:12:02.885>only <00:12:03.118>um, <00:12:03.351>recently <00:12:03.584>released

273
00:12:04.845 --> 00:12:06.945
<00:12:04.845>and <00:12:05.045>it's <00:12:05.245>also <00:12:05.445>obviously <00:12:05.645>a <00:12:05.845>lot <00:12:06.045>more <00:12:06.245>complex.

274
00:12:08.895 --> 00:12:11.435
<00:12:08.895>So <00:12:09.069>finally <00:12:09.245>progressive <00:12:09.420>web <00:12:09.595>apps <00:12:09.770>can <00:12:09.944>now <00:12:10.120>also <00:12:10.295>exist

275
00:12:11.535 --> 00:12:14.755
<00:12:11.535>and <00:12:11.735>work <00:12:11.935>without <00:12:12.135>the <00:12:12.334>user <00:12:12.535>being <00:12:12.735>like <00:12:12.935>actually

276
00:12:14.775 --> 00:12:15.995
<00:12:14.775>active <00:12:15.141>in <00:12:15.507>the <00:12:15.873>browser.

277
00:12:16.935 --> 00:12:20.115
<00:12:16.935>So <00:12:17.074>classic <00:12:17.214>example <00:12:17.354>of <00:12:17.494>this <00:12:17.635>is <00:12:17.775>displaying <00:12:17.915>the <00:12:18.055>status <00:12:18.194>of <00:12:18.334>media

278
00:12:20.135 --> 00:12:22.915
<00:12:20.135>that's <00:12:20.310>playing <00:12:20.485>in <00:12:20.660>the <00:12:20.835>background <00:12:21.010>within <00:12:21.185>the <00:12:21.360>system <00:12:21.535>ui.

279
00:12:24.175 --> 00:12:26.715
<00:12:24.175>And <00:12:24.330>this <00:12:24.486>is <00:12:24.641>made <00:12:24.797>possible <00:12:24.952>with <00:12:25.108>the <00:12:25.263>media <00:12:25.419>session <00:12:25.574>API,

280
00:12:26.715 --> 00:12:29.475
<00:12:26.715>which <00:12:26.870>lets <00:12:27.026>us <00:12:27.181>define <00:12:27.337>metadata <00:12:27.492>about <00:12:27.648>a <00:12:27.803>piece <00:12:27.959>of <00:12:28.115>media

281
00:12:29.475 --> 00:12:30.555
<00:12:29.475>that's <00:12:29.961>being <00:12:30.447>played

282
00:12:31.375 --> 00:12:34.595
<00:12:31.375>and <00:12:31.550>has <00:12:31.725>pretty <00:12:31.900>significant <00:12:32.075>support <00:12:32.250>across <00:12:32.425>the <00:12:32.600>major <00:12:32.775>browsers

283
00:12:35.975 --> 00:12:38.995
<00:12:35.975>and <00:12:36.102>we <00:12:36.229>can <00:12:36.356>also <00:12:36.484>have <00:12:36.611>more <00:12:36.738>long <00:12:36.865>running <00:12:36.993>tasks <00:12:37.120>running <00:12:37.247>in <00:12:37.375>the

284
00:12:38.995 --> 00:12:41.795
<00:12:38.995>background <00:12:39.170>even <00:12:39.345>if <00:12:39.520>the <00:12:39.695>user <00:12:39.870>actually <00:12:40.045>closes <00:12:40.220>the <00:12:40.395>tab

285
00:12:41.795 --> 00:12:42.995
<00:12:41.795>that <00:12:42.155>initiated <00:12:42.515>the <00:12:42.875>task.

286
00:12:43.215 --> 00:12:46.885
<00:12:43.215>So <00:12:43.370>in <00:12:43.526>this <00:12:43.681>example <00:12:43.837>we <00:12:43.992>can <00:12:44.148>see <00:12:44.303>how <00:12:44.459>the <00:12:44.615>download

287
00:12:46.885 --> 00:12:51.125
<00:12:46.885>of <00:12:47.001>the <00:12:47.118>latest <00:12:47.235>episode <00:12:47.351>of <00:12:47.468>this <00:12:47.585>um, <00:12:47.701>HT <00:12:47.818>HTTP <00:12:47.935>2 <00:12:48.051>0 <00:12:48.168>3 <00:12:48.285>podcast,

288
00:12:51.625 --> 00:12:53.805
<00:12:51.625>it <00:12:51.800>still <00:12:51.975>continues <00:12:52.150>even <00:12:52.325>if <00:12:52.500>I <00:12:52.675>close <00:12:52.850>the <00:12:53.025>browser

289
00:12:53.945 --> 00:12:56.565
<00:12:53.945>and <00:12:54.145>even <00:12:54.345>without <00:12:54.545>the <00:12:54.745>progressive <00:12:54.945>web <00:12:55.145>app <00:12:55.345>actually

290
00:12:56.565 --> 00:12:57.725
<00:12:56.565>installed <00:12:56.913>to <00:12:57.261>the <00:12:57.609>device.

291
00:12:57.725 --> 00:13:00.085
<00:12:57.725>So <00:12:57.900>it's <00:12:58.075>basically <00:12:58.250>just <00:12:58.425>a <00:12:58.600>browser <00:12:58.775>tab <00:12:58.950>I <00:12:59.125>opened,

292
00:13:00.245 --> 00:13:02.805
<00:13:00.245>I <00:13:00.478>downloaded <00:13:00.711>something <00:13:00.945>or <00:13:01.178>started <00:13:01.411>downloading <00:13:01.645>something,

293
00:13:03.085 --> 00:13:05.485
<00:13:03.085>I <00:13:03.225>closed <00:13:03.365>the <00:13:03.505>browser <00:13:03.645>tab <00:13:03.785>but <00:13:03.925>the <00:13:04.065>download <00:13:04.205>is <00:13:04.345>actually <00:13:04.485>still

294
00:13:05.715 --> 00:13:09.445
<00:13:05.715>ongoing <00:13:05.995>and <00:13:06.275>this <00:13:06.555>is <00:13:06.835>made <00:13:07.115>possible

295
00:13:09.445 --> 00:13:10.965
<00:13:09.445>with <00:13:09.787>the <00:13:10.129>background <00:13:10.471>fetch <00:13:10.813>API.

296
00:13:11.105 --> 00:13:14.405
<00:13:11.105>And <00:13:11.260>this <00:13:11.416>is <00:13:11.571>another <00:13:11.727>API <00:13:11.882>that's <00:13:12.038>actually <00:13:12.193>been <00:13:12.349>quite <00:13:12.505>arou

297
00:13:14.425 --> 00:13:16.085
<00:13:14.425>around <00:13:14.704>for <00:13:14.984>like <00:13:15.265>quite <00:13:15.545>a <00:13:15.824>bit

298
00:13:16.345 --> 00:13:18.045
<00:13:16.345>and <00:13:16.695>is <00:13:17.045>relatively <00:13:17.395>well <00:13:17.745>supported.

299
00:13:18.785 --> 00:13:20.525
<00:13:18.785>But <00:13:19.251>despite <00:13:19.718>this <00:13:20.185>um,

300
00:13:20.595 --> 00:13:23.565
<00:13:20.595>support <00:13:20.735>the <00:13:20.875>API <00:13:21.015>doesn't <00:13:21.155>actually <00:13:21.295>seem <00:13:21.435>to <00:13:21.575>be <00:13:21.715>used <00:13:21.855>a <00:13:21.995>lot.

301
00:13:23.595 --> 00:13:26.085
<00:13:23.595>Like <00:13:23.828>I <00:13:24.061>was <00:13:24.295>actually <00:13:24.528>quite <00:13:24.761>hard <00:13:24.995>pressed

302
00:13:26.105 --> 00:13:27.605
<00:13:26.105>to <00:13:26.442>find <00:13:26.780>real <00:13:27.117>world <00:13:27.455>examples

303
00:13:27.725 --> 00:13:30.125
<00:13:27.725>that <00:13:27.900>actually <00:13:28.075>use <00:13:28.250>this <00:13:28.425>even <00:13:28.600>though <00:13:28.775>I <00:13:28.950>could <00:13:29.125>think

304
00:13:30.125 --> 00:13:31.365
<00:13:30.125>of <00:13:30.404>plenty <00:13:30.683>real <00:13:30.962>world <00:13:31.241>sites

305
00:13:31.365 --> 00:13:33.445
<00:13:31.365>that <00:13:31.598>could <00:13:31.831>probably <00:13:32.065>should <00:13:32.298>be <00:13:32.531>using <00:13:32.765>this.

306
00:13:33.905 --> 00:13:35.565
<00:13:33.905>And <00:13:34.185>unfortunately <00:13:34.464>this <00:13:34.745>is <00:13:35.025>a <00:13:35.305>bit

307
00:13:35.565 --> 00:13:37.405
<00:13:35.565>of <00:13:35.740>a <00:13:35.915>theme <00:13:36.090>across <00:13:36.265>a <00:13:36.440>lot <00:13:36.615>of <00:13:36.790>the <00:13:36.965>capabilities.

308
00:13:38.105 --> 00:13:41.965
<00:13:38.105>For <00:13:38.260>example, <00:13:38.416>with <00:13:38.571>the <00:13:38.727>periodic <00:13:38.882>background <00:13:39.038>sync <00:13:39.193>API, <00:13:39.349>we <00:13:39.505>can

309
00:13:42.105 --> 00:13:44.765
<00:13:42.105>as <00:13:42.305>you <00:13:42.505>might <00:13:42.705>guess <00:13:42.905>per <00:13:43.105>perform <00:13:43.305>sync <00:13:43.505>tasks

310
00:13:44.805 --> 00:13:46.565
<00:13:44.805>periodically <00:13:45.271>in <00:13:45.738>the <00:13:46.204>background.

311
00:13:47.145 --> 00:13:49.765
<00:13:47.145>Um, <00:13:47.300>this <00:13:47.456>is <00:13:47.611>just <00:13:47.767>really <00:13:47.922>useful <00:13:48.078>for <00:13:48.233>keeping <00:13:48.389>apps <00:13:48.545>fresh

312
00:13:49.765 --> 00:13:52.325
<00:13:49.765>and <00:13:49.892>up <00:13:50.019>to <00:13:50.146>date <00:13:50.274>even <00:13:50.401>if <00:13:50.528>the <00:13:50.655>user <00:13:50.783>hasn't <00:13:50.910>actually <00:13:51.037>even <00:13:51.165>opened

313
00:13:52.385 --> 00:13:53.405
<00:13:52.385>it <00:13:52.614>up <00:13:52.843>in <00:13:53.073>a <00:13:53.303>while.

314
00:13:54.425 --> 00:13:57.045
<00:13:54.425>The <00:13:54.580>support <00:13:54.736>for <00:13:54.891>this <00:13:55.047>a <00:13:55.202>PII <00:13:55.358>think <00:13:55.513>is <00:13:55.669>significant <00:13:55.824>enough

315
00:13:57.045 --> 00:13:58.965
<00:13:57.045>for <00:13:57.245>a <00:13:57.444>lot <00:13:57.645>of <00:13:57.844>platforms <00:13:58.045>to <00:13:58.245>actually <00:13:58.444>adopt,

316
00:13:59.385 --> 00:14:01.765
<00:13:59.385>but <00:13:59.560>the <00:13:59.735>usage <00:13:59.910>of <00:14:00.085>the <00:14:00.260>feature <00:14:00.435>is <00:14:00.610>super <00:14:00.785>slim

317
00:14:01.865 --> 00:14:04.485
<00:14:01.865>and <00:14:02.020>it's <00:14:02.176>basically <00:14:02.331>just <00:14:02.487>a <00:14:02.642>reminder <00:14:02.798>that <00:14:02.953>there's <00:14:03.109>two <00:14:03.265>parts

318
00:14:04.505 --> 00:14:07.245
<00:14:04.505>to <00:14:04.705>making <00:14:04.905>progressive <00:14:05.105>web <00:14:05.305>apps <00:14:05.505>more <00:14:05.705>capable <00:14:05.905>in

319
00:14:07.245 --> 00:14:10.045
<00:14:07.245>that <00:14:07.400>the <00:14:07.556>browsers <00:14:07.711>implement <00:14:07.867>the <00:14:08.022>feature <00:14:08.178>in <00:14:08.333>the <00:14:08.489>first <00:14:08.645>place.

320
00:14:10.145 --> 00:14:12.045
<00:14:10.145>But <00:14:10.378>then <00:14:10.611>as <00:14:10.845>developers <00:14:11.078>we <00:14:11.311>also <00:14:11.545>have

321
00:14:12.045 --> 00:14:14.125
<00:14:12.045>to <00:14:12.200>like <00:14:12.356>implement <00:14:12.511>them <00:14:12.667>in <00:14:12.822>the <00:14:12.978>sites <00:14:13.133>that <00:14:13.289>we <00:14:13.444>build.

322
00:14:15.845 --> 00:14:18.305
<00:14:15.845>So <00:14:16.020>the <00:14:16.195>APIs <00:14:16.370>I've <00:14:16.545>mentioned <00:14:16.720>are <00:14:16.895>just <00:14:17.070>a <00:14:17.245>snapshot

323
00:14:18.305 --> 00:14:20.905
<00:14:18.305>of <00:14:18.479>what's <00:14:18.655>available <00:14:18.829>and <00:14:19.005>if <00:14:19.180>you're <00:14:19.354>interested <00:14:19.530>in <00:14:19.704>seeing

324
00:14:20.905 --> 00:14:22.265
<00:14:20.905>what's <00:14:21.211>shipped <00:14:21.516>and <00:14:21.823>what's <00:14:22.129>upcoming,

325
00:14:22.525 --> 00:14:25.225
<00:14:22.525>I'd <00:14:22.699>recommend <00:14:22.875>you <00:14:23.050>check <00:14:23.225>out <00:14:23.400>this <00:14:23.574>Fugu <00:14:23.750>Tracker <00:14:23.925>website,

326
00:14:25.225 --> 00:14:28.025
<00:14:25.225>which <00:14:25.400>is <00:14:25.575>of <00:14:25.750>course <00:14:25.925>itself <00:14:26.100>a <00:14:26.275>progressive <00:14:26.450>web <00:14:26.625>app.

327
00:14:29.485 --> 00:14:31.905
<00:14:29.485>So <00:14:29.718>where <00:14:29.951>are <00:14:30.185>we <00:14:30.418>with <00:14:30.651>capabilities <00:14:30.885>today?

328
00:14:32.085 --> 00:14:34.585
<00:14:32.085>So <00:14:32.225>as <00:14:32.365>we've <00:14:32.505>seen <00:14:32.645>a <00:14:32.785>lot <00:14:32.925>of <00:14:33.065>progress <00:14:33.205>has <00:14:33.345>been <00:14:33.485>made

329
00:14:34.585 --> 00:14:37.425
<00:14:34.585>and <00:14:34.740>I <00:14:34.896>think <00:14:35.051>we're <00:14:35.207>getting <00:14:35.362>pretty <00:14:35.518>close <00:14:35.673>to <00:14:35.829>feature <00:14:35.985>parity

330
00:14:37.575 --> 00:14:38.825
<00:14:37.575>with <00:14:38.137>native <00:14:38.700>applications.

331
00:14:39.175 --> 00:14:42.585
<00:14:39.175>However, <00:14:39.375>not <00:14:39.574>all <00:14:39.775>platforms <00:14:39.974>have <00:14:40.175>made <00:14:40.375>progress <00:14:40.574>equally.

332
00:14:44.265 --> 00:14:46.325
<00:14:44.265>And <00:14:44.498>another <00:14:44.731>sort <00:14:44.965>of <00:14:45.198>drawback <00:14:45.431>is <00:14:45.665>that

333
00:14:46.325 --> 00:14:49.165
<00:14:46.325>with <00:14:46.480>the <00:14:46.636>speed <00:14:46.791>at <00:14:46.947>which <00:14:47.102>new <00:14:47.258>features <00:14:47.413>have <00:14:47.569>been <00:14:47.725>um,

334
00:14:49.715 --> 00:14:53.045
<00:14:49.715>implemented, <00:14:49.915>there <00:14:50.115>hasn't <00:14:50.315>actually <00:14:50.515>been <00:14:50.715>as <00:14:50.915>much <00:14:51.115>usage

335
00:14:53.105 --> 00:14:55.445
<00:14:53.105>to <00:14:53.305>catch <00:14:53.505>up, <00:14:53.705>um, <00:14:53.905>as <00:14:54.105>we <00:14:54.305>would <00:14:54.505>like.

336
00:14:56.385 --> 00:14:57.525
<00:14:56.385>But <00:14:56.556>all <00:14:56.727>in <00:14:56.898>all <00:14:57.069>I <00:14:57.240>would <00:14:57.411>say

337
00:14:57.525 --> 00:15:00.005
<00:14:57.525>that <00:14:57.725>progressive <00:14:57.925>web <00:14:58.125>apps <00:14:58.324>today <00:14:58.525>are <00:14:58.725>very <00:14:58.925>capable.

338
00:15:01.855 --> 00:15:04.435
<00:15:01.855>So <00:15:02.055>next, <00:15:02.255>how <00:15:02.455>reliable <00:15:02.655>are <00:15:02.855>progressive <00:15:03.055>web <00:15:03.255>apps?

339
00:15:05.095 --> 00:15:06.875
<00:15:05.095>And <00:15:05.295>a <00:15:05.495>major <00:15:05.695>part <00:15:05.895>of <00:15:06.095>this <00:15:06.295>question <00:15:06.495>is,

340
00:15:07.135 --> 00:15:08.795
<00:15:07.135>is <00:15:07.601>service <00:15:08.068>worker <00:15:08.535>ready?

341
00:15:09.615 --> 00:15:12.475
<00:15:09.615>And <00:15:09.755>I'm <00:15:09.895>really <00:15:10.035>happy <00:15:10.175>to <00:15:10.315>say <00:15:10.455>that <00:15:10.595>the <00:15:10.735>answer <00:15:10.875>is <00:15:11.015>yes.

342
00:15:13.935 --> 00:15:16.315
<00:15:13.935>So <00:15:14.051>as <00:15:14.168>you <00:15:14.285>can <00:15:14.401>see, <00:15:14.518>we're <00:15:14.635>in <00:15:14.751>a <00:15:14.868>much <00:15:14.984>better <00:15:15.101>position <00:15:15.218>in <00:15:15.334>terms

343
00:15:16.315 --> 00:15:18.275
<00:15:16.315>of <00:15:16.548>support <00:15:16.781>for <00:15:17.015>service <00:15:17.248>workers <00:15:17.481>today <00:15:17.715>than

344
00:15:18.275 --> 00:15:19.395
<00:15:18.275>we <00:15:18.526>were <00:15:18.779>five <00:15:19.031>years <00:15:19.283>ago.

345
00:15:20.105 --> 00:15:22.475
<00:15:20.105>Essentially <00:15:20.305>every <00:15:20.505>browser <00:15:20.705>that's <00:15:20.905>going <00:15:21.105>to <00:15:21.305>support <00:15:21.505>it

346
00:15:22.535 --> 00:15:24.035
<00:15:22.535>and <00:15:22.805>should <00:15:23.074>support <00:15:23.344>it <00:15:23.615>already <00:15:23.885>does

347
00:15:25.175 --> 00:15:28.275
<00:15:25.175>and <00:15:25.314>we <00:15:25.454>also <00:15:25.594>have <00:15:25.734>a <00:15:25.875>lot <00:15:26.015>better <00:15:26.155>tools <00:15:26.295>for <00:15:26.435>like, <00:15:26.574>um,

348
00:15:28.275 --> 00:15:30.475
<00:15:28.275>understanding <00:15:28.625>the <00:15:28.975>service <00:15:29.324>worker <00:15:29.675>lifecycle

349
00:15:30.655 --> 00:15:32.555
<00:15:30.655>and <00:15:31.005>debugging <00:15:31.355>what's <00:15:31.704>going <00:15:32.055>on.

350
00:15:33.055 --> 00:15:35.595
<00:15:33.055>So <00:15:33.182>in <00:15:33.309>this <00:15:33.436>demo <00:15:33.564>Progressive <00:15:33.691>web <00:15:33.818>app, <00:15:33.945>you <00:15:34.073>can <00:15:34.200>kind <00:15:34.327>of <00:15:34.454>see

351
00:15:35.775 --> 00:15:39.395
<00:15:35.775>how <00:15:35.975>the <00:15:36.175>um, <00:15:36.375>background <00:15:36.574>sync <00:15:36.775>event <00:15:36.975>is <00:15:37.175>recorded

352
00:15:39.615 --> 00:15:41.115
<00:15:39.615>and <00:15:39.885>see <00:15:40.155>like <00:15:40.425>when <00:15:40.695>it's <00:15:40.965>triggered,

353
00:15:41.115 --> 00:15:42.915
<00:15:41.115>when <00:15:41.315>it's <00:15:41.515>dispatched <00:15:41.715>and <00:15:41.915>basically <00:15:42.115>all <00:15:42.315>of <00:15:42.515>that.

354
00:15:44.545 --> 00:15:47.005
<00:15:44.545>And <00:15:44.745>we <00:15:44.944>also <00:15:45.145>have <00:15:45.344>a <00:15:45.545>famous <00:15:45.745>uh, <00:15:45.944>solution

355
00:15:47.005 --> 00:15:49.205
<00:15:47.005>to <00:15:47.285>the <00:15:47.564>infamous <00:15:47.845>problem <00:15:48.125>of <00:15:48.405>um,

356
00:15:49.205 --> 00:15:51.485
<00:15:49.205>the <00:15:49.380>service <00:15:49.555>worker <00:15:49.730>never <00:15:49.905>updating, <00:15:50.080>which <00:15:50.255>of <00:15:50.430>course <00:15:50.605>is

357
00:15:51.485 --> 00:15:53.285
<00:15:51.485>to <00:15:51.765>skip <00:15:52.045>the <00:15:52.325>waiting <00:15:52.605>stage <00:15:52.885>entirely.

358
00:15:54.065 --> 00:15:56.445
<00:15:54.065>But <00:15:54.265>I <00:15:54.465>would <00:15:54.665>say <00:15:54.865>the <00:15:55.065>most <00:15:55.265>significant <00:15:55.465>improvements

359
00:15:56.465 --> 00:15:59.405
<00:15:56.465>to <00:15:56.620>the <00:15:56.776>experience <00:15:56.931>of <00:15:57.087>writing <00:15:57.242>service <00:15:57.398>worker <00:15:57.553>code <00:15:57.709>is <00:15:57.865>the

360
00:15:59.605 --> 00:16:01.365
<00:15:59.605>introduction <00:15:59.885>of <00:16:00.165>tools <00:16:00.445>like <00:16:00.725>Work <00:16:01.005>Box

361
00:16:01.465 --> 00:16:04.205
<00:16:01.465>and <00:16:01.620>this <00:16:01.776>is <00:16:01.931>just <00:16:02.087>a <00:16:02.242>great <00:16:02.398>library <00:16:02.553>that <00:16:02.709>makes <00:16:02.865>interfacing

362
00:16:04.205 --> 00:16:06.045
<00:16:04.205>with <00:16:04.485>service <00:16:04.765>worker <00:16:05.045>codes <00:16:05.325>much <00:16:05.605>easier

363
00:16:06.345 --> 00:16:07.805
<00:16:06.345>and <00:16:06.607>without <00:16:06.870>getting <00:16:07.133>in <00:16:07.396>your <00:16:07.659>way.

364
00:16:08.105 --> 00:16:11.125
<00:16:08.105>So <00:16:08.280>they <00:16:08.455>basically <00:16:08.630>just <00:16:08.805>provide <00:16:08.980>sets <00:16:09.155>of <00:16:09.330>like <00:16:09.505>recipes

365
00:16:11.125 --> 00:16:12.965
<00:16:11.125>for <00:16:11.300>the <00:16:11.475>most <00:16:11.650>common <00:16:11.825>tasks <00:16:12.000>so <00:16:12.175>you <00:16:12.350>don't <00:16:12.525>have

366
00:16:12.965 --> 00:16:15.285
<00:16:12.965>to <00:16:13.315>implement <00:16:13.665>everything <00:16:14.015>from <00:16:14.365>scratch.

367
00:16:16.145 --> 00:16:17.165
<00:16:16.145>So <00:16:16.451>we <00:16:16.757>have <00:16:17.063>recipes

368
00:16:17.185 --> 00:16:19.765
<00:16:17.185>for <00:16:17.359>things <00:16:17.535>like <00:16:17.709>caching <00:16:17.885>static <00:16:18.060>assets <00:16:18.234>while <00:16:18.410>still <00:16:18.584>keeping

369
00:16:19.765 --> 00:16:21.565
<00:16:19.765>them <00:16:20.115>updated <00:16:20.465>in <00:16:20.814>the <00:16:21.165>background

370
00:16:21.665 --> 00:16:25.045
<00:16:21.665>or <00:16:21.820>tracking <00:16:21.976>Google <00:16:22.131>Analytics <00:16:22.287>events <00:16:22.442>even <00:16:22.598>when <00:16:22.753>a <00:16:22.909>user <00:16:23.064>is

371
00:16:25.045 --> 00:16:28.335
<00:16:25.045>offline <00:16:25.245>or <00:16:25.444>serving <00:16:25.645>an <00:16:25.844>offline <00:16:26.045>page <00:16:26.245>from <00:16:26.444>the

372
00:16:28.335 --> 00:16:29.415
<00:16:28.335>cache <00:16:28.578>if <00:16:28.821>there's <00:16:29.064>no <00:16:29.307>network.

373
00:16:29.835 --> 00:16:32.175
<00:16:29.835>So <00:16:30.010>compared <00:16:30.185>to <00:16:30.360>how <00:16:30.535>this <00:16:30.710>would <00:16:30.885>be <00:16:31.060>implemented <00:16:31.235>without

374
00:16:32.205 --> 00:16:35.415
<00:16:32.205>workbooks, <00:16:32.380>this <00:16:32.555>is <00:16:32.730>a <00:16:32.905>much <00:16:33.080>cleaner <00:16:33.255>and <00:16:33.430>easier <00:16:33.605>solution

375
00:16:37.065 --> 00:16:39.085
<00:16:37.065>and <00:16:37.265>we <00:16:37.465>now <00:16:37.665>also <00:16:37.865>have <00:16:38.065>much <00:16:38.265>better <00:16:38.465>support

376
00:16:39.085 --> 00:16:41.645
<00:16:39.085>for <00:16:39.260>building <00:16:39.435>progressive <00:16:39.610>web <00:16:39.785>apps <00:16:39.960>with <00:16:40.135>the <00:16:40.310>existing <00:16:40.485>tools

377
00:16:41.705 --> 00:16:43.605
<00:16:41.705>and <00:16:41.985>frameworks <00:16:42.265>that <00:16:42.545>we <00:16:42.825>already <00:16:43.105>use.

378
00:16:45.675 --> 00:16:48.935
<00:16:45.675>So <00:16:45.830>every <00:16:45.986>major <00:16:46.141>framework <00:16:46.297>now <00:16:46.452>has <00:16:46.608>some <00:16:46.763>form <00:16:46.919>of <00:16:47.074>support

379
00:16:48.955 --> 00:16:50.855
<00:16:48.955>for <00:16:49.188>progressive <00:16:49.421>web <00:16:49.655>apps <00:16:49.888>and <00:16:50.121>offline <00:16:50.355>first.

380
00:16:51.195 --> 00:16:53.135
<00:16:51.195>So <00:16:51.395>with <00:16:51.595>Angular <00:16:51.795>there's <00:16:51.995>this <00:16:52.195>guide <00:16:52.395>on <00:16:52.595>how

381
00:16:53.135 --> 00:16:55.535
<00:16:53.135>to <00:16:53.368>implement <00:16:53.601>the <00:16:53.835>app <00:16:54.068>shell <00:16:54.301>similar <00:16:54.535>guides

382
00:16:55.535 --> 00:16:57.015
<00:16:55.535>for <00:16:55.801>React <00:16:56.067>and <00:16:56.334>view <00:16:56.600>as <00:16:56.867>well.

383
00:16:58.295 --> 00:17:00.475
<00:16:58.295>So <00:16:58.450>thanks <00:16:58.606>to <00:16:58.761>all <00:16:58.917>these <00:16:59.072>improvements <00:16:59.228>we <00:16:59.383>can <00:16:59.539>actually <00:16:59.694>create

384
00:17:00.605 --> 00:17:03.195
<00:17:00.605>truly <00:17:00.885>offline <00:17:01.165>first <00:17:01.445>progressive <00:17:01.725>web <00:17:02.005>apps

385
00:17:04.215 --> 00:17:05.435
<00:17:04.214>and <00:17:04.489>we're <00:17:04.763>already <00:17:05.038>seeing <00:17:05.312>these

386
00:17:05.435 --> 00:17:06.755
<00:17:05.435>applications <00:17:05.732>out <00:17:06.029>in <00:17:06.326>the <00:17:06.623>world.

387
00:17:06.815 --> 00:17:09.235
<00:17:06.815>So <00:17:07.015>Twitter <00:17:07.215>is <00:17:07.415>a <00:17:07.615>great <00:17:07.815>example <00:17:08.015>of <00:17:08.215>this.

388
00:17:09.265 --> 00:17:12.755
<00:17:09.265>Most <00:17:09.372>of <00:17:09.480>the <00:17:09.588>UI <00:17:09.695>is <00:17:09.803>able <00:17:09.911>to <00:17:10.018>load <00:17:10.126>even <00:17:10.234>while <00:17:10.341>a <00:17:10.449>user <00:17:10.557>is <00:17:10.665>offline

389
00:17:13.055 --> 00:17:14.715
<00:17:13.055>and <00:17:13.335>there's <00:17:13.615>a <00:17:13.895>clear <00:17:14.175>message <00:17:14.455>as

390
00:17:14.715 --> 00:17:16.515
<00:17:14.714>to <00:17:14.948>why <00:17:15.181>the <00:17:15.415>content <00:17:15.648>hasn't <00:17:15.881>fully <00:17:16.115>loaded.

391
00:17:17.795 --> 00:17:20.855
<00:17:17.795>And <00:17:17.970>we <00:17:18.145>see <00:17:18.320>a <00:17:18.495>similar <00:17:18.670>example <00:17:18.845>in <00:17:19.020>the <00:17:19.195>um,

392
00:17:21.315 --> 00:17:23.015
<00:17:21.315>almost <00:17:21.781>recently <00:17:22.248>launched <00:17:22.715>um,

393
00:17:23.295 --> 00:17:25.175
<00:17:23.295>Microsoft <00:17:23.645>OneDrive <00:17:23.995>progressive <00:17:24.345>web <00:17:24.695>app.

394
00:17:25.355 --> 00:17:29.695
<00:17:25.355>So <00:17:25.495>again, <00:17:25.635>besides <00:17:25.775>the <00:17:25.915>actual <00:17:26.055>contents, <00:17:26.194>the <00:17:26.335>app <00:17:26.474>itself <00:17:26.615>is <00:17:26.755>um,

395
00:17:29.845 --> 00:17:31.575
<00:17:29.845>able <00:17:30.020>to <00:17:30.195>load <00:17:30.370>and <00:17:30.545>we <00:17:30.720>can <00:17:30.895>even <00:17:31.070>like <00:17:31.245>click

396
00:17:31.575 --> 00:17:35.065
<00:17:31.575>around <00:17:31.925>the <00:17:32.275>various <00:17:32.625>pages <00:17:32.975>but

397
00:17:35.065 --> 00:17:37.865
<00:17:35.065>besides <00:17:35.240>just <00:17:35.415>loading <00:17:35.590>the <00:17:35.765>main <00:17:35.940>UI <00:17:36.115>app <00:17:36.290>shell <00:17:36.465>um,

398
00:17:38.525 --> 00:17:42.105
<00:17:38.525>we <00:17:38.725>can <00:17:38.925>actually <00:17:39.125>like <00:17:39.325>use <00:17:39.525>various <00:17:39.725>storage <00:17:39.925>APIs

399
00:17:42.105 --> 00:17:45.265
<00:17:42.105>to <00:17:42.260>actually <00:17:42.416>save <00:17:42.571>um, <00:17:42.727>some <00:17:42.882>more <00:17:43.038>save <00:17:43.193>like <00:17:43.349>some <00:17:43.505>content.

400
00:17:45.405 --> 00:17:47.265
<00:17:45.405>So <00:17:45.605>instead <00:17:45.805>of <00:17:46.004>just <00:17:46.205>showing <00:17:46.405>an <00:17:46.605>offline <00:17:46.805>message,

401
00:17:47.605 --> 00:17:48.945
<00:17:47.605>we <00:17:47.906>can <00:17:48.208>serve <00:17:48.509>cache <00:17:48.811>content

402
00:17:49.065 --> 00:17:53.325
<00:17:49.065>so <00:17:49.205>a <00:17:49.345>user <00:17:49.485>could <00:17:49.625>actually <00:17:49.765>still <00:17:49.905>like <00:17:50.045>interact <00:17:50.185>with <00:17:50.325>the <00:17:50.465>um,

403
00:17:53.515 --> 00:17:55.405
<00:17:53.515>site <00:17:53.690>in <00:17:53.865>the <00:17:54.040>much <00:17:54.215>the <00:17:54.390>same <00:17:54.565>way <00:17:54.740>they <00:17:54.915>would

404
00:17:55.405 --> 00:17:56.645
<00:17:55.405>even <00:17:55.684>if <00:17:55.963>they <00:17:56.242>were <00:17:56.521>connected.

405
00:17:56.785 --> 00:17:59.845
<00:17:56.785>And <00:17:56.960>this <00:17:57.135>Airbnb <00:17:57.310>example <00:17:57.485>is <00:17:57.660>like <00:17:57.835>a <00:17:58.010>great <00:17:58.185>example.

406
00:18:00.105 --> 00:18:04.485
<00:18:00.105>So <00:18:00.245>besides <00:18:00.385>um, <00:18:00.525>just <00:18:00.665>their <00:18:00.805>homepage <00:18:00.945>being <00:18:01.085>able <00:18:01.225>to <00:18:01.365>be <00:18:01.505>um,

407
00:18:04.585 --> 00:18:06.445
<00:18:04.585>loaded <00:18:04.865>if <00:18:05.145>the <00:18:05.425>person <00:18:05.705>is <00:18:05.985>offline,

408
00:18:06.445 --> 00:18:08.445
<00:18:06.445>they <00:18:06.725>also <00:18:07.004>have <00:18:07.284>this <00:18:07.564>arrival <00:18:07.845>guide

409
00:18:08.625 --> 00:18:10.445
<00:18:08.625>that's <00:18:08.905>available <00:18:09.185>even <00:18:09.465>if <00:18:09.745>you're <00:18:10.025>offline,

410
00:18:10.445 --> 00:18:13.005
<00:18:10.445>which <00:18:10.678>is <00:18:10.911>actually <00:18:11.145>like <00:18:11.378>a <00:18:11.611>great <00:18:11.845>idea

411
00:18:13.005 --> 00:18:14.485
<00:18:13.005>because <00:18:13.671>it's <00:18:14.337>some,

412
00:18:14.555 --> 00:18:17.005
<00:18:14.555>it's <00:18:14.710>a <00:18:14.866>case <00:18:15.021>in <00:18:15.177>which <00:18:15.332>you <00:18:15.488>might <00:18:15.643>actually <00:18:15.799>be <00:18:15.955>offline

413
00:18:17.345 --> 00:18:20.525
<00:18:17.345>and <00:18:17.500>you <00:18:17.656>have <00:18:17.811>all <00:18:17.967>the <00:18:18.122>information <00:18:18.278>here <00:18:18.433>including <00:18:18.589>like <00:18:18.745>how

414
00:18:20.525 --> 00:18:23.685
<00:18:20.525>to <00:18:20.652>connect <00:18:20.779>to <00:18:20.906>the <00:18:21.034>wifi <00:18:21.161>and <00:18:21.288>where <00:18:21.415>like <00:18:21.543>what <00:18:21.670>the <00:18:21.797>address <00:18:21.925>is

415
00:18:23.685 --> 00:18:25.045
<00:18:23.685>and <00:18:23.991>all <00:18:24.297>of <00:18:24.603>that <00:18:24.909>information.

416
00:18:27.485 --> 00:18:30.265
<00:18:27.485>And <00:18:27.612>this <00:18:27.739>is <00:18:27.866>made <00:18:27.994>possible <00:18:28.121>with <00:18:28.248>the <00:18:28.375>various <00:18:28.503>APIs <00:18:28.630>we <00:18:28.757>now <00:18:28.885>have

417
00:18:30.265 --> 00:18:33.185
<00:18:30.265>for <00:18:30.440>in <00:18:30.615>browser <00:18:30.790>storage, <00:18:30.965>so <00:18:31.140>like <00:18:31.315>index <00:18:31.490>db, <00:18:31.665>local

418
00:18:33.285 --> 00:18:34.985
<00:18:33.285>and <00:18:33.635>session <00:18:33.985>storage, <00:18:34.335>cast <00:18:34.685>storage

419
00:18:35.525 --> 00:18:38.705
<00:18:35.525>and <00:18:35.665>all <00:18:35.805>of <00:18:35.945>these <00:18:36.085>APIs <00:18:36.225>are <00:18:36.365>already <00:18:36.505>like <00:18:36.645>widely <00:18:36.785>supported <00:18:36.925>in

420
00:18:38.705 --> 00:18:39.825
<00:18:38.705>all <00:18:39.041>the <00:18:39.377>major <00:18:39.713>browsers

421
00:18:42.025 --> 00:18:45.005
<00:18:42.025>and <00:18:42.225>beyond <00:18:42.425>being <00:18:42.625>able <00:18:42.825>to <00:18:43.025>work <00:18:43.225>offline <00:18:43.425>reliable,

422
00:18:45.245 --> 00:18:47.485
<00:18:45.245>progressive <00:18:45.445>web <00:18:45.645>apps <00:18:45.844>need <00:18:46.044>to <00:18:46.245>also <00:18:46.445>be <00:18:46.645>fast

423
00:18:48.225 --> 00:18:49.965
<00:18:48.225>and <00:18:48.458>to <00:18:48.691>load <00:18:48.925>as <00:18:49.158>quickly <00:18:49.391>as <00:18:49.625>possible.

424
00:18:50.105 --> 00:18:51.685
<00:18:50.105>Um, <00:18:50.455>the <00:18:50.805>recommended <00:18:51.155>approach <00:18:51.505>is

425
00:18:51.685 --> 00:18:53.685
<00:18:51.685>to <00:18:51.885>use <00:18:52.085>what's <00:18:52.284>called <00:18:52.485>the <00:18:52.685>app <00:18:52.885>shell <00:18:53.085>model.

426
00:18:55.325 --> 00:18:57.705
<00:18:55.325>And <00:18:55.500>the <00:18:55.675>way <00:18:55.850>this <00:18:56.025>works <00:18:56.200>is <00:18:56.375>the <00:18:56.550>app <00:18:56.725>shell,

427
00:18:57.705 --> 00:19:00.185
<00:18:57.705>which <00:18:57.985>is <00:18:58.264>basically <00:18:58.544>the <00:18:58.824>minimal <00:18:59.105>H-T-M-L-C-S-S

428
00:19:00.185 --> 00:19:02.265
<00:19:00.185>and <00:19:00.465>JavaScript <00:19:00.745>that's <00:19:01.024>required <00:19:01.304>to <00:19:01.585>power.

429
00:19:02.265 --> 00:19:04.385
<00:19:02.265>The <00:19:02.545>UI <00:19:02.825>is <00:19:03.105>kept <00:19:03.385>in <00:19:03.665>cache

430
00:19:04.445 --> 00:19:06.905
<00:19:04.445>and <00:19:04.600>then <00:19:04.756>this <00:19:04.911>can <00:19:05.067>be <00:19:05.222>loaded <00:19:05.378>instantly <00:19:05.533>since <00:19:05.689>it <00:19:05.845>doesn't

431
00:19:07.105 --> 00:19:09.225
<00:19:07.105>actually <00:19:07.338>require <00:19:07.571>any <00:19:07.805>access <00:19:08.038>to <00:19:08.271>the <00:19:08.505>network.

432
00:19:09.645 --> 00:19:12.305
<00:19:09.645>And <00:19:09.772>then <00:19:09.899>the <00:19:10.026>main <00:19:10.154>content <00:19:10.281>of <00:19:10.408>the <00:19:10.535>page <00:19:10.663>would <00:19:10.790>be <00:19:10.917>loaded <00:19:11.045>from

433
00:19:12.305 --> 00:19:14.545
<00:19:12.305>the <00:19:12.538>network <00:19:12.771>or <00:19:13.005>local <00:19:13.238>storage <00:19:13.471>as <00:19:13.705>needed.

434
00:19:15.585 --> 00:19:17.685
<00:19:15.585>So <00:19:15.725>going <00:19:15.865>back <00:19:16.005>to <00:19:16.145>Twitter <00:19:16.285>again, <00:19:16.425>you <00:19:16.565>can <00:19:16.705>kind <00:19:16.845>of <00:19:16.985>see

435
00:19:17.785 --> 00:19:20.965
<00:19:17.785>how <00:19:17.985>various <00:19:18.185>parts <00:19:18.385>of <00:19:18.585>the <00:19:18.785>UI <00:19:18.985>load <00:19:19.185>incrementally.

436
00:19:21.065 --> 00:19:23.765
<00:19:21.065>So <00:19:21.220>the <00:19:21.376>app <00:19:21.531>show, <00:19:21.687>which <00:19:21.842>is <00:19:21.998>basically <00:19:22.153>the <00:19:22.309>same <00:19:22.465>parts

437
00:19:23.765 --> 00:19:27.125
<00:19:23.765>of <00:19:23.905>the <00:19:24.045>page <00:19:24.185>that <00:19:24.325>load <00:19:24.465>when <00:19:24.605>a <00:19:24.745>user <00:19:24.885>is <00:19:25.025>offline <00:19:25.165>load

438
00:19:27.125 --> 00:19:28.125
<00:19:27.125>essentially <00:19:28.025>instantly

439
00:19:28.505 --> 00:19:30.805
<00:19:28.505>and <00:19:28.660>then <00:19:28.816>the <00:19:28.971>rest <00:19:29.127>of <00:19:29.282>the <00:19:29.438>page <00:19:29.593>builds <00:19:29.749>in <00:19:29.905>more

440
00:19:30.805 --> 00:19:31.885
<00:19:30.805>like <00:19:31.777>incrementally.

441
00:19:34.005 --> 00:19:36.665
<00:19:34.005>And <00:19:34.180>that's <00:19:34.355>actually <00:19:34.530>even <00:19:34.705>the <00:19:34.880>main <00:19:35.055>Twitter <00:19:35.230>website <00:19:35.405>now,

442
00:19:36.665 --> 00:19:39.225
<00:19:36.665>which <00:19:36.840>they <00:19:37.014>converted <00:19:37.190>to <00:19:37.365>a <00:19:37.540>progressive <00:19:37.715>web <00:19:37.889>app, <00:19:38.065>um,

443
00:19:39.355 --> 00:19:42.785
<00:19:39.355>after <00:19:39.530>they <00:19:39.705>saw <00:19:39.880>incredible <00:19:40.055>results <00:19:40.230>from <00:19:40.405>a <00:19:40.580>light <00:19:40.755>progressive

444
00:19:42.785 --> 00:19:45.625
<00:19:42.785>web <00:19:42.985>app <00:19:43.185>that <00:19:43.385>they <00:19:43.585>launched <00:19:43.785>back <00:19:43.985>in <00:19:44.185>2017.

445
00:19:45.725 --> 00:19:48.545
<00:19:45.725>So <00:19:45.899>when <00:19:46.074>progressive <00:19:46.250>web <00:19:46.425>apps <00:19:46.600>were <00:19:46.774>basically <00:19:46.949>just <00:19:47.125>um,

446
00:19:49.185 --> 00:19:52.145
<00:19:49.185>launched <00:19:49.340>and <00:19:49.496>in <00:19:49.651>that <00:19:49.807>experiments <00:19:49.962>they <00:19:50.118>actually <00:19:50.273>saw <00:19:50.429>like <00:19:50.585>a

447
00:19:52.145 --> 00:19:54.585
<00:19:52.145>65% <00:19:52.425>increase <00:19:52.705>in <00:19:52.985>pages <00:19:53.264>per <00:19:53.545>session.

448
00:19:54.975 --> 00:19:57.665
<00:19:54.975>They <00:19:55.175>saw <00:19:55.375>a <00:19:55.574>75% <00:19:55.774>increase <00:19:55.975>in <00:19:56.175>tweets <00:19:56.375>sent

449
00:19:57.685 --> 00:20:00.065
<00:19:57.685>and <00:19:57.918>a <00:19:58.151>20% <00:19:58.385>decrease <00:19:58.618>in <00:19:58.851>bounce <00:19:59.085>rate.

450
00:20:02.185 --> 00:20:05.045
<00:20:02.185>In <00:20:02.360>fact, <00:20:02.534>the <00:20:02.710>engineering <00:20:02.885>lead <00:20:03.060>of <00:20:03.235>the <00:20:03.409>project <00:20:03.585>marveled

451
00:20:05.045 --> 00:20:07.285
<00:20:05.045>that <00:20:05.278>the <00:20:05.511>web <00:20:05.745>app <00:20:05.978>had <00:20:06.211>similar <00:20:06.445>performance

452
00:20:07.285 --> 00:20:08.485
<00:20:07.285>to <00:20:07.645>their <00:20:08.004>native <00:20:08.365>application

453
00:20:08.545 --> 00:20:11.165
<00:20:08.545>but <00:20:08.720>with <00:20:08.895>less <00:20:09.070>than <00:20:09.245>3% <00:20:09.420>of <00:20:09.595>the <00:20:09.770>device <00:20:09.945>storage,

454
00:20:11.215 --> 00:20:13.885
<00:20:11.215>which <00:20:11.448>is <00:20:11.681>just <00:20:11.915>like <00:20:12.148>absolutely <00:20:12.381>mind <00:20:12.615>blowing.

455
00:20:15.775 --> 00:20:18.875
<00:20:15.775>And <00:20:15.930>that's <00:20:16.086>just <00:20:16.241>one <00:20:16.397>example, <00:20:16.552>but <00:20:16.708>there <00:20:16.863>are <00:20:17.019>literally <00:20:17.175>dozens

456
00:20:18.875 --> 00:20:21.915
<00:20:18.875>and <00:20:19.108>dozens <00:20:19.341>of <00:20:19.575>stories <00:20:19.808>of <00:20:20.041>performance <00:20:20.275>improvements

457
00:20:21.915 --> 00:20:23.395
<00:20:21.915>that <00:20:22.248>companies <00:20:22.581>have <00:20:22.914>seen <00:20:23.247>just

458
00:20:23.415 --> 00:20:25.435
<00:20:23.415>by <00:20:23.764>implementing <00:20:24.115>progressive <00:20:24.465>web <00:20:24.815>apps.

459
00:20:27.695 --> 00:20:29.995
<00:20:27.695>And <00:20:27.870>speed <00:20:28.044>isn't <00:20:28.220>the <00:20:28.395>only <00:20:28.570>benefit <00:20:28.745>of <00:20:28.919>the <00:20:29.095>web.

460
00:20:30.095 --> 00:20:32.435
<00:20:30.095>So <00:20:30.295>progressive <00:20:30.495>web <00:20:30.695>apps <00:20:30.895>like <00:20:31.095>websites <00:20:31.295>in <00:20:31.495>general

461
00:20:32.985 --> 00:20:35.555
<00:20:32.985>also <00:20:33.218>benefit <00:20:33.451>from <00:20:33.685>being <00:20:33.918>just <00:20:34.151>more <00:20:34.385>accessible.

462
00:20:36.415 --> 00:20:39.355
<00:20:36.415>And <00:20:36.555>this <00:20:36.695>is <00:20:36.835>because <00:20:36.975>that <00:20:37.115>the <00:20:37.254>web <00:20:37.395>already <00:20:37.534>has <00:20:37.675>a <00:20:37.815>golden

463
00:20:39.355 --> 00:20:40.755
<00:20:39.355>accessibility <00:20:40.615>standards.

464
00:20:40.755 --> 00:20:43.555
<00:20:40.755>So <00:20:41.035>the <00:20:41.315>web <00:20:41.595>content <00:20:41.875>accessibility <00:20:42.155>guidelines.

465
00:20:44.255 --> 00:20:47.155
<00:20:44.255>So <00:20:44.455>although <00:20:44.655>the <00:20:44.855>various <00:20:45.055>mobile <00:20:45.255>platforms <00:20:45.455>have <00:20:45.655>developed

466
00:20:47.205 --> 00:20:48.965
<00:20:47.205>their <00:20:47.554>own <00:20:47.905>standards <00:20:48.254>for <00:20:48.605>accessibility,

467
00:20:49.625 --> 00:20:51.805
<00:20:49.625>the <00:20:49.858>web <00:20:50.091>standard <00:20:50.325>is <00:20:50.558>actually <00:20:50.791>still <00:20:51.025>considered

468
00:20:51.865 --> 00:20:52.885
<00:20:51.865>the <00:20:52.324>most <00:20:52.783>mature.

469
00:20:53.105 --> 00:20:56.125
<00:20:53.105>So <00:20:53.280>very <00:20:53.455>often <00:20:53.630>by <00:20:53.805>building <00:20:53.980>a <00:20:54.155>progressive <00:20:54.330>web <00:20:54.505>app,

470
00:20:56.125 --> 00:20:59.165
<00:20:56.125>you're <00:20:56.325>actually <00:20:56.525>just <00:20:56.725>building <00:20:56.925>a <00:20:57.125>more <00:20:57.325>accessible <00:20:57.525>application.

471
00:21:00.625 --> 00:21:02.445
<00:21:00.625>And <00:21:00.858>Pinterest <00:21:01.091>saw <00:21:01.325>this <00:21:01.558>when <00:21:01.791>they <00:21:02.025>implemented

472
00:21:02.445 --> 00:21:03.565
<00:21:02.445>their <00:21:02.781>progressive <00:21:03.117>web <00:21:03.453>app.

473
00:21:03.565 --> 00:21:06.965
<00:21:03.565>So <00:21:03.740>in <00:21:03.915>addition <00:21:04.090>to <00:21:04.265>all <00:21:04.440>the <00:21:04.615>great <00:21:04.790>performance <00:21:04.965>improvements,

474
00:21:06.995 --> 00:21:09.565
<00:21:06.995>they <00:21:07.150>also <00:21:07.306>noted <00:21:07.461>that <00:21:07.617>their <00:21:07.772>progressive <00:21:07.928>web <00:21:08.083>app <00:21:08.239>was <00:21:08.395>more

475
00:21:09.615 --> 00:21:12.605
<00:21:09.615>accessible <00:21:09.848>and <00:21:10.081>it <00:21:10.315>ended <00:21:10.548>up <00:21:10.781>being <00:21:11.015>um,

476
00:21:12.895 --> 00:21:14.365
<00:21:12.895>their <00:21:13.336>first <00:21:13.777>ever <00:21:14.218>platform

477
00:21:14.465 --> 00:21:16.445
<00:21:14.465>to <00:21:14.745>support <00:21:15.024>right <00:21:15.304>to <00:21:15.584>left <00:21:15.865>languages.

478
00:21:18.775 --> 00:21:20.075
<00:21:18.775>So <00:21:19.067>in <00:21:19.360>terms <00:21:19.652>of <00:21:19.945>reliability,

479
00:21:20.235 --> 00:21:22.235
<00:21:20.235>I <00:21:20.390>would <00:21:20.546>say <00:21:20.701>progressive <00:21:20.857>web <00:21:21.012>apps <00:21:21.168>are <00:21:21.323>doing <00:21:21.479>very <00:21:21.635>well.

480
00:21:22.455 --> 00:21:23.515
<00:21:22.455>So <00:21:22.932>the <00:21:23.409>support

481
00:21:23.535 --> 00:21:26.995
<00:21:23.535>for <00:21:23.710>the <00:21:23.885>tools <00:21:24.060>needed <00:21:24.235>like <00:21:24.410>service <00:21:24.585>worker <00:21:24.760>are <00:21:24.935>widespread

482
00:21:26.995 --> 00:21:29.835
<00:21:26.995>enough <00:21:27.150>that <00:21:27.306>we <00:21:27.461>can <00:21:27.617>generally <00:21:27.772>expect <00:21:27.928>it <00:21:28.083>to <00:21:28.239>be <00:21:28.395>supported

483
00:21:29.855 --> 00:21:30.915
<00:21:29.855>for <00:21:30.093>most <00:21:30.331>of <00:21:30.570>our <00:21:30.809>users.

484
00:21:31.535 --> 00:21:34.035
<00:21:31.535>And <00:21:31.735>the <00:21:31.935>experience <00:21:32.135>of <00:21:32.335>developing <00:21:32.535>service <00:21:32.735>workers <00:21:32.935>has

485
00:21:34.555 --> 00:21:36.515
<00:21:34.555>improved <00:21:34.755>to <00:21:34.955>the <00:21:35.155>point <00:21:35.355>where <00:21:35.555>it's <00:21:35.755>more <00:21:35.955>accessible

486
00:21:36.515 --> 00:21:39.105
<00:21:36.515>to <00:21:36.795>more <00:21:37.075>developers <00:21:37.355>and <00:21:37.635>more <00:21:37.915>so

487
00:21:39.105 --> 00:21:41.865
<00:21:39.105>with <00:21:39.245>new <00:21:39.385>APIs <00:21:39.525>we <00:21:39.665>can <00:21:39.805>make <00:21:39.945>progressive <00:21:40.085>web <00:21:40.225>apps <00:21:40.365>faster <00:21:40.505>at

488
00:21:41.865 --> 00:21:46.345
<00:21:41.865>smaller <00:21:42.040>package <00:21:42.215>sizes <00:21:42.390>all <00:21:42.565>while <00:21:42.740>maintaining <00:21:42.915>the <00:21:43.090>web's <00:21:43.265>um,

489
00:21:46.735 --> 00:21:48.425
<00:21:46.735>main <00:21:47.201>benefit <00:21:47.668>of <00:21:48.135>accessibility.

490
00:21:49.245 --> 00:21:52.065
<00:21:49.245>So <00:21:49.445>progressive <00:21:49.645>web <00:21:49.844>apps <00:21:50.044>today <00:21:50.245>are <00:21:50.445>truly <00:21:50.645>reliable.

491
00:21:55.145 --> 00:21:58.285
<00:21:55.145>And <00:21:55.320>finally, <00:21:55.495>how <00:21:55.670>installable <00:21:55.845>are <00:21:56.020>progressive <00:21:56.195>web <00:21:56.370>apps <00:21:56.545>today?

492
00:21:59.345 --> 00:22:00.565
<00:21:59.345>So <00:21:59.894>first <00:22:00.443>support,

493
00:22:00.705 --> 00:22:02.885
<00:22:00.705>and <00:22:00.879>this <00:22:01.054>is <00:22:01.230>definitely <00:22:01.405>looking <00:22:01.580>a <00:22:01.754>lot <00:22:01.929>better <00:22:02.105>than

494
00:22:02.955 --> 00:22:04.005
<00:22:02.955>five <00:22:03.427>years <00:22:03.900>ago.

495
00:22:04.185 --> 00:22:05.685
<00:22:04.185>So <00:22:04.635>almost <00:22:05.085>all <00:22:05.534>browsers

496
00:22:05.685 --> 00:22:08.565
<00:22:05.685>and <00:22:05.840>particularly <00:22:05.996>on <00:22:06.151>mobile <00:22:06.307>have <00:22:06.462>the <00:22:06.618>support <00:22:06.773>for <00:22:06.929>this <00:22:07.085>feature

497
00:22:09.065 --> 00:22:11.045
<00:22:09.065>or <00:22:09.345>are <00:22:09.625>actively <00:22:09.905>working <00:22:10.185>towards <00:22:10.465>it.

498
00:22:11.145 --> 00:22:14.805
<00:22:11.145>So <00:22:11.285>even <00:22:11.425>in <00:22:11.565>iOS <00:22:11.705>Safari <00:22:11.845>it <00:22:11.985>does <00:22:12.125>support <00:22:12.264>the <00:22:12.405>future <00:22:12.545>just

499
00:22:14.825 --> 00:22:15.845
<00:22:14.825>not <00:22:15.284>in <00:22:15.743>WebView.

500
00:22:17.265 --> 00:22:19.925
<00:22:17.265>And <00:22:17.465>although <00:22:17.665>the <00:22:17.865>level <00:22:18.065>of <00:22:18.265>install <00:22:18.465>integration <00:22:18.665>differs

501
00:22:19.925 --> 00:22:22.845
<00:22:19.925>between <00:22:20.125>the <00:22:20.325>browsers, <00:22:20.524>they <00:22:20.725>all <00:22:20.925>have <00:22:21.125>some <00:22:21.325>form

502
00:22:22.945 --> 00:22:25.005
<00:22:22.945>of <00:22:23.225>progressive <00:22:23.504>web <00:22:23.784>app <00:22:24.064>install <00:22:24.345>available

503
00:22:27.475 --> 00:22:30.775
<00:22:27.475>and <00:22:27.649>significantly <00:22:27.824>we <00:22:28.000>now <00:22:28.175>have <00:22:28.350>much <00:22:28.524>more <00:22:28.699>control <00:22:28.875>over

504
00:22:30.775 --> 00:22:33.015
<00:22:30.775>that <00:22:30.975>install <00:22:31.175>flow <00:22:31.375>instead <00:22:31.575>of <00:22:31.775>it <00:22:31.975>being <00:22:32.175>something

505
00:22:33.015 --> 00:22:35.655
<00:22:33.015>that's <00:22:33.248>just <00:22:33.481>completely <00:22:33.715>controlled <00:22:33.948>by <00:22:34.181>the <00:22:34.415>browser.

506
00:22:36.475 --> 00:22:38.615
<00:22:36.475>So <00:22:36.602>we <00:22:36.729>can <00:22:36.856>now <00:22:36.984>detect <00:22:37.111>if <00:22:37.238>a <00:22:37.365>progressive <00:22:37.493>web <00:22:37.620>app <00:22:37.747>can <00:22:37.875>be

507
00:22:38.615 --> 00:22:42.255
<00:22:38.615>installed <00:22:38.815>using <00:22:39.015>this <00:22:39.215>new <00:22:39.415>before <00:22:39.615>install <00:22:39.815>prompt <00:22:40.015>vent

508
00:22:43.195 --> 00:22:44.335
<00:22:43.195>and <00:22:43.451>then <00:22:43.708>we <00:22:43.964>can <00:22:44.221>intercept

509
00:22:44.335 --> 00:22:47.415
<00:22:44.335>that <00:22:44.535>default <00:22:44.735>browser <00:22:44.935>popup <00:22:45.135>from <00:22:45.335>showing <00:22:45.535>just <00:22:45.735>randomly

510
00:22:47.435 --> 00:22:49.775
<00:22:47.435>or <00:22:47.590>automatically <00:22:47.746>and <00:22:47.901>then <00:22:48.057>save <00:22:48.212>it <00:22:48.368>to <00:22:48.523>be <00:22:48.679>used <00:22:48.835>later.

511
00:22:50.395 --> 00:22:53.415
<00:22:50.395>And <00:22:50.570>this <00:22:50.745>is <00:22:50.920>really <00:22:51.095>great <00:22:51.270>for <00:22:51.445>offering <00:22:51.620>more <00:22:51.795>customized

512
00:22:53.485 --> 00:22:56.175
<00:22:53.485>install <00:22:53.659>flows <00:22:53.834>where <00:22:54.010>you <00:22:54.185>can <00:22:54.360>show <00:22:54.534>your <00:22:54.709>own <00:22:54.885>messaging

513
00:22:56.195 --> 00:22:59.095
<00:22:56.195>or <00:22:56.395>prompts <00:22:56.595>before <00:22:56.794>the <00:22:56.995>user <00:22:57.195>actually <00:22:57.395>like <00:22:57.595>installs.

514
00:23:00.825 --> 00:23:03.565
<00:23:00.825>And <00:23:00.952>then <00:23:01.079>we <00:23:01.206>can <00:23:01.334>also <00:23:01.461>detect <00:23:01.588>when <00:23:01.715>a <00:23:01.843>progressive <00:23:01.970>app <00:23:02.097>has <00:23:02.225>been

515
00:23:03.565 --> 00:23:06.445
<00:23:03.565>successfully <00:23:03.740>installed <00:23:03.915>with <00:23:04.090>this <00:23:04.265>new <00:23:04.440>app <00:23:04.615>in <00:23:04.790>store <00:23:04.965>event.

516
00:23:06.745 --> 00:23:08.085
<00:23:06.745>So <00:23:06.986>it <00:23:07.227>really <00:23:07.468>just <00:23:07.709>allows <00:23:07.951>us

517
00:23:08.085 --> 00:23:11.525
<00:23:08.085>to <00:23:08.285>fully <00:23:08.485>customize <00:23:08.685>like <00:23:08.885>an <00:23:09.085>end-to-end <00:23:09.285>install <00:23:09.485>experience

518
00:23:12.825 --> 00:23:14.685
<00:23:12.825>and <00:23:12.980>we <00:23:13.136>can <00:23:13.291>see <00:23:13.447>how <00:23:13.602>this <00:23:13.758>is <00:23:13.913>already <00:23:14.069>being <00:23:14.225>used.

519
00:23:14.785 --> 00:23:17.925
<00:23:14.785>So <00:23:14.912>on <00:23:15.039>TikTok <00:23:15.166>we <00:23:15.294>have <00:23:15.421>a <00:23:15.548>banner <00:23:15.675>that <00:23:15.803>like <00:23:15.930>let's <00:23:16.057>users <00:23:16.185>know

520
00:23:17.925 --> 00:23:19.805
<00:23:17.925>that <00:23:18.125>they <00:23:18.325>can <00:23:18.524>get <00:23:18.725>the <00:23:18.925>app <00:23:19.125>for <00:23:19.325>desktop

521
00:23:20.385 --> 00:23:21.725
<00:23:20.385>and <00:23:20.586>then <00:23:20.787>only <00:23:20.988>when <00:23:21.188>they <00:23:21.389>click <00:23:21.591>on

522
00:23:21.725 --> 00:23:24.325
<00:23:21.725>that <00:23:21.899>custom <00:23:22.074>banner <00:23:22.250>does <00:23:22.425>the <00:23:22.600>default <00:23:22.774>install <00:23:22.949>prompt <00:23:23.125>show

523
00:23:24.385 --> 00:23:26.045
<00:23:24.385>and <00:23:24.618>then <00:23:24.851>allowing <00:23:25.085>the <00:23:25.318>user <00:23:25.551>to <00:23:25.785>confirm

524
00:23:26.425 --> 00:23:28.285
<00:23:26.425>and <00:23:26.625>then <00:23:26.825>install <00:23:27.024>the <00:23:27.225>app <00:23:27.425>to <00:23:27.625>their <00:23:27.825>device.

525
00:23:28.345 --> 00:23:29.925
<00:23:28.345>And <00:23:28.545>it's <00:23:28.745>like <00:23:28.945>they <00:23:29.145>just <00:23:29.345>kind <00:23:29.545>of <00:23:29.745>are,

526
00:23:30.155 --> 00:23:31.925
<00:23:30.155>they're <00:23:30.504>already <00:23:30.855>using <00:23:31.205>the <00:23:31.555>application

527
00:23:31.925 --> 00:23:34.685
<00:23:31.925>but <00:23:32.080>they're <00:23:32.236>just <00:23:32.391>like <00:23:32.547>taking <00:23:32.702>right <00:23:32.858>into <00:23:33.013>the <00:23:33.169>progressive <00:23:33.325>web

528
00:23:34.685 --> 00:23:36.685
<00:23:34.685>app <00:23:35.151>without <00:23:35.618>any <00:23:36.085>interruptions.

529
00:23:38.915 --> 00:23:40.975
<00:23:38.915>And <00:23:39.090>once <00:23:39.264>a <00:23:39.440>progressive <00:23:39.615>web <00:23:39.790>app <00:23:39.965>has <00:23:40.139>been <00:23:40.315>installed,

530
00:23:40.995 --> 00:23:43.135
<00:23:40.995>we <00:23:41.195>now <00:23:41.395>have <00:23:41.594>better <00:23:41.794>control <00:23:41.995>over <00:23:42.195>the <00:23:42.395>launch

531
00:23:43.135 --> 00:23:44.175
<00:23:43.135>experience <00:23:43.603>as <00:23:44.071>well.

532
00:23:44.985 --> 00:23:47.645
<00:23:44.985>And <00:23:45.125>we <00:23:45.264>can <00:23:45.405>do <00:23:45.544>this <00:23:45.685>by <00:23:45.824>customizing <00:23:45.965>like <00:23:46.104>the <00:23:46.245>splash <00:23:46.385>screen

533
00:23:47.645 --> 00:23:50.605
<00:23:47.645>and <00:23:47.845>adding <00:23:48.045>custom <00:23:48.245>icon <00:23:48.445>background <00:23:48.645>color <00:23:48.845>and <00:23:49.045>text.

534
00:23:51.725 --> 00:23:53.265
<00:23:51.725>And <00:23:52.002>this <00:23:52.279>is <00:23:52.556>achieved <00:23:52.833>with <00:23:53.111>um,

535
00:23:53.265 --> 00:23:55.945
<00:23:53.265>just <00:23:53.420>a <00:23:53.576>few <00:23:53.731>items <00:23:53.887>in <00:23:54.042>the <00:23:54.198>web <00:23:54.353>app <00:23:54.509>manifest <00:23:54.665>and

536
00:23:56.105 --> 00:23:58.505
<00:23:56.105>although <00:23:56.305>it <00:23:56.505>is <00:23:56.705>quite <00:23:56.905>limited <00:23:57.105>now, <00:23:57.305>more <00:23:57.505>customizations

537
00:23:58.525 --> 00:24:01.225
<00:23:58.525>to <00:23:58.700>the <00:23:58.875>splash <00:23:59.050>screen <00:23:59.225>are <00:23:59.400>actually <00:23:59.575>like <00:23:59.750>coming <00:23:59.925>soon

538
00:24:03.045 --> 00:24:05.705
<00:24:03.045>and <00:24:03.200>install <00:24:03.356>progressive <00:24:03.511>web <00:24:03.667>apps <00:24:03.822>can <00:24:03.978>also <00:24:04.133>be <00:24:04.289>launched <00:24:04.445>via

539
00:24:05.755 --> 00:24:10.025
<00:24:05.755>quick <00:24:05.895>short <00:24:06.035>shortcuts, <00:24:06.175>um, <00:24:06.315>from <00:24:06.455>the <00:24:06.595>icon <00:24:06.735>on <00:24:06.875>the <00:24:07.015>home <00:24:07.155>screen.

540
00:24:10.205 --> 00:24:11.665
<00:24:10.205>So <00:24:10.533>we <00:24:10.861>can <00:24:11.190>go <00:24:11.519>directly

541
00:24:11.665 --> 00:24:14.265
<00:24:11.665>to <00:24:11.781>sending <00:24:11.898>a <00:24:12.014>tweet <00:24:12.131>from <00:24:12.248>the <00:24:12.365>icon <00:24:12.481>the <00:24:12.598>same <00:24:12.715>way <00:24:12.831>we <00:24:12.948>can <00:24:13.065>do

542
00:24:14.265 --> 00:24:15.705
<00:24:14.265>with <00:24:14.697>other <00:24:15.129>native <00:24:15.561>applications.

543
00:24:16.985 --> 00:24:19.365
<00:24:16.985>And <00:24:17.140>this <00:24:17.296>is <00:24:17.451>also <00:24:17.607>achieved <00:24:17.762>through <00:24:17.918>the <00:24:18.073>web <00:24:18.229>app <00:24:18.385>manifest.

544
00:24:19.365 --> 00:24:20.965
<00:24:19.365>So <00:24:19.598>there's <00:24:19.831>a <00:24:20.065>new <00:24:20.298>like <00:24:20.531>shortcuts <00:24:20.765>fields

545
00:24:20.965 --> 00:24:23.445
<00:24:20.965>where <00:24:21.165>we <00:24:21.365>can <00:24:21.564>define <00:24:21.764>an <00:24:21.965>array <00:24:22.165>of <00:24:22.365>actions

546
00:24:23.475 --> 00:24:25.965
<00:24:23.475>that <00:24:23.649>a <00:24:23.824>user <00:24:24.000>can <00:24:24.175>take <00:24:24.350>from <00:24:24.524>the <00:24:24.699>app <00:24:24.875>icon.

547
00:24:27.145 --> 00:24:28.435
<00:24:27.145>Another <00:24:27.532>really <00:24:27.918>cool <00:24:28.306>thing

548
00:24:28.435 --> 00:24:30.555
<00:24:28.435>that <00:24:28.715>was <00:24:28.995>launched <00:24:29.274>relatively <00:24:29.554>recently <00:24:29.835>is

549
00:24:30.555 --> 00:24:32.755
<00:24:30.555>that <00:24:30.730>we <00:24:30.905>can <00:24:31.080>now <00:24:31.255>set <00:24:31.430>a <00:24:31.605>progressive <00:24:31.780>web <00:24:31.955>app

550
00:24:32.895 --> 00:24:34.835
<00:24:32.895>to <00:24:33.128>be <00:24:33.361>automatically <00:24:33.595>opened <00:24:33.828>when <00:24:34.061>a <00:24:34.295>user

551
00:24:35.145 --> 00:24:36.155
<00:24:35.145>logs <00:24:35.447>into <00:24:35.751>their <00:24:36.054>device.

552
00:24:36.855 --> 00:24:40.435
<00:24:36.855>And <00:24:36.995>this <00:24:37.135>is <00:24:37.275>achieved <00:24:37.415>with <00:24:37.555>the <00:24:37.695>run <00:24:37.835>on <00:24:37.975>OS <00:24:38.115>login <00:24:38.255>API.

553
00:24:42.125 --> 00:24:44.625
<00:24:42.125>So <00:24:42.325>we're <00:24:42.525>getting <00:24:42.725>closer <00:24:42.925>and <00:24:43.125>closer <00:24:43.325>to <00:24:43.525>add

554
00:24:44.625 --> 00:24:47.465
<00:24:44.625>to <00:24:44.800>home <00:24:44.975>screen <00:24:45.150>really <00:24:45.325>actually <00:24:45.500>being <00:24:45.675>equal <00:24:45.850>to <00:24:46.025>install,

555
00:24:47.945 --> 00:24:49.745
<00:24:47.945>although <00:24:48.178>we're <00:24:48.411>not <00:24:48.645>at <00:24:48.878>full <00:24:49.111>parity <00:24:49.345>yet,

556
00:24:49.745 --> 00:24:52.145
<00:24:49.745>we're <00:24:49.978>definitely <00:24:50.211>seeing <00:24:50.445>a <00:24:50.678>lot <00:24:50.911>of <00:24:51.145>improvement.

557
00:24:53.355 --> 00:24:56.895
<00:24:53.355>So <00:24:53.482>on <00:24:53.609>Android, <00:24:53.736>we <00:24:53.864>actually <00:24:53.991>now <00:24:54.118>have <00:24:54.245>a <00:24:54.373>concept <00:24:54.500>of <00:24:54.627>web <00:24:54.755>APKs

558
00:24:58.465 --> 00:25:01.925
<00:24:58.465>and <00:24:58.639>this <00:24:58.814>is <00:24:58.990>essentially <00:24:59.165>a <00:24:59.340>native <00:24:59.514>Android <00:24:59.689>application <00:24:59.865>package

559
00:25:02.185 --> 00:25:05.005
<00:25:02.185>that's <00:25:02.385>created <00:25:02.585>entirely <00:25:02.784>from <00:25:02.985>a <00:25:03.185>progressive <00:25:03.385>web <00:25:03.585>app

560
00:25:05.105 --> 00:25:08.925
<00:25:05.105>and <00:25:05.245>it's <00:25:05.385>actually <00:25:05.525>done <00:25:05.665>automatically <00:25:05.805>when <00:25:05.945>a <00:25:06.085>user <00:25:06.225>clicks <00:25:06.365>at <00:25:06.505>a

561
00:25:08.925 --> 00:25:10.045
<00:25:08.925>home <00:25:09.261>screen <00:25:09.597>or <00:25:09.933>install.

562
00:25:10.305 --> 00:25:13.325
<00:25:10.305>So <00:25:10.460>it <00:25:10.616>doesn't <00:25:10.771>actually <00:25:10.927>even <00:25:11.082>require <00:25:11.238>anything <00:25:11.393>extra <00:25:11.549>from <00:25:11.705>us

563
00:25:13.425 --> 00:25:15.645
<00:25:13.425>as <00:25:13.625>the <00:25:13.825>developers <00:25:14.024>of <00:25:14.225>these <00:25:14.425>progressive <00:25:14.625>web <00:25:14.825>apps.

564
00:25:15.955 --> 00:25:18.125
<00:25:15.955>It's <00:25:16.188>all <00:25:16.421>done <00:25:16.655>completely <00:25:16.888>behind <00:25:17.121>the <00:25:17.355>scenes

565
00:25:19.815 --> 00:25:21.075
<00:25:19.815>and <00:25:20.041>we <00:25:20.268>get <00:25:20.495>a <00:25:20.722>lot <00:25:20.949>out

566
00:25:21.075 --> 00:25:23.355
<00:25:21.075>of <00:25:21.250>a <00:25:21.425>progressive <00:25:21.600>web <00:25:21.775>app <00:25:21.950>being <00:25:22.125>packaged <00:25:22.300>in <00:25:22.475>this

567
00:25:23.375 --> 00:25:24.635
<00:25:23.375>web <00:25:23.753>a <00:25:24.131>PK <00:25:24.509>format.

568
00:25:25.255 --> 00:25:28.075
<00:25:25.255>So <00:25:25.382>the <00:25:25.509>app <00:25:25.636>shows <00:25:25.764>in <00:25:25.891>the <00:25:26.018>app <00:25:26.145>drawer <00:25:26.273>like <00:25:26.400>any <00:25:26.527>other <00:25:26.655>native

569
00:25:28.105 --> 00:25:31.555
<00:25:28.105>application, <00:25:28.245>it <00:25:28.385>also <00:25:28.525>has <00:25:28.665>this <00:25:28.805>app <00:25:28.945>info <00:25:29.085>page <00:25:29.225>the <00:25:29.365>same <00:25:29.505>way

570
00:25:31.555 --> 00:25:32.675
<00:25:31.555>other <00:25:32.059>applications <00:25:32.562>do.

571
00:25:33.015 --> 00:25:34.675
<00:25:33.015>So <00:25:33.295>there's <00:25:33.575>like <00:25:33.855>a <00:25:34.135>more <00:25:34.415>centralized

572
00:25:34.775 --> 00:25:37.595
<00:25:34.775>and <00:25:35.008>standardized <00:25:35.241>way <00:25:35.475>to <00:25:35.708>handle <00:25:35.941>various <00:25:36.175>settings.

573
00:25:38.945 --> 00:25:41.805
<00:25:38.945>And <00:25:39.085>we <00:25:39.225>also <00:25:39.365>have <00:25:39.504>these <00:25:39.645>intent <00:25:39.784>filters <00:25:39.925>which <00:25:40.064>allows <00:25:40.205>us <00:25:40.345>to,

574
00:25:42.385 --> 00:25:45.325
<00:25:42.385>um, <00:25:42.560>which <00:25:42.735>allows <00:25:42.910>links <00:25:43.085>from <00:25:43.260>like <00:25:43.435>the <00:25:43.610>website <00:25:43.785>domain

575
00:25:45.325 --> 00:25:47.805
<00:25:45.325>to <00:25:45.480>be <00:25:45.636>opened <00:25:45.791>in <00:25:45.947>the <00:25:46.102>application <00:25:46.258>instead <00:25:46.413>of <00:25:46.569>the <00:25:46.725>browser.

576
00:25:48.705 --> 00:25:51.925
<00:25:48.705>So <00:25:48.832>with <00:25:48.959>Web <00:25:49.086>APKs, <00:25:49.214>our <00:25:49.341>progressive <00:25:49.468>web <00:25:49.595>app <00:25:49.723>is <00:25:49.850>like <00:25:49.977>very <00:25:50.105>close

577
00:25:51.925 --> 00:25:55.245
<00:25:51.925>to <00:25:52.100>being <00:25:52.274>treated <00:25:52.450>like <00:25:52.625>any <00:25:52.800>other <00:25:52.975>native <00:25:53.149>Android <00:25:53.325>application.

578
00:25:57.205 --> 00:25:59.505
<00:25:57.205>And <00:25:57.405>going <00:25:57.605>further <00:25:57.804>we <00:25:58.004>can <00:25:58.205>now <00:25:58.405>actually <00:25:58.605>package

579
00:25:59.685 --> 00:26:02.665
<00:25:59.685>and <00:25:59.860>publish <00:26:00.034>our <00:26:00.210>progressive <00:26:00.385>web <00:26:00.560>apps <00:26:00.735>directly <00:26:00.909>onto <00:26:01.085>stores

580
00:26:02.845 --> 00:26:06.465
<00:26:02.845>as <00:26:03.045>native <00:26:03.245>applications, <00:26:03.445>which <00:26:03.645>sorts <00:26:03.845>of, <00:26:04.045>it <00:26:04.245>starts

581
00:26:06.465 --> 00:26:08.545
<00:26:06.465>to <00:26:06.581>get <00:26:06.698>a <00:26:06.814>bit <00:26:06.931>weird <00:26:07.048>the <00:26:07.165>more <00:26:07.281>you <00:26:07.398>think <00:26:07.514>about <00:26:07.631>it <00:26:07.748>too <00:26:07.865>hard,

582
00:26:08.615 --> 00:26:10.745
<00:26:08.615>it's <00:26:08.815>like <00:26:09.015>I <00:26:09.215>don't, <00:26:09.415>it's <00:26:09.615>like <00:26:09.815>too <00:26:10.015>much.

583
00:26:12.165 --> 00:26:15.705
<00:26:12.165>And <00:26:12.305>um, <00:26:12.445>in <00:26:12.585>2018, <00:26:12.725>I <00:26:12.865>think <00:26:13.004>Microsoft <00:26:13.145>was <00:26:13.284>the <00:26:13.425>first <00:26:13.565>platform

584
00:26:15.705 --> 00:26:16.745
<00:26:15.705>to <00:26:15.938>actually <00:26:16.173>allow <00:26:16.407>for <00:26:16.640>this.

585
00:26:16.805 --> 00:26:19.945
<00:26:16.805>So <00:26:16.960>they, <00:26:17.116>I <00:26:17.271>also <00:26:17.427>created <00:26:17.582>this <00:26:17.738>really <00:26:17.893>awesome <00:26:18.049>site, <00:26:18.205>um,

586
00:26:20.205 --> 00:26:22.025
<00:26:20.205>pwa <00:26:20.905>builder.com <00:26:21.605>um,

587
00:26:22.025 --> 00:26:24.425
<00:26:22.025>that <00:26:22.200>would <00:26:22.375>let <00:26:22.550>you <00:26:22.725>package <00:26:22.900>your <00:26:23.075>progressive <00:26:23.250>web <00:26:23.425>app

588
00:26:24.425 --> 00:26:27.345
<00:26:24.425>to <00:26:24.565>be <00:26:24.705>submitted <00:26:24.845>to <00:26:24.985>the <00:26:25.125>various <00:26:25.264>stores <00:26:25.405>that <00:26:25.544>now <00:26:25.685>accept <00:26:25.825>them.

589
00:26:27.925 --> 00:26:30.345
<00:26:27.925>So <00:26:28.052>all <00:26:28.179>you <00:26:28.306>need <00:26:28.434>is <00:26:28.561>a <00:26:28.688>URL <00:26:28.815>to <00:26:28.943>your <00:26:29.070>progressive <00:26:29.197>web <00:26:29.325>app

590
00:26:30.345 --> 00:26:33.345
<00:26:30.345>and <00:26:30.500>then <00:26:30.656>you <00:26:30.811>get <00:26:30.967>packages <00:26:31.122>for <00:26:31.278>Windows, <00:26:31.433>Android <00:26:31.589>and <00:26:31.745>Samsung.

591
00:26:36.155 --> 00:26:39.255
<00:26:36.155>So <00:26:36.310>another <00:26:36.466>thing <00:26:36.621>I'd <00:26:36.777>like <00:26:36.932>to <00:26:37.088>mention <00:26:37.243>is <00:26:37.399>this <00:26:37.555>concept

592
00:26:39.515 --> 00:26:40.895
<00:26:39.515>of <00:26:40.757>twas.

593
00:26:41.475 --> 00:26:44.525
<00:26:41.475>So, <00:26:41.675>um, <00:26:41.875>trusted <00:26:42.074>web <00:26:42.274>activities <00:26:42.475>are <00:26:42.675>a <00:26:42.875>way

594
00:26:44.525 --> 00:26:47.485
<00:26:44.525>to <00:26:44.680>open <00:26:44.836>a <00:26:44.991>progressive <00:26:45.147>web <00:26:45.302>app <00:26:45.458>from <00:26:45.613>an <00:26:45.769>Android <00:26:45.925>application.

595
00:26:47.985 --> 00:26:51.005
<00:26:47.985>Um, <00:26:48.140>and <00:26:48.296>it's <00:26:48.451>using <00:26:48.607>a <00:26:48.762>protocol <00:26:48.918>based <00:26:49.073>on <00:26:49.229>custom <00:26:49.385>tab.

596
00:26:51.145 --> 00:26:53.165
<00:26:51.145>So <00:26:51.345>it's <00:26:51.545>sort <00:26:51.745>of <00:26:51.945>like <00:26:52.145>a <00:26:52.345>web <00:26:52.545>view,

597
00:26:53.165 --> 00:26:56.445
<00:26:53.165>but <00:26:53.305>a <00:26:53.445>web <00:26:53.585>view <00:26:53.725>that's <00:26:53.865>only <00:26:54.004>intended <00:26:54.145>to <00:26:54.284>load <00:26:54.425>a <00:26:54.565>domain

598
00:26:56.445 --> 00:27:00.005
<00:26:56.445>that <00:26:56.620>you <00:26:56.794>own <00:26:56.970>and <00:26:57.145>have <00:26:57.320>complete <00:26:57.495>control <00:26:57.669>over, <00:26:57.845>meaning

599
00:27:00.005 --> 00:27:02.805
<00:27:00.005>that <00:27:00.205>you <00:27:00.405>can <00:27:00.605>actually <00:27:00.805>grants <00:27:01.005>more <00:27:01.205>like <00:27:01.405>special

600
00:27:02.945 --> 00:27:04.205
<00:27:02.945>access <00:27:03.228>and <00:27:03.512>things <00:27:03.795>like <00:27:04.079>that.

601
00:27:05.265 --> 00:27:07.005
<00:27:05.265>And <00:27:05.465>if <00:27:05.665>you're <00:27:05.865>interested <00:27:06.065>in <00:27:06.265>checking <00:27:06.465>that <00:27:06.665>out,

602
00:27:07.465 --> 00:27:09.925
<00:27:07.465>I'd <00:27:07.639>recommend <00:27:07.814>um, <00:27:07.990>checking <00:27:08.165>out <00:27:08.340>this <00:27:08.514>library <00:27:08.689>called <00:27:08.865>bubble

603
00:27:09.925 --> 00:27:12.165
<00:27:09.925>Wrap, <00:27:10.205>which <00:27:10.485>is <00:27:10.764>actually <00:27:11.044>just <00:27:11.325>intended

604
00:27:12.425 --> 00:27:16.125
<00:27:12.425>for <00:27:12.580>front <00:27:12.736>end <00:27:12.891>developers <00:27:13.047>to <00:27:13.202>launch <00:27:13.358>their <00:27:13.513>PWAs <00:27:13.669>as <00:27:13.825>twas.

605
00:27:17.875 --> 00:27:21.575
<00:27:17.875>But <00:27:17.991>you <00:27:18.108>may <00:27:18.225>be <00:27:18.341>wondering <00:27:18.458>like <00:27:18.575>what <00:27:18.691>the <00:27:18.808>use <00:27:18.925>case <00:27:19.041>of <00:27:19.158>twas <00:27:19.275>are

606
00:27:21.795 --> 00:27:24.135
<00:27:21.795>and <00:27:21.995>I <00:27:22.195>think <00:27:22.395>there's <00:27:22.595>basically <00:27:22.795>two <00:27:22.995>scenarios <00:27:23.195>in

607
00:27:24.135 --> 00:27:25.295
<00:27:24.135>which <00:27:24.396>it <00:27:24.657>would <00:27:24.918>be <00:27:25.179>used.

608
00:27:25.835 --> 00:27:27.735
<00:27:25.835>So <00:27:26.010>I <00:27:26.185>think <00:27:26.360>the <00:27:26.535>main <00:27:26.710>use <00:27:26.885>cases <00:27:27.060>may <00:27:27.235>be

609
00:27:27.735 --> 00:27:29.655
<00:27:27.735>that <00:27:27.968>you <00:27:28.201>already <00:27:28.435>have <00:27:28.668>an <00:27:28.901>Android <00:27:29.135>application,

610
00:27:30.035 --> 00:27:32.655
<00:27:30.035>but <00:27:30.210>maybe <00:27:30.385>you <00:27:30.560>want <00:27:30.735>to <00:27:30.910>move <00:27:31.085>some <00:27:31.260>dedicated <00:27:31.435>pages

611
00:27:32.835 --> 00:27:34.135
<00:27:32.835>to <00:27:33.127>a <00:27:33.420>progressive <00:27:33.712>web <00:27:34.005>app

612
00:27:34.135 --> 00:27:36.135
<00:27:34.135>to <00:27:34.335>get <00:27:34.535>certain <00:27:34.735>benefits <00:27:34.935>like <00:27:35.135>of <00:27:35.335>the <00:27:35.535>web.

613
00:27:36.155 --> 00:27:38.615
<00:27:36.155>So <00:27:36.355>for <00:27:36.555>example, <00:27:36.754>if <00:27:36.955>you <00:27:37.155>have <00:27:37.355>an <00:27:37.555>about

614
00:27:38.635 --> 00:27:41.855
<00:27:38.635>or <00:27:38.790>help <00:27:38.946>section <00:27:39.101>that's <00:27:39.257>updated <00:27:39.412>a <00:27:39.568>lot, <00:27:39.723>you <00:27:39.879>might <00:27:40.035>want

615
00:27:41.855 --> 00:27:45.775
<00:27:41.855>to <00:27:41.971>change <00:27:42.088>this <00:27:42.205>to <00:27:42.321>A <00:27:42.438>TWA <00:27:42.555>so <00:27:42.671>that <00:27:42.788>it <00:27:42.905>can <00:27:43.021>have <00:27:43.138>the <00:27:43.255>benefit

616
00:27:45.915 --> 00:27:48.175
<00:27:45.915>of <00:27:46.148>being <00:27:46.381>able <00:27:46.615>to <00:27:46.848>update <00:27:47.081>being <00:27:47.315>updated

617
00:27:48.615 --> 00:27:49.695
<00:27:48.615>frequently <00:27:48.858>and <00:27:49.101>things <00:27:49.344>like <00:27:49.587>that.

618
00:27:50.675 --> 00:27:52.975
<00:27:50.675>And <00:27:50.908>over <00:27:51.141>time <00:27:51.375>you <00:27:51.608>can <00:27:51.841>transition <00:27:52.075>more

619
00:27:52.975 --> 00:27:55.415
<00:27:52.975>and <00:27:53.091>more <00:27:53.208>of <00:27:53.324>the <00:27:53.441>app <00:27:53.558>to <00:27:53.675>the <00:27:53.791>web <00:27:53.908>version <00:27:54.024>if <00:27:54.141>you <00:27:54.258>need <00:27:54.375>to

620
00:27:56.475 --> 00:27:58.055
<00:27:56.475>or <00:27:56.675>you <00:27:56.875>might <00:27:57.074>wanna <00:27:57.274>go <00:27:57.475>the <00:27:57.675>other <00:27:57.875>way.

621
00:27:58.275 --> 00:28:01.295
<00:27:58.275>So <00:27:58.415>if <00:27:58.555>you <00:27:58.695>already <00:27:58.835>have <00:27:58.975>a <00:27:59.115>fully <00:27:59.255>fledged <00:27:59.395>progressive <00:27:59.535>web <00:27:59.675>app,

622
00:28:01.555 --> 00:28:03.655
<00:28:01.555>but <00:28:01.788>your <00:28:02.021>app <00:28:02.255>requires <00:28:02.488>some <00:28:02.721>particular <00:28:02.955>feature

623
00:28:03.715 --> 00:28:06.375
<00:28:03.715>that's <00:28:03.995>only <00:28:04.274>available <00:28:04.554>on <00:28:04.834>native <00:28:05.115>applications

624
00:28:07.075 --> 00:28:10.255
<00:28:07.075>and <00:28:07.191>you <00:28:07.308>can <00:28:07.425>do <00:28:07.541>it <00:28:07.658>this <00:28:07.775>way <00:28:07.891>where <00:28:08.008>most <00:28:08.125>of <00:28:08.241>the <00:28:08.358>um, <00:28:08.475>pages

625
00:28:10.355 --> 00:28:12.615
<00:28:10.355>or <00:28:10.530>most <00:28:10.705>of <00:28:10.880>the <00:28:11.055>views <00:28:11.230>will <00:28:11.405>be <00:28:11.580>the <00:28:11.755>TWA

626
00:28:12.875 --> 00:28:15.335
<00:28:12.875>but <00:28:13.155>then <00:28:13.435>um, <00:28:13.715>just <00:28:13.995>like <00:28:14.275>one

627
00:28:15.435 --> 00:28:17.855
<00:28:15.435>or <00:28:15.668>two <00:28:15.901>particular <00:28:16.135>pages <00:28:16.368>that <00:28:16.601>you <00:28:16.835>need

628
00:28:17.855 --> 00:28:20.735
<00:28:17.855>to <00:28:17.995>access <00:28:18.135>a <00:28:18.275>particular <00:28:18.415>feature <00:28:18.555>will <00:28:18.695>then <00:28:18.835>be <00:28:18.975>like <00:28:19.115>the <00:28:19.255>native

629
00:28:20.885 --> 00:28:22.055
<00:28:20.885>Android <00:28:21.938>application.

630
00:28:23.665 --> 00:28:26.125
<00:28:23.665>But <00:28:23.865>basically <00:28:24.065>a <00:28:24.264>TWA <00:28:24.465>is <00:28:24.665>just <00:28:24.865>a <00:28:25.065>useful

631
00:28:26.125 --> 00:28:27.605
<00:28:26.125>combination <00:28:26.569>of <00:28:27.013>these <00:28:27.457>technologies.

632
00:28:27.745 --> 00:28:30.525
<00:28:27.745>So <00:28:27.885>you <00:28:28.024>get <00:28:28.165>to <00:28:28.304>choose <00:28:28.445>which <00:28:28.584>portions <00:28:28.725>of <00:28:28.864>your <00:28:29.004>app <00:28:29.145>need

633
00:28:30.525 --> 00:28:32.765
<00:28:30.525>to <00:28:30.700>be <00:28:30.875>a <00:28:31.050>progressive <00:28:31.225>web <00:28:31.400>app <00:28:31.575>versus <00:28:31.750>a <00:28:31.925>native

634
00:28:32.835 --> 00:28:34.085
<00:28:32.835>Android <00:28:33.960>application.

635
00:28:35.635 --> 00:28:38.655
<00:28:35.635>And <00:28:35.762>I <00:28:35.889>really <00:28:36.016>like <00:28:36.144>how <00:28:36.271>the <00:28:36.398>Microsoft <00:28:36.525>Edge <00:28:36.653>team <00:28:36.780>put <00:28:36.907>it <00:28:37.035>in

636
00:28:38.655 --> 00:28:41.335
<00:28:38.655>their <00:28:38.855>article <00:28:39.055>announcing <00:28:39.254>progressive <00:28:39.455>web <00:28:39.655>apps <00:28:39.855>on <00:28:40.055>the

637
00:28:41.685 --> 00:28:43.695
<00:28:41.685>Microsoft <00:28:41.918>store <00:28:42.151>like <00:28:42.385>a <00:28:42.618>few <00:28:42.851>years <00:28:43.085>back.

638
00:28:44.155 --> 00:28:45.455
<00:28:44.155>So <00:28:44.545>basically <00:28:44.935>when <00:28:45.324>um,

639
00:28:45.685 --> 00:28:47.535
<00:28:45.685>they <00:28:45.965>were <00:28:46.245>asked <00:28:46.524>whether <00:28:46.804>it's <00:28:47.085>recommended

640
00:28:47.635 --> 00:28:49.175
<00:28:47.635>to <00:28:47.912>build <00:28:48.189>a <00:28:48.466>progressive <00:28:48.743>web <00:28:49.021>app

641
00:28:49.175 --> 00:28:51.855
<00:28:49.175>or <00:28:49.375>a <00:28:49.575>native <00:28:49.774>application, <00:28:49.975>their <00:28:50.175>answer <00:28:50.375>was <00:28:50.575>basically

642
00:28:51.855 --> 00:28:54.295
<00:28:51.855>that <00:28:52.088>this <00:28:52.321>is <00:28:52.555>just <00:28:52.788>a <00:28:53.021>false <00:28:53.255>dichotomy

643
00:28:55.235 --> 00:28:57.565
<00:28:55.235>that <00:28:55.468>there <00:28:55.701>are <00:28:55.935>just <00:28:56.168>many <00:28:56.401>different <00:28:56.635>factors

644
00:28:57.635 --> 00:29:01.165
<00:28:57.635>that <00:28:57.775>should <00:28:57.915>be <00:28:58.055>taken <00:28:58.195>into <00:28:58.335>account <00:28:58.475>when <00:28:58.615>deciding <00:28:58.754>on <00:28:58.895>if <00:28:59.035>an

645
00:29:01.165 --> 00:29:03.245
<00:29:01.165>application <00:29:01.398>should <00:29:01.631>be <00:29:01.865>web-based <00:29:02.098>or <00:29:02.331>native <00:29:02.565>based.

646
00:29:03.245 --> 00:29:06.325
<00:29:03.245>There's <00:29:03.445>just <00:29:03.645>no <00:29:03.844>one <00:29:04.044>right <00:29:04.245>answer <00:29:04.445>for <00:29:04.645>all.

647
00:29:08.595 --> 00:29:10.335
<00:29:08.595>So <00:29:08.875>the <00:29:09.155>roundup <00:29:09.435>on <00:29:09.715>install <00:29:09.995>ability,

648
00:29:10.635 --> 00:29:12.855
<00:29:10.635>so <00:29:10.810>progressive <00:29:10.985>web <00:29:11.160>apps <00:29:11.335>have <00:29:11.510>made <00:29:11.685>a <00:29:11.860>lot <00:29:12.035>of

649
00:29:13.535 --> 00:29:16.255
<00:29:13.535>progress <00:29:13.735>on <00:29:13.935>this <00:29:14.135>front, <00:29:14.335>particularly <00:29:14.535>with <00:29:14.735>the <00:29:14.935>support

650
00:29:16.315 --> 00:29:17.735
<00:29:16.315>for <00:29:16.634>adding <00:29:16.954>to <00:29:17.273>home <00:29:17.592>screen.

651
00:29:18.155 --> 00:29:21.175
<00:29:18.155>We <00:29:18.295>also <00:29:18.435>have <00:29:18.575>a <00:29:18.715>lot <00:29:18.855>more <00:29:18.995>control <00:29:19.135>over <00:29:19.274>the <00:29:19.415>install <00:29:19.555>experience

652
00:29:21.595 --> 00:29:24.495
<00:29:21.595>and <00:29:21.828>much <00:29:22.061>deeper <00:29:22.295>integration <00:29:22.528>with <00:29:22.761>the <00:29:22.995>device.

653
00:29:25.155 --> 00:29:26.335
<00:29:25.155>But <00:29:25.509>like <00:29:25.863>with <00:29:26.217>capabilities,

654
00:29:26.675 --> 00:29:29.535
<00:29:26.675>not <00:29:26.850>all <00:29:27.024>platforms <00:29:27.200>have <00:29:27.375>really <00:29:27.550>made <00:29:27.725>that <00:29:27.899>progress <00:29:28.075>equally.

655
00:29:30.315 --> 00:29:33.455
<00:29:30.315>But <00:29:30.431>on <00:29:30.548>the <00:29:30.665>whole, <00:29:30.781>I <00:29:30.898>think <00:29:31.015>we <00:29:31.131>are <00:29:31.248>in <00:29:31.365>a <00:29:31.481>really <00:29:31.598>good <00:29:31.715>position.

656
00:29:35.755 --> 00:29:37.655
<00:29:35.755>So <00:29:35.988>what's <00:29:36.221>next <00:29:36.455>for <00:29:36.688>progressive <00:29:36.921>web <00:29:37.155>apps?

657
00:29:37.655 --> 00:29:38.695
<00:29:37.655>So <00:29:37.889>where <00:29:38.123>do <00:29:38.357>we <00:29:38.591>expect

658
00:29:38.695 --> 00:29:41.445
<00:29:38.695>to <00:29:38.870>be <00:29:39.044>in <00:29:39.220>let's <00:29:39.395>say <00:29:39.570>like <00:29:39.745>another <00:29:39.919>five <00:29:40.095>years?

659
00:29:43.065 --> 00:29:45.245
<00:29:43.065>And <00:29:43.220>obviously <00:29:43.376>the <00:29:43.531>goal <00:29:43.687>is <00:29:43.842>to <00:29:43.998>get <00:29:44.153>to <00:29:44.309>the <00:29:44.465>state

660
00:29:45.245 --> 00:29:48.405
<00:29:45.245>where <00:29:45.419>progressive <00:29:45.594>web <00:29:45.770>apps <00:29:45.945>can <00:29:46.120>be <00:29:46.294>truly <00:29:46.469>capable, <00:29:46.645>reliable,

661
00:29:48.545 --> 00:29:50.845
<00:29:48.545>and <00:29:48.825>installable <00:29:49.105>even <00:29:49.385>to <00:29:49.665>the <00:29:49.945>extent

662
00:29:50.845 --> 00:29:53.285
<00:29:50.845>that <00:29:51.125>they <00:29:51.405>maybe <00:29:51.685>exceed <00:29:51.965>native <00:29:52.245>applications.

663
00:29:53.545 --> 00:29:55.485
<00:29:53.545>Um, <00:29:53.895>whatever <00:29:54.245>that <00:29:54.595>actually <00:29:54.945>means

664
00:29:55.505 --> 00:29:57.205
<00:29:55.505>or <00:29:55.738>whatever <00:29:55.971>that <00:29:56.205>would <00:29:56.438>actually <00:29:56.671>look <00:29:56.905>like.

665
00:29:58.585 --> 00:30:01.445
<00:29:58.585>And <00:29:58.725>to <00:29:58.865>get <00:29:59.005>there, <00:29:59.145>we <00:29:59.285>do <00:29:59.425>still <00:29:59.565>need <00:29:59.705>to <00:29:59.845>make <00:29:59.985>progress

666
00:30:01.445 --> 00:30:04.125
<00:30:01.445>with <00:30:01.620>capabilities <00:30:01.794>and <00:30:01.970>I <00:30:02.145>think <00:30:02.320>there's <00:30:02.495>like <00:30:02.669>a <00:30:02.845>lot

667
00:30:04.125 --> 00:30:05.685
<00:30:04.125>of <00:30:04.405>features <00:30:04.685>currently <00:30:04.965>in <00:30:05.245>the <00:30:05.525>pipeline

668
00:30:05.685 --> 00:30:08.165
<00:30:05.685>that <00:30:05.885>should <00:30:06.085>keep <00:30:06.284>moving <00:30:06.485>progressive <00:30:06.685>web <00:30:06.885>apps <00:30:07.085>closer

669
00:30:08.225 --> 00:30:11.565
<00:30:08.225>and <00:30:08.425>closer <00:30:08.625>towards <00:30:08.824>feature <00:30:09.024>parity <00:30:09.225>with <00:30:09.425>native <00:30:09.625>applications.

670
00:30:12.145 --> 00:30:13.485
<00:30:12.145>And <00:30:12.317>these <00:30:12.489>are <00:30:12.661>just <00:30:12.834>some <00:30:13.006>of <00:30:13.178>the <00:30:13.351>APIs

671
00:30:13.485 --> 00:30:15.325
<00:30:13.485>that <00:30:13.764>I'm <00:30:14.044>personally <00:30:14.324>really <00:30:14.604>excited <00:30:14.885>about

672
00:30:15.865 --> 00:30:18.165
<00:30:15.865>and <00:30:16.145>are <00:30:16.425>already <00:30:16.705>either <00:30:16.985>in <00:30:17.265>development

673
00:30:18.225 --> 00:30:19.605
<00:30:18.225>or <00:30:18.846>under <00:30:19.467>consideration.

674
00:30:19.945 --> 00:30:23.555
<00:30:19.945>So <00:30:20.178>the <00:30:20.411>file <00:30:20.645>handling <00:30:20.878>API, <00:30:21.111>so <00:30:21.345>that's,

675
00:30:24.215 --> 00:30:27.155
<00:30:24.215>we <00:30:24.355>can <00:30:24.495>already <00:30:24.635>like <00:30:24.774>open, <00:30:24.915>if <00:30:25.054>you're <00:30:25.195>in <00:30:25.334>a <00:30:25.475>progressive <00:30:25.615>app,

676
00:30:27.155 --> 00:30:29.115
<00:30:27.155>you <00:30:27.330>can <00:30:27.504>already <00:30:27.680>like <00:30:27.855>open <00:30:28.030>a <00:30:28.205>file <00:30:28.379>that's <00:30:28.555>saved

677
00:30:29.135 --> 00:30:30.515
<00:30:29.135>to <00:30:29.445>your <00:30:29.756>desktop <00:30:30.066>or <00:30:30.377>whatever,

678
00:30:30.815 --> 00:30:33.995
<00:30:30.815>but <00:30:30.942>with <00:30:31.069>the <00:30:31.196>file <00:30:31.324>handling <00:30:31.451>API <00:30:31.578>it <00:30:31.705>will <00:30:31.833>let <00:30:31.960>you <00:30:32.087>start <00:30:32.215>from

679
00:30:33.995 --> 00:30:35.915
<00:30:33.995>the <00:30:34.169>file <00:30:34.344>and <00:30:34.520>say, <00:30:34.695>okay, <00:30:34.870>I <00:30:35.044>now <00:30:35.219>I <00:30:35.395>want

680
00:30:35.915 --> 00:30:39.275
<00:30:35.915>to <00:30:36.070>open <00:30:36.226>this <00:30:36.381>in <00:30:36.537>this <00:30:36.692>particular <00:30:36.848>like <00:30:37.003>progressive <00:30:37.159>web <00:30:37.315>app.

681
00:30:39.275 --> 00:30:41.075
<00:30:39.275>So <00:30:39.450>it's <00:30:39.625>kind <00:30:39.800>of <00:30:39.975>like <00:30:40.150>the <00:30:40.325>other <00:30:40.500>way <00:30:40.675>around

682
00:30:41.615 --> 00:30:43.995
<00:30:41.615>and <00:30:41.848>then <00:30:42.081>like <00:30:42.315>tabs <00:30:42.548>having <00:30:42.781>like <00:30:43.015>permissions

683
00:30:44.455 --> 00:30:47.675
<00:30:44.455>for <00:30:44.629>everything <00:30:44.804>like <00:30:44.980>happening <00:30:45.155>on <00:30:45.330>install, <00:30:45.504>things <00:30:45.679>like <00:30:45.855>that.

684
00:30:47.815 --> 00:30:49.675
<00:30:47.815>And <00:30:47.990>there's <00:30:48.165>just <00:30:48.340>kind <00:30:48.515>of <00:30:48.690>like <00:30:48.865>an <00:30:49.040>endless <00:30:49.215>list

685
00:30:49.695 --> 00:30:51.555
<00:30:49.695>of <00:30:49.928>amazing <00:30:50.161>features <00:30:50.395>that <00:30:50.628>are <00:30:50.861>coming <00:30:51.095>up.

686
00:30:53.285 --> 00:30:54.585
<00:30:53.285>But <00:30:53.480>one <00:30:53.675>thing <00:30:53.870>to <00:30:54.065>note <00:30:54.260>is <00:30:54.455>that

687
00:30:55.185 --> 00:30:56.745
<00:30:55.185>although <00:30:55.465>all <00:30:55.745>of <00:30:56.024>these <00:30:56.304>features <00:30:56.585>are

688
00:30:56.765 --> 00:30:59.665
<00:30:56.765>and <00:30:56.892>will <00:30:57.019>be <00:30:57.146>great, <00:30:57.274>I <00:30:57.401>think <00:30:57.528>the <00:30:57.655>main <00:30:57.783>thing <00:30:57.910>that <00:30:58.037>really <00:30:58.165>needs

689
00:30:59.665 --> 00:31:02.585
<00:30:59.665>to <00:30:59.805>be <00:30:59.945>addressed <00:31:00.085>over <00:31:00.225>the <00:31:00.365>next <00:31:00.504>five <00:31:00.645>years <00:31:00.784>is <00:31:00.925>this <00:31:01.065>parity

690
00:31:02.585 --> 00:31:05.065
<00:31:02.585>between <00:31:02.865>the <00:31:03.145>web <00:31:03.425>on <00:31:03.705>different <00:31:03.985>platforms.

691
00:31:05.125 --> 00:31:07.505
<00:31:05.125>So <00:31:05.358>currently <00:31:05.591>the <00:31:05.825>web <00:31:06.058>on <00:31:06.291>like <00:31:06.525>Android

692
00:31:07.505 --> 00:31:11.025
<00:31:07.505>and <00:31:07.621>Windows <00:31:07.738>is <00:31:07.855>like <00:31:07.971>kind <00:31:08.088>of <00:31:08.205>miles <00:31:08.321>ahead <00:31:08.438>of <00:31:08.555>the <00:31:08.671>web <00:31:08.788>on <00:31:08.905>iOS

693
00:31:11.445 --> 00:31:13.745
<00:31:11.445>and <00:31:11.620>we <00:31:11.794>kind <00:31:11.970>of <00:31:12.145>need <00:31:12.320>to <00:31:12.495>be <00:31:12.669>careful <00:31:12.845>not

694
00:31:13.745 --> 00:31:14.985
<00:31:13.745>to <00:31:13.968>end <00:31:14.191>up <00:31:14.414>in <00:31:14.637>a <00:31:14.860>situation

695
00:31:14.985 --> 00:31:17.505
<00:31:14.985>where <00:31:15.185>the <00:31:15.385>web <00:31:15.584>suffers <00:31:15.784>from <00:31:15.985>the <00:31:16.185>same <00:31:16.385>issues

696
00:31:17.725 --> 00:31:18.945
<00:31:17.725>as <00:31:18.274>native <00:31:18.822>applications

697
00:31:19.335 --> 00:31:21.865
<00:31:19.335>because <00:31:19.490>the <00:31:19.646>reason <00:31:19.801>that <00:31:19.957>progressive <00:31:20.112>web <00:31:20.268>apps <00:31:20.423>are <00:31:20.579>the <00:31:20.735>best

698
00:31:21.925 --> 00:31:22.985
<00:31:21.925>of <00:31:22.243>both <00:31:22.561>worlds <00:31:22.879>is

699
00:31:22.985 --> 00:31:25.425
<00:31:22.985>because <00:31:23.140>they <00:31:23.296>actually <00:31:23.451>still <00:31:23.607>have <00:31:23.762>that <00:31:23.918>reach <00:31:24.073>of <00:31:24.229>the <00:31:24.385>web.

700
00:31:26.125 --> 00:31:28.945
<00:31:26.125>But <00:31:26.265>if <00:31:26.405>there <00:31:26.545>becomes <00:31:26.685>a <00:31:26.825>divide <00:31:26.965>between <00:31:27.105>how <00:31:27.245>the <00:31:27.385>web <00:31:27.525>works,

701
00:31:28.945 --> 00:31:30.745
<00:31:28.945>depending <00:31:29.294>on <00:31:29.645>what <00:31:29.995>platform, <00:31:30.345>then

702
00:31:31.345 --> 00:31:34.225
<00:31:31.345>progressive <00:31:31.545>web <00:31:31.745>apps <00:31:31.945>become <00:31:32.145>basically <00:31:32.345>no <00:31:32.545>difference <00:31:32.745>from

703
00:31:34.225 --> 00:31:37.625
<00:31:34.225>native <00:31:34.399>applications <00:31:34.574>because <00:31:34.750>it's <00:31:34.925>still <00:31:35.100>the <00:31:35.274>web <00:31:35.449>on <00:31:35.625>this

704
00:31:37.905 --> 00:31:39.825
<00:31:37.905>platform <00:31:38.138>and <00:31:38.371>the <00:31:38.605>web <00:31:38.838>on <00:31:39.071>that <00:31:39.305>platform.

705
00:31:41.055 --> 00:31:44.475
<00:31:41.055>So <00:31:41.182>in <00:31:41.309>order <00:31:41.436>for <00:31:41.564>progressive <00:31:41.691>web <00:31:41.818>apps <00:31:41.945>to <00:31:42.073>really <00:31:42.200>be <00:31:42.327>this <00:31:42.455>best

706
00:31:44.535 --> 00:31:47.395
<00:31:44.535>of <00:31:44.675>both <00:31:44.815>worlds <00:31:44.955>that <00:31:45.095>we <00:31:45.235>were <00:31:45.375>promised, <00:31:45.515>the <00:31:45.655>web <00:31:45.795>really <00:31:45.935>needs

707
00:31:47.395 --> 00:31:49.435
<00:31:47.395>to <00:31:47.675>be <00:31:47.955>the <00:31:48.235>same <00:31:48.514>web <00:31:48.795>everywhere.

708
00:31:50.765 --> 00:31:53.635
<00:31:50.765>Thank <00:31:50.920>you <00:31:51.076>and <00:31:51.231>um, <00:31:51.387>enjoy <00:31:51.542>the <00:31:51.698>rest <00:31:51.853>of <00:31:52.009>the <00:31:52.165>conference.

709
00:31:53.855 --> 00:31:56.035
<00:31:53.855>Um, <00:31:53.995>so <00:31:54.135>I <00:31:54.275>think <00:31:54.415>we're <00:31:54.555>onto <00:31:54.695>to <00:31:54.835>Q <00:31:54.975>and <00:31:55.115>A <00:31:55.255>now.

710
00:31:57.735 --> 00:31:59.395
<00:31:57.735>Yes, <00:31:58.084>URI, <00:31:58.435>thanks <00:31:58.784>a <00:31:59.135>lot.

711
00:31:59.615 --> 00:32:02.315
<00:31:59.615>Um, <00:31:59.848>I <00:32:00.081>had <00:32:00.315>to <00:32:00.548>say <00:32:00.781>I <00:32:01.015>did,

712
00:32:02.515 --> 00:32:04.835
<00:32:02.515>I <00:32:02.715>I <00:32:02.915>didn't <00:32:03.115>know <00:32:03.315>most <00:32:03.515>of <00:32:03.715>the <00:32:03.915>things.

713
00:32:04.975 --> 00:32:08.395
<00:32:04.975>Um, <00:32:05.102>and <00:32:05.229>of <00:32:05.356>course <00:32:05.484>you <00:32:05.611>work <00:32:05.738>with <00:32:05.865>PWAs <00:32:05.993>on <00:32:06.120>a <00:32:06.247>daily <00:32:06.375>basis

714
00:32:08.455 --> 00:32:09.915
<00:32:08.455>so <00:32:08.619>I <00:32:08.783>expect <00:32:08.947>you <00:32:09.111>to <00:32:09.276>be <00:32:09.440>up <00:32:09.604>to <00:32:09.769>date,

715
00:32:10.175 --> 00:32:13.555
<00:32:10.175>but <00:32:10.315>like <00:32:10.455>the <00:32:10.595>shortcuts <00:32:10.735>when <00:32:10.875>when <00:32:11.014>you <00:32:11.155>long <00:32:11.294>press <00:32:11.435>the <00:32:11.575>app

716
00:32:13.585 --> 00:32:16.275
<00:32:13.585>icon, <00:32:13.760>I <00:32:13.935>was <00:32:14.110>amazed <00:32:14.285>that <00:32:14.460>that's <00:32:14.635>possible <00:32:14.810>through <00:32:14.985>I,

717
00:32:17.095 --> 00:32:19.475
<00:32:17.095>if <00:32:17.235>you <00:32:17.375>would've <00:32:17.515>told <00:32:17.655>me <00:32:17.795>this <00:32:17.935>would <00:32:18.075>be <00:32:18.215>possible <00:32:18.355>in <00:32:18.495>five

718
00:32:19.475 --> 00:32:20.715
<00:32:19.475>years, <00:32:19.698>I <00:32:19.921>would <00:32:20.144>be <00:32:20.367>like <00:32:20.591>nah,

719
00:32:21.575 --> 00:32:24.635
<00:32:21.575>but <00:32:21.808>so <00:32:22.041>that's <00:32:22.275>really <00:32:22.508>cool <00:32:22.741>to <00:32:22.975>see

720
00:32:24.635 --> 00:32:27.115
<00:32:24.635>that <00:32:24.868>there's <00:32:25.101>so <00:32:25.335>many <00:32:25.568>new <00:32:25.801>things. <00:32:26.035>Um,

721
00:32:27.465 --> 00:32:30.835
<00:32:27.465>Yeah, <00:32:27.620>I <00:32:27.776>feel <00:32:27.931>like <00:32:28.087>we've <00:32:28.242>maybe <00:32:28.398>just <00:32:28.553>been <00:32:28.709>like <00:32:28.865>overloaded

722
00:32:30.835 --> 00:32:33.355
<00:32:30.835>with <00:32:30.975>too <00:32:31.115>many <00:32:31.255>features <00:32:31.395>that <00:32:31.535>we <00:32:31.675>haven't <00:32:31.815>even <00:32:31.955>had <00:32:32.095>enough <00:32:32.235>time

723
00:32:33.495 --> 00:32:36.075
<00:32:33.495>to <00:32:33.695>like <00:32:33.895>look <00:32:34.094>and <00:32:34.294>know <00:32:34.495>what <00:32:34.695>there <00:32:34.895>is.

724
00:32:36.865 --> 00:32:39.565
<00:32:36.865>Yeah. <00:32:36.992>But <00:32:37.119>luckily <00:32:37.246>we <00:32:37.374>have <00:32:37.501>to <00:32:37.628>to <00:32:37.755>keep <00:32:37.883>us <00:32:38.010>up <00:32:38.137>to <00:32:38.265>date.

725
00:32:41.385 --> 00:32:44.045
<00:32:41.385>Um, <00:32:41.560>so <00:32:41.735>we're <00:32:41.910>gonna <00:32:42.085>jump <00:32:42.260>into <00:32:42.435>the <00:32:42.610>audience <00:32:42.785>questions.

726
00:32:44.185 --> 00:32:46.725
<00:32:44.185>We <00:32:44.360>have <00:32:44.534>uh, <00:32:44.710>a <00:32:44.885>bunch <00:32:45.060>of <00:32:45.235>them <00:32:45.409>come <00:32:45.585>in

727
00:32:46.725 --> 00:32:48.605
<00:32:46.725>and <00:32:46.925>we <00:32:47.125>have <00:32:47.324>time <00:32:47.524>left, <00:32:47.725>so <00:32:47.925>that's <00:32:48.125>nice.

728
00:32:49.055 --> 00:32:50.885
<00:32:49.055>First <00:32:49.405>question <00:32:49.755>is <00:32:50.105>from <00:32:50.455>Marcus

729
00:32:51.505 --> 00:32:55.565
<00:32:51.505>and <00:32:51.660>uh, <00:32:51.816>he's <00:32:51.971>asking <00:32:52.127>what <00:32:52.282>do <00:32:52.438>you <00:32:52.593>think <00:32:52.749>uh, <00:32:52.905>currently

730
00:32:56.305 --> 00:32:58.205
<00:32:56.305>the <00:32:56.538>biggest <00:32:56.771>concept <00:32:57.005>of <00:32:57.238>A <00:32:57.471>PWA <00:32:57.705>is

731
00:32:59.215 --> 00:33:00.215
<00:32:59.215>The <00:32:59.665>biggest <00:33:00.115>cons?

732
00:33:00.785 --> 00:33:05.265
<00:33:00.785>Yeah. <00:33:01.018>Um, <00:33:01.251>well <00:33:01.485>I <00:33:01.718>think <00:33:01.951>a <00:33:02.185>lot

733
00:33:05.265 --> 00:33:10.145
<00:33:05.265>of <00:33:05.420>the <00:33:05.576>reason <00:33:05.731>why <00:33:05.887>people <00:33:06.042>favor <00:33:06.198>um, <00:33:06.353>native <00:33:06.509>applications <00:33:06.665>is

734
00:33:10.925 --> 00:33:15.265
<00:33:10.925>one <00:33:11.125>how <00:33:11.325>they <00:33:11.524>are <00:33:11.725>kind <00:33:11.925>of <00:33:12.125>built <00:33:12.325>specifically

735
00:33:15.365 --> 00:33:16.665
<00:33:15.365>for <00:33:15.755>a <00:33:16.145>particular <00:33:16.534>device.

736
00:33:17.125 --> 00:33:19.825
<00:33:17.125>So <00:33:17.280>I <00:33:17.436>think <00:33:17.591>it's <00:33:17.747>hard <00:33:17.902>to <00:33:18.058>replicate <00:33:18.213>that <00:33:18.369>feel <00:33:18.525>of

737
00:33:20.695 --> 00:33:24.265
<00:33:20.695>like <00:33:20.850>being <00:33:21.006>able <00:33:21.161>to <00:33:21.317>know <00:33:21.472>that <00:33:21.628>okay, <00:33:21.783>this <00:33:21.939>is <00:33:22.095>exactly

738
00:33:24.265 --> 00:33:25.785
<00:33:24.265>what <00:33:24.460>this <00:33:24.655>device <00:33:24.851>is <00:33:25.046>going <00:33:25.242>to <00:33:25.437>look <00:33:25.633>like

739
00:33:26.525 --> 00:33:30.505
<00:33:26.525>and <00:33:26.632>we <00:33:26.740>can, <00:33:26.848>I <00:33:26.955>don't <00:33:27.063>know, <00:33:27.171>make <00:33:27.278>it <00:33:27.386>so <00:33:27.494>that <00:33:27.601>if <00:33:27.709>you, <00:33:27.817>you <00:33:27.925>know,

740
00:33:30.505 --> 00:33:32.385
<00:33:30.505>touch <00:33:30.680>the <00:33:30.855>screen <00:33:31.030>in <00:33:31.205>this <00:33:31.380>way, <00:33:31.555>it <00:33:31.730>does <00:33:31.905>this,

741
00:33:32.605 --> 00:33:33.745
<00:33:32.605>it <00:33:32.947>does <00:33:33.289>that, <00:33:33.630>whatever.

742
00:33:34.005 --> 00:33:35.385
<00:33:34.005>And <00:33:34.182>I <00:33:34.359>think <00:33:34.537>that's <00:33:34.714>one <00:33:34.892>of <00:33:35.069>the <00:33:35.247>things

743
00:33:35.385 --> 00:33:37.345
<00:33:35.385>that <00:33:35.665>like <00:33:35.945>iOS <00:33:36.225>did <00:33:36.504>really <00:33:36.785>well.

744
00:33:38.325 --> 00:33:41.025
<00:33:38.325>It <00:33:38.500>just <00:33:38.675>had <00:33:38.850>a <00:33:39.025>very <00:33:39.200>good <00:33:39.375>like <00:33:39.550>user <00:33:39.725>experience

745
00:33:41.045 --> 00:33:43.145
<00:33:41.045>and <00:33:41.185>the <00:33:41.325>only <00:33:41.465>reason <00:33:41.605>they <00:33:41.745>were <00:33:41.885>able <00:33:42.025>to <00:33:42.165>do <00:33:42.305>that <00:33:42.445>was

746
00:33:43.145 --> 00:33:47.585
<00:33:43.145>because <00:33:43.300>um, <00:33:43.456>they <00:33:43.611>have <00:33:43.767>a <00:33:43.922>very <00:33:44.078>limited <00:33:44.233>set <00:33:44.389>of <00:33:44.545>like

747
00:33:47.695 --> 00:33:49.065
<00:33:47.695>what <00:33:48.003>the <00:33:48.311>devices <00:33:48.619>could <00:33:48.928>be.

748
00:33:49.405 --> 00:33:51.825
<00:33:49.405>So <00:33:49.580>it <00:33:49.754>was <00:33:49.930>much <00:33:50.105>easier <00:33:50.280>to <00:33:50.455>say <00:33:50.629>like, <00:33:50.805>okay,

749
00:33:52.065 --> 00:33:54.025
<00:33:52.065>I <00:33:52.345>can <00:33:52.625>actually <00:33:52.905>really <00:33:53.185>customize <00:33:53.465>this.

750
00:33:54.405 --> 00:33:59.345
<00:33:54.405>And <00:33:54.521>the <00:33:54.638>problem <00:33:54.754>I <00:33:54.871>guess <00:33:54.988>problem <00:33:55.105>with <00:33:55.221>the <00:33:55.338>web <00:33:55.455>is <00:33:55.571>that <00:33:55.688>we <00:33:55.805>need

751
00:33:59.345 --> 00:34:01.625
<00:33:59.345>to <00:33:59.520>be <00:33:59.695>accessible, <00:33:59.870>we <00:34:00.045>need <00:34:00.220>to <00:34:00.395>actually <00:34:00.570>be <00:34:00.745>adaptable,

752
00:34:01.625 --> 00:34:02.745
<00:34:01.625>we <00:34:01.877>need <00:34:02.129>to <00:34:02.380>work <00:34:02.632>everywhere.

753
00:34:02.965 --> 00:34:04.825
<00:34:02.965>So <00:34:03.431>creating <00:34:03.898>an <00:34:04.365>experience

754
00:34:04.825 --> 00:34:07.705
<00:34:04.825>that <00:34:05.025>works <00:34:05.225>really <00:34:05.425>well <00:34:05.625>on <00:34:05.825>desktop <00:34:06.025>is <00:34:06.225>going

755
00:34:07.705 --> 00:34:11.985
<00:34:07.705>to <00:34:07.879>be <00:34:08.054>very <00:34:08.230>difficult <00:34:08.404>to <00:34:08.580>also <00:34:08.755>make <00:34:08.929>it <00:34:09.105>feel

756
00:34:12.065 --> 00:34:14.425
<00:34:12.065>as <00:34:12.220>good <00:34:12.376>if <00:34:12.531>you're <00:34:12.687>like <00:34:12.842>using <00:34:12.998>it <00:34:13.153>on <00:34:13.309>your <00:34:13.465>phone

757
00:34:14.445 --> 00:34:15.465
<00:34:14.445>and <00:34:14.628>you <00:34:14.812>are <00:34:14.995>using <00:34:15.179>like <00:34:15.363>your,

758
00:34:15.975 --> 00:34:17.545
<00:34:15.975>it's <00:34:16.174>like <00:34:16.375>a <00:34:16.574>touchscreen <00:34:16.775>and <00:34:16.975>things <00:34:17.174>like <00:34:17.375>that.

759
00:34:17.885 --> 00:34:20.385
<00:34:17.885>So <00:34:18.025>I <00:34:18.165>dunno <00:34:18.305>how <00:34:18.445>we <00:34:18.585>can <00:34:18.725>actually <00:34:18.865>really <00:34:19.005>get <00:34:19.145>around <00:34:19.285>that,

760
00:34:21.045 --> 00:34:23.825
<00:34:21.045>but <00:34:21.185>I <00:34:21.325>hope <00:34:21.465>that <00:34:21.605>there <00:34:21.745>will <00:34:21.885>be <00:34:22.025>some <00:34:22.165>sorts <00:34:22.305>of <00:34:22.445>way

761
00:34:23.825 --> 00:34:26.825
<00:34:23.824>that <00:34:24.000>we <00:34:24.174>can <00:34:24.350>still <00:34:24.524>build <00:34:24.699>one <00:34:24.875>thing <00:34:25.049>for <00:34:25.225>all

762
00:34:27.045 --> 00:34:31.385
<00:34:27.045>but <00:34:27.200>still <00:34:27.356>have <00:34:27.511>it <00:34:27.667>be <00:34:27.822>feel <00:34:27.978>like <00:34:28.133>very <00:34:28.289>custom <00:34:28.445>custom.

763
00:34:31.665 --> 00:34:33.305
<00:34:31.665>I <00:34:31.840>don't <00:34:32.014>know, <00:34:32.190>maybe <00:34:32.364>I'm <00:34:32.540>asking <00:34:32.715>for <00:34:32.889>too <00:34:33.065>much,

764
00:34:33.445 --> 00:34:34.825
<00:34:33.445>but <00:34:33.622>I <00:34:33.799>think <00:34:33.977>that's <00:34:34.154>one <00:34:34.332>of <00:34:34.509>the <00:34:34.687>things

765
00:34:34.825 --> 00:34:37.585
<00:34:34.824>that <00:34:35.024>like <00:34:35.225>a <00:34:35.424>native <00:34:35.625>application <00:34:35.824>does <00:34:36.024>really <00:34:36.225>well

766
00:34:37.585 --> 00:34:39.345
<00:34:37.585>and <00:34:37.760>that's <00:34:37.935>one <00:34:38.110>of <00:34:38.284>the <00:34:38.460>pros <00:34:38.635>of <00:34:38.810>native <00:34:38.985>is

767
00:34:39.345 --> 00:34:43.025
<00:34:39.344>that <00:34:39.484>it's <00:34:39.625>like <00:34:39.764>you <00:34:39.904>get <00:34:40.044>to <00:34:40.185>like <00:34:40.324>build <00:34:40.464>something <00:34:40.605>very <00:34:40.745>specific

768
00:34:43.165 --> 00:34:44.385
<00:34:43.165>for <00:34:43.439>this <00:34:43.714>type <00:34:43.988>of <00:34:44.263>device.

769
00:34:44.925 --> 00:34:48.985
<00:34:44.925>Mm-hmm. <00:34:45.100>And <00:34:45.275>and <00:34:45.450>uh, <00:34:45.625>to <00:34:45.800>kind <00:34:45.975>use <00:34:46.150>the <00:34:46.325>look

770
00:34:49.065 --> 00:34:51.145
<00:34:49.065>and <00:34:49.264>feel <00:34:49.465>of <00:34:49.665>the <00:34:49.865>OS <00:34:50.065>that <00:34:50.264>you're <00:34:50.465>on.

771
00:34:51.855 --> 00:34:55.665
<00:34:51.855>Exactly. <00:34:52.030>Or <00:34:52.205>we <00:34:52.380>can <00:34:52.554>use <00:34:52.730>the <00:34:52.905>the <00:34:53.080>OS <00:34:53.255>fault.

772
00:34:56.005 --> 00:34:57.225
<00:34:56.005>That's, <00:34:56.279>that's <00:34:56.554>the <00:34:56.828>first <00:34:57.103>step.

773
00:34:57.575 --> 00:35:00.065
<00:34:57.575>Yeah. <00:34:58.975>Um,

774
00:35:00.525 --> 00:35:04.625
<00:35:00.525>and <00:35:00.725>then <00:35:00.925>the <00:35:01.125>next <00:35:01.325>question <00:35:01.525>is <00:35:01.725>from <00:35:01.925>um,

775
00:35:05.915 --> 00:35:08.425
<00:35:05.915>Felix, <00:35:06.381>besides <00:35:06.848>media <00:35:07.315>session

776
00:35:08.525 --> 00:35:11.705
<00:35:08.525>and <00:35:08.700>background <00:35:08.875>fetch <00:35:09.050>API, <00:35:09.225>are <00:35:09.400>there <00:35:09.575>any <00:35:09.750>APIs <00:35:09.925>available

777
00:35:11.845 --> 00:35:14.385
<00:35:11.845>or <00:35:12.020>planned <00:35:12.194>to <00:35:12.370>run <00:35:12.544>local <00:35:12.720>tasks <00:35:12.895>in <00:35:13.069>the <00:35:13.245>background?

778
00:35:14.575 --> 00:35:16.825
<00:35:14.575>Like <00:35:14.774>periodically <00:35:14.975>or <00:35:15.174>run <00:35:15.375>a <00:35:15.575>piece <00:35:15.774>of <00:35:15.975>code?

779
00:35:16.845 --> 00:35:18.985
<00:35:16.845>So <00:35:17.044>I <00:35:17.245>think <00:35:17.444>he's <00:35:17.645>talking <00:35:17.845>about <00:35:18.044>CR <00:35:18.245>jobs.

780
00:35:20.725 --> 00:35:24.985
<00:35:20.725>Um, <00:35:20.900>I <00:35:21.075>think <00:35:21.250>periodic <00:35:21.424>background <00:35:21.600>sync <00:35:21.775>does <00:35:21.950>that, <00:35:22.125>right?

781
00:35:25.285 --> 00:35:29.385
<00:35:25.285>So <00:35:25.412>the <00:35:25.539>way <00:35:25.666>that <00:35:25.794>API <00:35:25.921>works <00:35:26.048>is <00:35:26.175>that <00:35:26.303>you <00:35:26.430>can <00:35:26.557>say, <00:35:26.685>um,

782
00:35:29.605 --> 00:35:33.145
<00:35:29.605>you <00:35:29.780>set <00:35:29.955>like <00:35:30.130>a <00:35:30.305>interval <00:35:30.480>in <00:35:30.655>which <00:35:30.830>you <00:35:31.005>want

783
00:35:33.145 --> 00:35:34.985
<00:35:33.145>to <00:35:33.345>make <00:35:33.545>sure <00:35:33.745>you <00:35:33.945>do <00:35:34.145>a <00:35:34.345>particular <00:35:34.545>task.

784
00:35:35.205 --> 00:35:37.025
<00:35:35.205>So <00:35:35.671>the <00:35:36.138>um, <00:35:36.605>example

785
00:35:37.125 --> 00:35:39.845
<00:35:37.125>that <00:35:37.280>people <00:35:37.436>would <00:35:37.591>always <00:35:37.747>give <00:35:37.902>is <00:35:38.058>if <00:35:38.213>you <00:35:38.369>have <00:35:38.525>like,

786
00:35:40.005 --> 00:35:42.965
<00:35:40.005>I <00:35:40.180>don't <00:35:40.355>know, <00:35:40.530>an <00:35:40.705>inbox <00:35:40.880>or <00:35:41.055>mail <00:35:41.230>application, <00:35:41.405>right?

787
00:35:43.185 --> 00:35:46.845
<00:35:43.185>You <00:35:43.325>might <00:35:43.465>use <00:35:43.605>that <00:35:43.745>to <00:35:43.884>make <00:35:44.025>sure <00:35:44.165>that <00:35:44.305>every <00:35:44.445>three <00:35:44.585>hours

788
00:35:46.905 --> 00:35:49.365
<00:35:46.905>or <00:35:47.060>something <00:35:47.216>you <00:35:47.371>make <00:35:47.527>sure <00:35:47.682>that <00:35:47.838>you're <00:35:47.993>like <00:35:48.149>pinging <00:35:48.305>the

789
00:35:49.365 --> 00:35:51.325
<00:35:49.365>server <00:35:49.645>to <00:35:49.924>like, <00:35:50.205>um, <00:35:50.484>refresh <00:35:50.765>so

790
00:35:51.325 --> 00:35:53.125
<00:35:51.325>that <00:35:51.524>when <00:35:51.725>a <00:35:51.924>user <00:35:52.125>opens <00:35:52.325>up <00:35:52.524>the <00:35:52.725>app,

791
00:35:53.265 --> 00:35:55.645
<00:35:53.265>that's <00:35:53.404>not <00:35:53.545>the <00:35:53.685>point <00:35:53.825>at <00:35:53.964>which <00:35:54.105>you're <00:35:54.245>then <00:35:54.384>going <00:35:54.525>to <00:35:54.665>try

792
00:35:55.645 --> 00:35:57.325
<00:35:55.645>and <00:35:55.845>refresh <00:35:56.045>and <00:35:56.245>get <00:35:56.445>all <00:35:56.645>the <00:35:56.845>new <00:35:57.045>information.

793
00:35:57.515 --> 00:35:59.525
<00:35:57.515>It's <00:35:57.748>already <00:35:57.981>like <00:35:58.214>happening <00:35:58.448>in <00:35:58.681>the <00:35:58.915>background.

794
00:36:00.185 --> 00:36:02.685
<00:36:00.185>So <00:36:00.360>I <00:36:00.535>think <00:36:00.710>that's <00:36:00.884>what, <00:36:01.060>um, <00:36:01.235>you're <00:36:01.410>referring <00:36:01.585>to.

795
00:36:03.595 --> 00:36:04.605
<00:36:03.595>Yeah. <00:36:04.504>Yeah.

796
00:36:04.685 --> 00:36:06.965
<00:36:04.685>I <00:36:04.825>always <00:36:04.965>feel <00:36:05.105>like <00:36:05.245>it's <00:36:05.384>a <00:36:05.525>bit <00:36:05.665>of <00:36:05.805>a <00:36:05.945>dangerous <00:36:06.085>path

797
00:36:06.965 --> 00:36:11.285
<00:36:06.965>because <00:36:07.165>if <00:36:07.365>I <00:36:07.565>install <00:36:07.765>A-P-W-A-I <00:36:07.965>don't <00:36:08.165>accept, <00:36:08.365>uh,

798
00:36:11.885 --> 00:36:14.045
<00:36:11.885>actually <00:36:12.060>give <00:36:12.235>my <00:36:12.410>permission <00:36:12.585>to <00:36:12.760>use <00:36:12.935>my <00:36:13.110>data <00:36:13.285>bundle.

799
00:36:14.715 --> 00:36:18.485
<00:36:14.715>Like, <00:36:14.870>um, <00:36:15.026>if, <00:36:15.181>if <00:36:15.337>some <00:36:15.492>email <00:36:15.648>application <00:36:15.803>is <00:36:15.959>gonna <00:36:16.115>check

800
00:36:18.485 --> 00:36:20.205
<00:36:18.485>for <00:36:18.951>messages <00:36:19.418>every <00:36:19.885>hour,

801
00:36:20.705 --> 00:36:23.285
<00:36:20.705>but <00:36:20.880>I <00:36:21.055>only <00:36:21.230>use <00:36:21.404>it <00:36:21.580>once <00:36:21.755>a <00:36:21.930>week, <00:36:22.105>then

802
00:36:23.285 --> 00:36:25.565
<00:36:23.285>that's <00:36:23.440>gonna <00:36:23.596>cost <00:36:23.751>me <00:36:23.907>a <00:36:24.062>lot <00:36:24.218>of <00:36:24.373>data <00:36:24.529>and <00:36:24.685>battery.

803
00:36:25.575 --> 00:36:26.575
Right?

804
00:36:27.075 --> 00:36:30.205
<00:36:27.075>Yeah. <00:36:27.250>I <00:36:27.424>think <00:36:27.600>with <00:36:27.774>um, <00:36:27.950>periodic <00:36:28.125>background <00:36:28.299>sync, <00:36:28.475>um,

805
00:36:30.215 --> 00:36:33.045
<00:36:30.215>there <00:36:30.495>are <00:36:30.775>definitely <00:36:31.055>like <00:36:31.335>permissions <00:36:31.615>involved.

806
00:36:33.645 --> 00:36:36.645
<00:36:33.645>I <00:36:33.761>don't <00:36:33.878>know <00:36:33.995>whether, <00:36:34.111>or <00:36:34.228>I <00:36:34.345>don't <00:36:34.461>think <00:36:34.578>it <00:36:34.695>is <00:36:34.811>to <00:36:34.928>the <00:36:35.045>point

807
00:36:36.655 --> 00:36:39.125
<00:36:36.655>where, <00:36:36.855>oh, <00:36:37.055>you <00:36:37.255>only <00:36:37.455>give <00:36:37.655>this <00:36:37.855>access <00:36:38.055>like

808
00:36:39.615 --> 00:36:40.805
<00:36:39.615>every <00:36:39.971>hour <00:36:40.328>or <00:36:40.685>something.

809
00:36:41.145 --> 00:36:43.805
<00:36:41.145>So <00:36:41.320>I <00:36:41.495>think <00:36:41.670>that's <00:36:41.845>something <00:36:42.020>that <00:36:42.195>should <00:36:42.370>be, <00:36:42.545>um,

810
00:36:44.155 --> 00:36:46.645
<00:36:44.155>implemented <00:36:44.388>from <00:36:44.621>like <00:36:44.855>the <00:36:45.088>developer <00:36:45.321>points, <00:36:45.555>like

811
00:36:46.645 --> 00:36:49.765
<00:36:46.645>to <00:36:46.761>give <00:36:46.878>users <00:36:46.995>that <00:36:47.111>type <00:36:47.228>of <00:36:47.345>option <00:36:47.461>to <00:36:47.578>say, <00:36:47.695>okay, <00:36:47.811>I <00:36:47.928>only <00:36:48.045>want

812
00:36:49.765 --> 00:36:52.925
<00:36:49.765>to, <00:36:49.964>um, <00:36:50.165>like <00:36:50.365>you <00:36:50.565>should <00:36:50.765>only, <00:36:50.964>you <00:36:51.165>know,

813
00:36:53.035 --> 00:36:55.885
<00:36:53.035>make <00:36:53.174>any <00:36:53.315>network <00:36:53.455>requests <00:36:53.595>once <00:36:53.734>a <00:36:53.875>day <00:36:54.015>or <00:36:54.154>something <00:36:54.295>like <00:36:54.435>that

814
00:36:56.145 --> 00:36:57.285
<00:36:56.145>or <00:36:56.350>cap <00:36:56.555>it <00:36:56.760>to <00:36:56.965>some <00:36:57.171>extent.

815
00:36:57.985 --> 00:37:01.765
<00:36:57.985>But <00:36:58.125>um, <00:36:58.265>I <00:36:58.405>know <00:36:58.545>that <00:36:58.685>it <00:36:58.825>does <00:36:58.965>have <00:36:59.105>like <00:36:59.245>some <00:36:59.385>form

816
00:37:01.765 --> 00:37:04.125
<00:37:01.765>of <00:37:01.998>permissions <00:37:02.231>to <00:37:02.464>even <00:37:02.698>initiate <00:37:02.931>that <00:37:03.165>type

817
00:37:04.125 --> 00:37:05.245
<00:37:04.125>of <00:37:04.461>like <00:37:04.797>job. <00:37:05.133>Okay.

818
00:37:05.925 --> 00:37:09.015
<00:37:05.925>Okay. <00:37:06.065>That's <00:37:06.205>nice. <00:37:06.345>Yeah, <00:37:06.485>you <00:37:06.625>want <00:37:06.765>some <00:37:06.905>control <00:37:07.045>as <00:37:07.185>a <00:37:07.325>user.

819
00:37:09.875 --> 00:37:14.695
<00:37:09.875>Um, <00:37:10.108>next <00:37:10.341>question <00:37:10.575>is <00:37:10.808>from <00:37:11.041>uh, <00:37:11.275>Gregor

820
00:37:15.155 --> 00:37:16.895
<00:37:15.155>and <00:37:15.435>he's <00:37:15.715>asking <00:37:15.995>how <00:37:16.275>to <00:37:16.555>deal

821
00:37:17.045 --> 00:37:19.175
<00:37:17.045>with <00:37:17.278>Apple <00:37:17.511>not <00:37:17.745>supporting <00:37:17.978>the <00:37:18.211>new <00:37:18.445>APIs.

822
00:37:21.835 --> 00:37:23.295
<00:37:21.835>Um, <00:37:22.273>I <00:37:22.711>don't <00:37:23.149>know.

823
00:37:24.205 --> 00:37:25.495
<00:37:24.205>It's <00:37:24.437>kind <00:37:24.669>of <00:37:24.901>a <00:37:25.133>difficult <00:37:25.366>one

824
00:37:25.495 --> 00:37:29.175
<00:37:25.495>because <00:37:25.694>the, <00:37:25.895>the <00:37:26.095>thing <00:37:26.295>with <00:37:26.495>the <00:37:26.694>web <00:37:26.895>is

825
00:37:29.175 --> 00:37:31.535
<00:37:29.175>that <00:37:29.375>like <00:37:29.575>you <00:37:29.775>can't <00:37:29.975>guarantee <00:37:30.175>what <00:37:30.375>is <00:37:30.575>going

826
00:37:31.535 --> 00:37:32.615
<00:37:31.535>to <00:37:31.859>be <00:37:32.183>supported <00:37:32.506>anywhere.

827
00:37:32.615 --> 00:37:33.775
<00:37:32.615>Mm-hmm. <00:37:33.136>Right? <00:37:33.659>Yeah.

828
00:37:33.775 --> 00:37:37.015
<00:37:33.775>And <00:37:33.882>as <00:37:33.990>developers <00:37:34.098>we, <00:37:34.205>you <00:37:34.313>know, <00:37:34.421>we <00:37:34.528>do <00:37:34.636>what <00:37:34.744>we <00:37:34.851>can <00:37:34.959>to <00:37:35.067>try <00:37:35.175>to,

829
00:37:37.015 --> 00:37:40.215
<00:37:37.015>you <00:37:37.170>know, <00:37:37.326>let <00:37:37.481>it <00:37:37.637>be <00:37:37.792>known <00:37:37.948>to <00:37:38.103>these <00:37:38.259>different <00:37:38.415>browsers,

830
00:37:40.215 --> 00:37:43.855
<00:37:40.215>particularly <00:37:40.355>a <00:37:40.495>browser <00:37:40.635>as <00:37:40.775>big <00:37:40.915>as <00:37:41.055>like, <00:37:41.195>you <00:37:41.335>know, <00:37:41.475>um, <00:37:41.615>safari

831
00:37:44.445 --> 00:37:46.775
<00:37:44.445>that <00:37:44.600>this <00:37:44.756>is <00:37:44.911>like <00:37:45.067>a <00:37:45.222>critical <00:37:45.378>thing <00:37:45.533>in <00:37:45.689>the <00:37:45.845>ecosystem.

832
00:37:46.885 --> 00:37:48.175
<00:37:46.885>Like <00:37:47.078>this <00:37:47.272>is <00:37:47.465>something <00:37:47.659>that <00:37:47.852>we <00:37:48.046>want,

833
00:37:48.195 --> 00:37:50.615
<00:37:48.195>but <00:37:48.311>at <00:37:48.428>the <00:37:48.545>end <00:37:48.661>of <00:37:48.778>the <00:37:48.895>day <00:37:49.011>we <00:37:49.128>don't <00:37:49.245>really <00:37:49.361>have <00:37:49.478>control <00:37:49.595>over

834
00:37:50.615 --> 00:37:53.895
<00:37:50.615>that <00:37:50.814>and <00:37:51.015>that's <00:37:51.214>where <00:37:51.415>the <00:37:51.615>progressive <00:37:51.814>enhancement <00:37:52.015>point

835
00:37:54.035 --> 00:37:55.695
<00:37:54.035>of <00:37:54.315>progressive <00:37:54.595>web <00:37:54.875>apps <00:37:55.154>comes <00:37:55.435>in.

836
00:37:56.075 --> 00:37:58.575
<00:37:56.075>In <00:37:56.230>that <00:37:56.386>we <00:37:56.541>need <00:37:56.697>to <00:37:56.852>make <00:37:57.008>sure <00:37:57.163>that <00:37:57.319>you're <00:37:57.475>building

837
00:37:59.455 --> 00:38:00.575
<00:37:59.455>whatever <00:37:59.959>new <00:38:00.462>features

838
00:38:00.595 --> 00:38:01.655
<00:38:00.595>or <00:38:00.833>whatever <00:38:01.072>that <00:38:01.310>you're <00:38:01.549>adding

839
00:38:01.655 --> 00:38:05.255
<00:38:01.655>to <00:38:01.795>your <00:38:01.935>web <00:38:02.075>application <00:38:02.215>in <00:38:02.355>a <00:38:02.495>way <00:38:02.635>that <00:38:02.775>you <00:38:02.915>don't <00:38:03.055>kind

840
00:38:05.255 --> 00:38:06.735
<00:38:05.255>of <00:38:05.588>take <00:38:05.921>anything <00:38:06.254>for <00:38:06.587>granted.

841
00:38:06.915 --> 00:38:09.735
<00:38:06.915>You <00:38:07.115>don't <00:38:07.315>assume <00:38:07.515>that <00:38:07.715>the <00:38:07.915>person <00:38:08.115>is <00:38:08.315>going

842
00:38:09.735 --> 00:38:11.175
<00:38:09.735>to <00:38:09.920>be <00:38:10.105>on <00:38:10.290>advice <00:38:10.475>that <00:38:10.660>supports <00:38:10.845>this <00:38:11.031>thing.

843
00:38:11.175 --> 00:38:12.375
<00:38:11.175>Mm-hmm. <00:38:11.355>You <00:38:11.535>always <00:38:11.715>have <00:38:11.895>to <00:38:12.075>make <00:38:12.255>sure

844
00:38:12.375 --> 00:38:14.695
<00:38:12.375>that <00:38:12.575>you <00:38:12.775>still <00:38:12.975>have <00:38:13.175>some <00:38:13.375>like <00:38:13.575>base <00:38:13.775>level

845
00:38:15.205 --> 00:38:17.855
<00:38:15.205>that <00:38:15.404>would <00:38:15.605>just <00:38:15.805>generally <00:38:16.005>like <00:38:16.205>work <00:38:16.404>for <00:38:16.605>everyone.

846
00:38:18.115 --> 00:38:20.375
<00:38:18.115>Mm-hmm. <00:38:18.395>So <00:38:18.674>that's <00:38:18.955>basically <00:38:19.234>unfortunately <00:38:19.515>the

847
00:38:20.445 --> 00:38:21.535
<00:38:20.445>only <00:38:20.772>workaround <00:38:21.099>we <00:38:21.426>have.

848
00:38:22.195 --> 00:38:25.455
<00:38:22.195>The <00:38:22.311>hope <00:38:22.428>is <00:38:22.545>that, <00:38:22.661>you <00:38:22.778>know, <00:38:22.895>as <00:38:23.011>time <00:38:23.128>goes <00:38:23.245>on <00:38:23.361>they <00:38:23.478>will <00:38:23.595>start

849
00:38:25.455 --> 00:38:27.375
<00:38:25.455>to, <00:38:25.805>um, <00:38:26.154>implement <00:38:26.505>more <00:38:26.855>things.

850
00:38:27.875 --> 00:38:30.375
<00:38:27.875>But <00:38:27.991>the <00:38:28.108>best <00:38:28.225>we <00:38:28.341>can <00:38:28.458>do <00:38:28.575>for <00:38:28.691>now <00:38:28.808>is <00:38:28.925>really <00:38:29.041>just, <00:38:29.158>you <00:38:29.275>know,

851
00:38:30.375 --> 00:38:32.855
<00:38:30.375>incorporate <00:38:30.725>that <00:38:31.075>progressive <00:38:31.425>enhancement <00:38:31.775>mindset.

852
00:38:34.525 --> 00:38:37.565
<00:38:34.525>Yeah. <00:38:34.700>One <00:38:34.875>day <00:38:35.050>we'll <00:38:35.225>be <00:38:35.400>able <00:38:35.575>to <00:38:35.750>develop <00:38:35.925>apps

853
00:38:38.185 --> 00:38:40.445
<00:38:38.185>and <00:38:38.418>websites <00:38:38.651>without <00:38:38.884>checking <00:38:39.118>for <00:38:39.351>any <00:38:39.585>features.

854
00:38:40.445 --> 00:38:41.685
<00:38:40.445>Just <00:38:40.724>use <00:38:41.003>anything <00:38:41.282>you <00:38:41.561>want.

855
00:38:42.075 --> 00:38:44.045
<00:38:42.075>Exactly. <00:38:42.541>Exactly. <00:38:43.008>One <00:38:43.475>day,

856
00:38:45.855 --> 00:38:47.845
<00:38:45.855>Let's, <00:38:46.010>let's <00:38:46.166>just <00:38:46.321>take <00:38:46.477>a <00:38:46.632>moment <00:38:46.788>to <00:38:46.943>think <00:38:47.099>of <00:38:47.255>that.

857
00:38:48.555 --> 00:38:51.845
<00:38:48.555>Yeah. <00:38:48.904>Alright, <00:38:49.254>uh, <00:38:49.605>next <00:38:49.955>question.

858
00:38:52.065 --> 00:38:53.885
<00:38:52.065>Uh, <00:38:52.265>I <00:38:52.465>think <00:38:52.665>I <00:38:52.865>already <00:38:53.065>know <00:38:53.265>the <00:38:53.465>answer,

859
00:38:53.945 --> 00:38:55.205
<00:38:53.945>but <00:38:54.107>I <00:38:54.269>think <00:38:54.431>it's <00:38:54.593>a <00:38:54.755>really <00:38:54.917>good <00:38:55.078>one.

860
00:38:55.205 --> 00:38:59.725
<00:38:55.205>From <00:38:55.360>Parin <00:38:55.516>React <00:38:55.671>native <00:38:55.827>first <00:38:55.982>PWAs, <00:38:56.138>what <00:38:56.293>do <00:38:56.449>you <00:38:56.605>choose?

861
00:39:01.605 --> 00:39:03.845
<00:39:01.605>Interesting. <00:39:01.955>That's <00:39:02.305>interesting <00:39:02.655>because, <00:39:03.005>um,

862
00:39:04.625 --> 00:39:06.005
<00:39:04.625>before <00:39:04.873>the <00:39:05.121>call <00:39:05.370>we <00:39:05.618>were <00:39:05.867>speaking

863
00:39:06.065 --> 00:39:08.165
<00:39:06.065>and <00:39:06.240>I <00:39:06.415>was <00:39:06.590>mentioning <00:39:06.765>that <00:39:06.940>in <00:39:07.115>my <00:39:07.290>company <00:39:07.465>we,

864
00:39:08.625 --> 00:39:11.445
<00:39:08.625>our <00:39:08.825>main <00:39:09.025>application <00:39:09.225>is <00:39:09.425>a <00:39:09.625>progressive <00:39:09.825>web <00:39:10.025>app,

865
00:39:11.625 --> 00:39:14.205
<00:39:11.625>but <00:39:11.905>we <00:39:12.185>do <00:39:12.465>still <00:39:12.745>publish, <00:39:13.025>um,

866
00:39:14.465 --> 00:39:16.445
<00:39:14.465>to <00:39:14.745>all <00:39:15.025>the <00:39:15.305>native <00:39:15.585>application <00:39:15.865>stores.

867
00:39:16.625 --> 00:39:19.725
<00:39:16.625>And <00:39:16.732>the <00:39:16.840>way <00:39:16.948>we <00:39:17.055>do <00:39:17.163>that <00:39:17.271>is <00:39:17.378>that <00:39:17.486>we <00:39:17.594>have <00:39:17.701>like <00:39:17.809>a <00:39:17.917>web <00:39:18.025>view

868
00:39:19.945 --> 00:39:22.285
<00:39:19.945>for <00:39:20.225>like <00:39:20.505>most <00:39:20.785>of <00:39:21.065>the <00:39:21.345>application

869
00:39:22.385 --> 00:39:23.525
<00:39:22.385>and <00:39:22.590>then <00:39:22.795>just <00:39:23.000>like <00:39:23.205>the <00:39:23.411>login

870
00:39:23.705 --> 00:39:26.245
<00:39:23.705>or <00:39:23.904>something <00:39:24.105>is <00:39:24.305>um, <00:39:24.505>with <00:39:24.705>the <00:39:24.904>native <00:39:25.105>application

871
00:39:26.245 --> 00:39:28.285
<00:39:26.245>and <00:39:26.400>we <00:39:26.556>use <00:39:26.711>React <00:39:26.867>native <00:39:27.022>for <00:39:27.178>that <00:39:27.333>part <00:39:27.489>of <00:39:27.645>it.

872
00:39:28.545 --> 00:39:31.885
<00:39:28.545>So <00:39:28.745>I <00:39:28.945>think <00:39:29.145>my <00:39:29.345>answer <00:39:29.545>is <00:39:29.745>both. <00:39:29.945>Yeah.

873
00:39:32.145 --> 00:39:35.645
<00:39:32.145>So <00:39:32.272>basically <00:39:32.399>you <00:39:32.526>just <00:39:32.654>kind <00:39:32.781>of <00:39:32.908>use <00:39:33.035>what <00:39:33.163>parts <00:39:33.290>suit <00:39:33.417>you <00:39:33.545>for

874
00:39:35.645 --> 00:39:38.965
<00:39:35.645>what <00:39:35.772>you <00:39:35.899>need <00:39:36.026>to <00:39:36.154>do, <00:39:36.281>but <00:39:36.408>there's <00:39:36.535>no, <00:39:36.663>it <00:39:36.790>doesn't, <00:39:36.917>it's <00:39:37.045>like

875
00:39:38.965 --> 00:39:41.165
<00:39:38.965>what <00:39:39.120>I <00:39:39.276>said <00:39:39.431>about <00:39:39.587>it <00:39:39.742>doesn't <00:39:39.898>need <00:39:40.053>to <00:39:40.209>be <00:39:40.365>native

876
00:39:41.385 --> 00:39:42.965
<00:39:41.385>or <00:39:41.851>progressive <00:39:42.318>web <00:39:42.785>app.

877
00:39:42.965 --> 00:39:44.565
<00:39:42.965>Mm-hmm. <00:39:43.198>It's <00:39:43.431>like <00:39:43.665>use <00:39:43.898>what <00:39:44.131>you <00:39:44.365>need

878
00:39:44.565 --> 00:39:45.725
<00:39:44.565>to <00:39:44.826>use <00:39:45.087>for <00:39:45.348>different <00:39:45.609>parts.

879
00:39:45.995 --> 00:39:47.325
<00:39:45.995>There's <00:39:46.194>never <00:39:46.394>going <00:39:46.593>to <00:39:46.792>be <00:39:46.992>a <00:39:47.192>case

880
00:39:47.325 --> 00:39:49.685
<00:39:47.325>where <00:39:47.480>it's <00:39:47.636>like <00:39:47.791>a <00:39:47.947>hundred <00:39:48.102>percent <00:39:48.258>one <00:39:48.413>or <00:39:48.569>the <00:39:48.725>other.

881
00:39:50.195 --> 00:39:52.245
<00:39:50.195>It's <00:39:50.395>based <00:39:50.595>on <00:39:50.795>what, <00:39:50.995>you <00:39:51.195>know, <00:39:51.395>what <00:39:51.595>type

882
00:39:52.245 --> 00:39:54.405
<00:39:52.245>of <00:39:52.420>application <00:39:52.595>you're <00:39:52.770>building, <00:39:52.944>what <00:39:53.120>features <00:39:53.295>do <00:39:53.470>you <00:39:53.645>need

883
00:39:54.665 --> 00:39:56.005
<00:39:54.665>and <00:39:54.815>then <00:39:54.966>you <00:39:55.117>can <00:39:55.268>kind <00:39:55.418>of <00:39:55.569>pick <00:39:55.720>and <00:39:55.871>choose

884
00:39:56.005 --> 00:39:57.645
<00:39:56.005>what <00:39:56.355>works <00:39:56.705>best <00:39:57.055>for <00:39:57.405>what.

885
00:39:58.285 --> 00:40:00.365
<00:39:58.285>I <00:39:58.484>think <00:39:58.685>with <00:39:58.884>the <00:39:59.085>progressive <00:39:59.285>web <00:39:59.484>app <00:39:59.685>movement,

886
00:40:00.395 --> 00:40:03.245
<00:40:00.395>it's <00:40:00.628>more <00:40:00.861>about <00:40:01.095>just <00:40:01.328>showing <00:40:01.561>that <00:40:01.795>PWAs

887
00:40:03.245 --> 00:40:05.485
<00:40:03.245>and <00:40:03.372>the <00:40:03.499>web <00:40:03.626>are <00:40:03.754>actually <00:40:03.881>an <00:40:04.008>option <00:40:04.135>for <00:40:04.263>a <00:40:04.390>lot <00:40:04.517>of <00:40:04.645>things

888
00:40:05.485 --> 00:40:08.285
<00:40:05.485>that <00:40:05.640>we <00:40:05.796>used <00:40:05.951>to <00:40:06.107>think <00:40:06.262>it <00:40:06.418>wasn't <00:40:06.573>an <00:40:06.729>option <00:40:06.885>for.

889
00:40:08.705 --> 00:40:11.365
<00:40:08.705>So <00:40:08.880>stuff <00:40:09.055>like <00:40:09.230>push <00:40:09.404>notifications, <00:40:09.580>you <00:40:09.755>don't <00:40:09.930>need <00:40:10.105>a

890
00:40:12.085 --> 00:40:14.545
<00:40:12.085>native <00:40:12.285>application <00:40:12.485>if <00:40:12.685>you <00:40:12.885>just <00:40:13.085>want <00:40:13.285>this <00:40:13.485>feature

891
00:40:14.545 --> 00:40:15.785
<00:40:14.545>of <00:40:14.917>push <00:40:15.288>notifications, <00:40:15.661>right?

892
00:40:16.005 --> 00:40:18.425
<00:40:16.005>Mm-hmm. <00:40:16.180>And <00:40:16.355>um, <00:40:16.530>that's <00:40:16.705>kind <00:40:16.880>of <00:40:17.055>what <00:40:17.230>it's <00:40:17.405>about.

893
00:40:18.485 --> 00:40:20.385
<00:40:18.485>So <00:40:18.685>you <00:40:18.885>can <00:40:19.085>use <00:40:19.285>native <00:40:19.485>in <00:40:19.685>some <00:40:19.885>cases,

894
00:40:20.685 --> 00:40:22.505
<00:40:20.685>but <00:40:20.918>it's <00:40:21.151>more <00:40:21.384>for <00:40:21.618>you <00:40:21.851>to <00:40:22.085>know

895
00:40:22.505 --> 00:40:24.465
<00:40:22.505>that <00:40:22.660>the <00:40:22.816>web <00:40:22.971>actually <00:40:23.127>can <00:40:23.282>do <00:40:23.438>a <00:40:23.593>lot <00:40:23.749>of <00:40:23.905>things

896
00:40:24.575 --> 00:40:26.585
<00:40:24.575>that <00:40:24.750>it <00:40:24.924>didn't <00:40:25.100>used <00:40:25.274>to <00:40:25.450>be <00:40:25.625>able <00:40:25.799>to <00:40:25.975>do.

897
00:40:27.405 --> 00:40:29.595
<00:40:27.405>Yeah. <00:40:28.805>Yeah.

898
00:40:30.695 --> 00:40:35.215
<00:40:30.695>So <00:40:30.870>to, <00:40:31.045>to <00:40:31.220>sum <00:40:31.395>it <00:40:31.570>up, <00:40:31.745>you're <00:40:31.920>using <00:40:32.095>both.

899
00:40:35.965 --> 00:40:37.265
<00:40:35.965>Yes. <00:40:36.550>That's <00:40:37.134>both

900
00:40:37.815 --> 00:40:38.815
<00:40:37.815>Exactly. <00:40:38.715>Both.

902
00:40:40.375 --> 00:40:41.985
<00:40:40.375>Yeah. <00:40:40.608>See <00:40:40.841>what <00:40:41.075>works <00:40:41.308>for <00:40:41.541>you <00:40:41.775>basically.

903
00:40:41.985 --> 00:40:45.585
<00:40:41.985>Alright, <00:40:42.160>we <00:40:42.335>have <00:40:42.510>time <00:40:42.685>for <00:40:42.860>one <00:40:43.035>quick <00:40:43.210>question. <00:40:43.385>Sure.

904
00:40:45.845 --> 00:40:48.145
<00:40:45.845>Um, <00:40:46.311>and <00:40:46.778>then, <00:40:47.245>uh,

905
00:40:49.025 --> 00:40:50.865
<00:40:49.025>a <00:40:49.305>good <00:40:49.585>critical <00:40:49.865>question <00:40:50.145>from <00:40:50.425>Ed.

906
00:40:51.845 --> 00:40:53.945
<00:40:51.845>Why <00:40:52.020>do <00:40:52.194>you <00:40:52.370>think <00:40:52.544>Apple <00:40:52.720>is <00:40:52.895>holding <00:40:53.069>back <00:40:53.245>on

907
00:40:54.025 --> 00:40:57.005
<00:40:54.025>PWS <00:40:54.491>one <00:40:54.958>minute <00:40:55.425>ago?

908
00:40:57.005 --> 00:40:58.005
Um,

909
00:40:59.365 --> 00:41:00.365
<00:40:59.365>I <00:40:59.589>guess, <00:40:59.814>I <00:41:00.040>don't <00:41:00.265>know.

910
00:41:00.685 --> 00:41:04.365
<00:41:00.685>I <00:41:00.825>would <00:41:00.965>just <00:41:01.105>assume <00:41:01.245>that, <00:41:01.384>um, <00:41:01.525>developing, <00:41:01.665>you <00:41:01.805>know, <00:41:01.945>the <00:41:02.085>web

911
00:41:04.485 --> 00:41:06.325
<00:41:04.485>and <00:41:04.685>browser <00:41:04.885>hasn't <00:41:05.085>been <00:41:05.285>a <00:41:05.485>priority <00:41:05.685>for <00:41:05.885>them

912
00:41:07.105 --> 00:41:08.805
<00:41:07.105>and <00:41:07.338>um, <00:41:07.571>I <00:41:07.805>mean, <00:41:08.038>as <00:41:08.271>a <00:41:08.505>company,

913
00:41:08.875 --> 00:41:11.365
<00:41:08.875>even <00:41:09.015>if <00:41:09.155>you're <00:41:09.295>like <00:41:09.435>a <00:41:09.575>large <00:41:09.715>company, <00:41:09.855>you <00:41:09.995>can <00:41:10.135>only <00:41:10.275>do

914
00:41:11.365 --> 00:41:13.165
<00:41:11.365>so <00:41:11.540>many <00:41:11.714>things <00:41:11.890>and <00:41:12.064>if <00:41:12.240>it's <00:41:12.415>not <00:41:12.589>a <00:41:12.765>priority,

915
00:41:13.165 --> 00:41:14.645
<00:41:13.165>they're <00:41:13.355>not <00:41:13.545>really <00:41:13.735>going <00:41:13.926>to <00:41:14.116>focus <00:41:14.306>on <00:41:14.497>it.

916
00:41:15.145 --> 00:41:17.605
<00:41:15.145>All <00:41:15.272>we <00:41:15.399>can <00:41:15.526>do <00:41:15.654>is <00:41:15.781>hope <00:41:15.908>that <00:41:16.035>they <00:41:16.163>will <00:41:16.290>make <00:41:16.417>it <00:41:16.545>more

917
00:41:17.705 --> 00:41:18.845
<00:41:17.705>and <00:41:17.961>more <00:41:18.218>of <00:41:18.474>a <00:41:18.731>priority,

918
00:41:19.225 --> 00:41:20.445
<00:41:19.225>but <00:41:19.408>I <00:41:19.591>don't <00:41:19.774>really <00:41:19.957>think <00:41:20.140>they're <00:41:20.323>doing

919
00:41:20.445 --> 00:41:21.565
<00:41:20.445>it <00:41:20.781>for <00:41:21.117>malicious <00:41:21.453>reasons.

920
00:41:21.845 --> 00:41:25.165
<00:41:21.845>I <00:41:21.972>just <00:41:22.099>think <00:41:22.226>it's <00:41:22.354>more <00:41:22.481>like <00:41:22.608>they, <00:41:22.735>it <00:41:22.863>is <00:41:22.990>not <00:41:23.117>a <00:41:23.245>priority.

921
00:41:25.995 --> 00:41:28.925
<00:41:25.995>Lack <00:41:26.345>of <00:41:26.694>resources. <00:41:27.045>Yeah. <00:41:27.395>Maybe.

922
00:41:30.665 --> 00:41:32.485
<00:41:30.665>All <00:41:30.945>right. <00:41:31.225>Well <00:41:31.505>thank <00:41:31.785>you <00:41:32.065>Iray.

923
00:41:32.705 --> 00:41:34.325
<00:41:32.705>Uh, <00:41:32.880>it <00:41:33.055>is <00:41:33.230>been <00:41:33.404>a <00:41:33.580>pleasure <00:41:33.755>talking <00:41:33.930>to <00:41:34.105>you

924
00:41:34.505 --> 00:41:36.165
<00:41:34.505>and <00:41:34.680>uh, <00:41:34.855>like <00:41:35.030>I <00:41:35.205>said, <00:41:35.380>I <00:41:35.555>learned <00:41:35.730>a <00:41:35.905>lot.

925
00:41:36.305 --> 00:41:39.005
<00:41:36.305>So <00:41:36.460>my <00:41:36.616>goal <00:41:36.771>is <00:41:36.927>chief <00:41:37.082>of <00:41:37.238>coming <00:41:37.393>to <00:41:37.549>this <00:41:37.705>conference.

926
00:41:39.185 --> 00:41:42.805
<00:41:39.185>I'm <00:41:39.312>also <00:41:39.439>at <00:41:39.566>an <00:41:39.694>an <00:41:39.821>attendee, <00:41:39.948>so <00:41:40.075>yeah, <00:41:40.203>thanks <00:41:40.330>a <00:41:40.457>lot. <00:41:40.585>Great.

927
00:41:43.215 --> 00:41:43.685
<00:41:43.215>Thank <00:41:43.638>you.