Skip to content

Commit 0ef0126

Browse files
committed
docs: initial take on PWA
Add PWA page and update examples table to expose all the information we already had available.
1 parent 37fb4ad commit 0ef0126

File tree

6 files changed

+167
-18
lines changed

6 files changed

+167
-18
lines changed

data/examples/index.json

+28
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,34 @@
195195
"documentation": ""
196196
}
197197
},
198+
{
199+
"name": "Notifications",
200+
"electron": {
201+
"gist": "",
202+
"status": "",
203+
"documentation": ""
204+
},
205+
"pwa": {
206+
"gist": "",
207+
"status": "",
208+
"documentation": "https://web.dev/push-notifications-overview/"
209+
},
210+
"react-native": {
211+
"gist": "",
212+
"status": "",
213+
"documentation": ""
214+
},
215+
"webview2": {
216+
"gist": "",
217+
"status": "",
218+
"documentation": ""
219+
},
220+
"xamarin": {
221+
"gist": "",
222+
"status": "",
223+
"documentation": ""
224+
}
225+
},
198226
{
199227
"name": "Run on OS login",
200228
"electron": {

data/technologies/pwa.json

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"$schema": "../schemas/technology.json",
3+
"name": "PWA",
4+
"normalizedName": "pwa",
5+
"platforms": {
6+
"Windows": "",
7+
"macOS": "",
8+
"Linux": "",
9+
"Android": "",
10+
"iOS": ""
11+
},
12+
"languages": {
13+
"C++": "",
14+
"C#": "",
15+
"Go": "",
16+
"Java": "",
17+
"JavaScript": "",
18+
"Rust": ""
19+
},
20+
"rendering": {
21+
"Browser engine": "",
22+
"Platform controls": "",
23+
"Direct drawing": ""
24+
},
25+
"releases": [
26+
{
27+
"version": "N/A",
28+
"date": "2021-01-01T00:00:00Z"
29+
}
30+
],
31+
"codeLicense": {
32+
"name": "BSD 3-clause",
33+
"url": "https://source.chromium.org/chromium/chromium/src/+/main:LICENSE"
34+
},
35+
"url": "https://web.dev/progressive-web-apps/",
36+
"community": "https://www.chromium.org/developers/discussion-groups",
37+
"documentation": "https://web.dev/learn/"
38+
}

docs/examples-list.pmd

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<!-- ⚠ File automatically generated in process-examples-sources.js. DO NOT MODIFY MANUALLY -->
22

3-
| Feature | Electron | React Native | WebView2 | Xamarin |
4-
| --- | :---: | :---: | :---: | :---: |
5-
| Bluetooth access |✅ | | | |
6-
| Custom title bar |🛠 | | | |
7-
| File System access |✅ | | | |
8-
| Gamepad access | | | | |
9-
| Generic sensor access | | | | |
10-
| Geolocation | | | | |
11-
| Idle detection | | | | |
12-
| Notifications | | | | |
13-
| Run on OS login | | | | |
14-
| Serial access |✅ | | | |
15-
| URL handler | | | | |
16-
| [URL protocol handler](/docs/examples/url-protocol-handler) |✅ ([Docs](https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app)) | | | |
17-
| USB access | | | | |
18-
| Video codecs | | | | |
3+
| Feature | Electron | PWA | React Native | WebView2 | Xamarin |
4+
| --- | :---: | :---: | :---: | :---: | :---: |
5+
| Bluetooth access |✅ | | | | |
6+
| Custom title bar |🛠 |❓ ([Docs](https://web.dev/window-controls-overlay/)) | | | |
7+
| File System access |✅ |❓ ([Docs](https://web.dev/file-system-access/)) | | | |
8+
| Gamepad access | | | | | |
9+
| Generic sensor access | | | | | |
10+
| Geolocation | | | | | |
11+
| Idle detection | |❓ ([Docs](https://web.dev/idle-detection/)) | | | |
12+
| Notifications | | | | | |
13+
| Run on OS login | |❓ ([Docs](https://chromestatus.com/feature/5534549008187392)) | | | |
14+
| Serial access |✅ |❓ ([Docs](https://web.dev/serial/)) | | | |
15+
| URL handler | |❓ ([Docs](https://web.dev/pwa-url-handler/)) | | | |
16+
| [URL protocol handler](/docs/examples/url-protocol-handler) |✅ ([Docs](https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app)) |❓ ([Docs](https://web.dev/url-protocol-handler/)) | | | |
17+
| USB access | | | | | |
18+
| Video codecs | |❓ ([Docs](https://web.dev/webcodecs/)) | | | |

docs/pwa.md

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: PWA
3+
---
4+
5+
# PWA
6+
7+
:::tip
8+
The content of this page referes to Chromium (the engine with the most features) unless stated
9+
otherwise. This engine is used by many browsers like Chrome and Edge, and other technologies such as
10+
[Electron] and [WebView2].
11+
:::
12+
13+
## Summary
14+
15+
| Characteristic | |
16+
| ------------------ | :---------------------------------------------------------------------------: |
17+
| Website | [{{technologies.pwa.url}}]({{technologies.pwa.url}}) |
18+
| Platforms | Desktop, mobile |
19+
| Rendering strategy | [Browser engine] |
20+
| Code License | [{{technologies.pwa.codeLicense.name}}]({{technologies.pwa.codeLicense.url}}) |
21+
| Copyright | It's complicated |
22+
| Documentation | [{{technologies.pwa.documentation}}]({{technologies.pwa.documentation}}) |
23+
| Community | [{{technologies.pwa.community}}]({{technologies.pwa.community}}) |
24+
| Latest version | {{technologies.pwa.releases.0.version}} |
25+
| Release cadence | Major versions: 4 weeks <br/> Minor/patch: As needed |
26+
| Release support | 4-8 weeks |
27+
| Update model | Automatically updated |
28+
| Governance model | It's complicated |
29+
30+
**Platform support:**
31+
32+
{{ table technologies.pwa.platforms.{} }}
33+
34+
:::warning
35+
Even though browsers based on Chromium (like Chrome and Edge) are available on iOS, the reality is
36+
that they use a different engine. The Apple Store policy only permits browser vendors to use the
37+
Safari WebView.
38+
Unfortunately, this browser engine only has a subset of the features available in Chromium and
39+
updates at a much lower rate.
40+
41+
There is more information about this in "[iOS Engine Choice In Depth]" by [Alex Russell].
42+
:::
43+
44+
**Language support:**
45+
46+
{{ table technologies.pwa.languages.{} }}
47+
48+
## Release cadence, version support and update model
49+
50+
Google releases a major version every 4 weeks. During this period it will receive minor updates as
51+
needed (bug fixes and security).
52+
Additionally there is an Extended Stable option that releases every 8 weeks. This version receives
53+
also security updates (every 2 weeks) but not all the ones that the 4 week version has.
54+
You can read more in [this blog post][speeding-up-release-cycle].
55+
56+
[Firefox release cycle] is also 4 weeks for major versions and Safari does not have a public release
57+
cycle policy.
58+
59+
Chromium based browsers and Firefox update automatically without user intervention while Safari
60+
requires the user to update the Operating System on iOS or accept the update process on macOS.
61+
62+
## Governance
63+
64+
TBD
65+
<!-- ✍ Please add an introductory paragraph about the governance model of the project: part of a
66+
foundation, company driven, etc. -->
67+
68+
<!-- Ref links -->
69+
70+
[Alex Russell]: https://twitter.com/slightlylate
71+
[browser engine]: ./browser-engine.md
72+
[electron]: ./electron.md
73+
[Firefox release cycle]: https://wiki.mozilla.org/Release_Management/Release_Process
74+
[iOS Engine Choice In Depth]: https://infrequently.org/2021/08/webkit-ios-deep-dive/
75+
[speeding-up-release-cycle]: https://blog.chromium.org/2021/03/speeding-up-release-cycle.html
76+
[webview2]: ./webview2.md

scripts/process-examples-sources.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ const normalizeStatus = (status) => {
179179
}
180180
if (status.includes('crbug')) {
181181
// TODO: Get the resolution of the issue via Playwright because x-xsrf-token and other stuff :(
182-
return 'TBD';
182+
return '';
183183
}
184184

185185
return status;

sidebars.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
module.exports = {
2-
technologies: ['technologies', 'electron', 'webview2', 'react-native', 'xamarin'],
2+
technologies: [
3+
'technologies',
4+
'electron',
5+
'pwa',
6+
'react-native',
7+
'webview2',
8+
'xamarin',
9+
],
310
rendering: [
411
'rendering',
512
{

0 commit comments

Comments
 (0)