10 | Go back to the homepage.
11 | {% endblock %}
--------------------------------------------------------------------------------
/src/assets/css/base.css:
--------------------------------------------------------------------------------
1 | /* Prism Code Highlighting Theme (see https://prismjs.com) */
2 | @import url("https://cdn.jsdelivr.net/npm/prism-themes@1.5.0/themes/prism-dracula.css");
3 | /* Using google fonts for now hosted fonts not working will look into it later */
4 | @import url("https://fonts.googleapis.com/css2?family=Hind:wght@300;400;700&display=swap");
5 |
6 | :root {
7 | --font-family: "Hind", sans-serif;
8 | --font-bold: 700;
9 | --font-medium: 400;
10 |
11 | --font-size: 14px;
12 | --small-font-size: 12px;
13 | --small-medium-font-size: 22px;
14 | --medium-font-size: 28px;
15 | --large-font-size: 32px;
16 | --xlarge-font-size: 44px;
17 |
18 | --primary-font-color: #292c3a;
19 | --secondary-font-color: #eeeeee;
20 |
21 | --primary-background-color: #ffffff;
22 | --secondary-background-color: #292c3a;
23 |
24 | --button-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25);
25 | --button-radius: 44px;
26 | --mobile-button-radius: 61px;
27 | --mobile-button-height: 64px;
28 | --mobile-button-font-size: 22px;
29 | --desktop-button-height: 40px;
30 |
31 | --input-radius: 8px;
32 |
33 | --link-color: #5d5db9;
34 | --mobile-link-color: #0683f9;
35 |
36 | --list-border: 0.67681px solid #e5e5e5;
37 | --success-color: #a2f4cc;
38 | --light-primary-color: rgba(255, 255, 255, 0.6);
39 | }
40 |
41 | * {
42 | box-sizing: border-box;
43 | }
44 |
45 | :not(pre) > code[class*="language-"] {
46 | /* Fixes issue where theme removes indentation. */
47 | white-space: pre;
48 | }
49 |
50 | html,
51 | body {
52 | font-size: min(max(var(--font-size), 4vw), 22px);
53 | font-family: var(--font-family), sans-serif;
54 | line-height: 1.5;
55 | color: var(--primary-font-color);
56 | background: var(--primary-background-color);
57 | padding: 0;
58 | margin: 0;
59 | scroll-behavior: smooth;
60 | @apply antialiased;
61 | }
62 |
63 | h1, h2, h3, h4, h5, h6 {
64 | margin: 0;
65 | }
66 |
67 | p, blockquote {
68 | margin: revert;
69 | }
70 |
71 | blockquote {
72 | box-shadow: inset 3px 0 0 0 rgb(41 41 41);
73 | padding-left: 1rem;
74 | }
75 |
76 | .figcaption_hack {
77 | color: rgba(117, 117, 117, 1);
78 | font-size: 0.6rem;
79 | font-weight: var(--font-bold);
80 | text-align: center;
81 | margin-right: auto;
82 | margin-left: auto;
83 | max-width: 70%;
84 | display: block;
85 | }
86 |
87 | video {
88 | margin: auto;
89 | }
90 |
91 | li {
92 | font-size: 1rem;
93 | }
94 |
95 | li > a {
96 | font-size: 1rem;
97 | }
98 |
99 | a {
100 | color:#342a6a;
101 | text-decoration: underline;
102 | }
103 |
104 | ol, ul {
105 | margin-top: 1rem;
106 | padding-left: 2rem;
107 | }
108 |
109 | ol {
110 | list-style: decimal;
111 | }
112 |
113 | ul {
114 | list-style: square;
115 | }
116 |
117 | h1,
118 | h2,
119 | h3,
120 | h4,
121 | h5 {
122 | @apply font-bold leading-tight mt-3 break-words;
123 | transition: all 200ms ease-in;
124 | }
125 |
126 | h1 {
127 | @apply text-4xl;
128 | }
129 |
130 | h2 {
131 | @apply text-2xl;
132 | }
133 |
134 | h3 {
135 | @apply text-xl;
136 | }
137 |
138 | h4 {
139 | @apply text-lg;
140 | }
141 |
142 | a {
143 | @apply text-base font-bold;
144 | }
145 |
146 | a:hover {
147 | @apply underline;
148 | }
149 |
150 | p {
151 | @apply text-base;
152 | }
153 |
154 | pre {
155 | @apply my-2 text-sm tracking-wider break-words;
156 | border-radius: 25px;
157 | }
158 |
159 | pre[class*=language-] {
160 | overflow: scroll !important;
161 | }
162 |
163 | hr {
164 | @apply mt-4 mb-2 border-b border-gray-600;
165 | }
166 |
167 | small {
168 | font-size: 0.8rem;
169 | }
170 |
171 | code {
172 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
173 | monospace;
174 | }
175 |
176 | .my-8 {
177 | max-width: 100%;
178 | }
179 |
180 | @media (max-width: 800px) {
181 | nav[aria-label="sub-navigation"] {
182 | display: flex;
183 | align-items: flex-start;
184 | }
185 | }
186 |
187 | /**
188 | * Disable animations if the user has turned on the a11y option for reduced motion due to
189 | * vestibular disorders etc.
190 | *
191 | * @link https://css-tricks.com/introduction-reduced-motion-media-query/#article-header-id-3
192 | */
193 | @media (prefers-reduced-motion: reduce) {
194 | * {
195 | animation-duration: 0.01s !important;
196 | transition-duration: 0.01s !important;
197 | }
198 | }
199 |
200 | .js-focus-visible :focus:not([data-focus-visible-added]) {
201 | @apply outline-none;
202 | }
203 |
204 | /*
205 | Leave it for testing margins, paddings, spacing
206 |
207 | * {
208 | outline: 1px solid rgba(255, 0, 0, 0.2);
209 | :hover {
210 | outline: 1px solid rgba(255, 0, 0, 0.6);
211 | }
212 | }
213 | * * {
214 | outline: 1px solid rgba(0, 255, 0, 0.2);
215 | :hover {
216 | outline: 1px solid rgba(0, 255, 0, 0.6);
217 | }
218 | }
219 | * * * {
220 | outline: 1px solid rgba(0, 0, 255, 0.2);
221 | :hover {
222 | outline: 1px solid rgba(0, 0, 255, 0.6);
223 | }
224 | }
225 | * * * * {
226 | outline: 1px solid rgba(255, 0, 255, 0.2);
227 | :hover {
228 | outline: 1px solid rgba(255, 0, 0, 0.6);
229 | }
230 | }
231 | * * * * * {
232 | outline: 1px solid rgba(0, 255, 255, 0.2);
233 | :hover {
234 | outline: 1px solid rgba(0, 255, 0, 0.6);
235 | }
236 | }
237 | * * * * * * {
238 | outline: 1px solid rgba(255, 255, 0, 0.2);
239 | }
240 | :hover {
241 | outline: 1px solid rgba(0, 0, 255, 0.6);
242 | }
243 | * * * * * * * {
244 | outline: 1px solid rgba(255, 0, 0, 0.2);
245 | }
246 | :hover {
247 | outline: 1px solid rgba(255, 0, 0, 0.6);
248 | }
249 | * * * * * * * * {
250 | outline: 1px solid rgba(0, 255, 0, 0.2);
251 | :hover {
252 | outline: 1px solid rgba(0, 255, 0, 0.6);
253 | }
254 | }
255 | * * * * * * * * * {
256 | outline: 1px solid rgba(0, 0, 255, 0.2);
257 | :hover {
258 | outline: 1px solid rgba(0, 0, 255, 0.6);
259 | }
260 | }
261 |
262 | */
263 |
--------------------------------------------------------------------------------
/src/assets/css/card.css:
--------------------------------------------------------------------------------
1 | .featured-posts .featured-post:first-child {
2 | grid-column: span 2 / span 2;
3 | }
4 |
5 | .doc-link {
6 | color: var(--primary-font-color);
7 | text-decoration: none;
8 | }
9 |
10 | .doc-link p {
11 | font-weight: normal;
12 | }
--------------------------------------------------------------------------------
/src/assets/css/copy.css:
--------------------------------------------------------------------------------
1 | pre[class*="language-"] {
2 | @apply relative overflow-visible rounded;
3 | }
4 | pre[class*="language-"] .copy {
5 | transform: translate(-10px, -90%);
6 | cursor: pointer;
7 | transition: all 200ms ease;
8 | @apply flex justify-center items-center absolute top-0 right-0 rounded-t px-2 py-1 text-secondary-font bg-secondary;
9 | }
10 | pre[class*="language-"]:hover .copy:hover {
11 | transform: translate(-10px, -100%);
12 | @apply opacity-75;
13 | }
14 |
15 | code {
16 | overflow: scroll;
17 | }
18 |
--------------------------------------------------------------------------------
/src/assets/css/tailwind.css:
--------------------------------------------------------------------------------
1 | /* purgecss start ignore */
2 | @import "tailwindcss/base";
3 | @import "./base.css";
4 | @import "./copy.css";
5 | @import "./card.css";
6 | /* purgecss end ignore */
7 |
8 | @import "tailwindcss/components";
9 |
10 | @import "tailwindcss/utilities";
11 |
--------------------------------------------------------------------------------
/src/assets/fonts/Hind-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/assets/fonts/Hind-Bold.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/Hind-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/assets/fonts/Hind-Regular.ttf
--------------------------------------------------------------------------------
/src/demos/index.njk:
--------------------------------------------------------------------------------
1 | ---
2 | pagination:
3 | data: collections.docs
4 | size: 12
5 | alias: demos
6 | reverse: true
7 | permalink: "/demos/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber + 1 }}/{% endif %}"
8 | image: demo-card.webp
9 | title: PWABuilder Demos
10 | ---
11 |
12 | {% extends 'layouts/home.njk' %}
13 | {% block body %}
14 | {% include "demos.njk" %}
15 | {% endblock %}
--------------------------------------------------------------------------------
/src/docs/android/android-playstore-documentation/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/android-playstore-documentation/StoreLogo.png
--------------------------------------------------------------------------------
/src/docs/android/android-playstore-documentation/android-playstore-documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Android Platform
4 | excerpt: Publish your PWA to Google Play
5 | description: Publish your PWA to Google Play
6 | date: 2021-06-23
7 | updatedDate: 2021-10-27
8 | trending: false
9 | featured: true
10 | recommended: true
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | image: docs/android/android-playstore-documentation/StoreLogo.png
14 | author:
15 | name: PWA Builder documentation
16 | tags:
17 | - docs
18 | - Documentation
19 | - Android
20 | ---
21 |
22 |
23 |
24 | PWABuilder's Android platform utilizes the [open source Bubblerwrap tool](https://github.com/GoogleChromeLabs/bubblewrap) to generate a [Trusted Web Activity](https://developers.google.com/web/android/trusted-web-activity/) (TWA) that can be installed on the Google Play Store. This TWA behaves like any other Android application and is a great way to ship your PWA to the Google Play Store.
25 |
26 | 1. [Generating your Android app with PWABuilder](/docs/generating-your-android-package)
27 | 2. [Testing and publishing your your app to the Google Play Store](/docs/testing-and-publishing-your-android-pwa-to-the-google-play-store)
28 | 3. [Updating your existing app](/docs/updating-your-existing-app)
29 | 4. [Removing the Browser Address Bar: Asset Links](/docs/removing-the-browser-address-bar)
30 |
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/analyzing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/analyzing.png
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/android-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/android-card.png
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/download.png
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/enter-url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/enter-url.png
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/generating-your-android-package.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Generating your Android package
4 | excerpt: Everything you need to know about testing and generating your Android app with PWABuilder
5 | description: Everything you need to know about testing and generating your Android app with PWABuilderPlay Store
6 | date: 2021-09-17
7 | updatedDate: 2021-09-17
8 | trending: false
9 | featured: false
10 | isDocumentation: true
11 | backUrl: '/docs/android-platform-documentation/'
12 | image: docs/android/next-steps-documentation/StoreLogo.png
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Android
19 | ---
20 |
21 | To learn more about how PWABuilder generates a Trusted Web Activity from your PWA, check out [our post](/posts/microsoft-and-google-team-up) on this collaborative effort.
22 |
23 | ## Generating your Android application with PWABuilder
24 |
25 | First, go to pwabuilder.com and put in the URL to your PWA, such as [https://sadchonks.com](https://sadchonks.com):
26 |
27 | 
28 |
29 | and then tap start to analyze your PWA.
30 |
31 | 
32 |
33 | You are now at the report card page! If your app is already a PWA your scores will all be green, if not, thats ok! You can [use PWABuilder to help convert your web app to a PWA](/docs/converting-your-web-app-to-a-progressive-web-app-with-pwabuilder/). You can now tap the next button to continue to the packaging page!
34 |
35 | 
36 |
37 | You can now tap the Store Package button on the Android platform to generate your Android app.
38 |
39 | 
40 |
41 | Next you will see a list of the different options for the Android platform that are covered in more detail below.
42 |
43 | 
44 |
45 | When you are ready, tap the Generate button to generate your Android app, and then the Download button when it pops up to download the generated App and associated files.
46 |
47 | 
48 |
49 | After generating your Android app, see our [Android Next Steps documentation](/docs/android/next-steps-documentation/) for more information on how to test your application and then publish to the Google Play Store!
50 |
51 | ## Android Features & Customization
52 |
53 | When we rolled out our initial collaborative work with Google’s Bubblewrap this spring, PWABuilder didn’t have a way to customize the Android package it generated. While this was fine for some basic scenarios, like publishing to the Google Play Store for the first time, it fell short in other ways.
54 |
55 | To address this, we’ve updated PWABuilder to allow for full customization of your Android app package
56 |
57 | With this new functionality, you can customize your PWA for Android:
58 |
59 | - **Package ID:** The Android identifier unique to your app
60 | - **App name:** The full name of your app. We prepopulate this with the [app name](https://w3c.github.io/manifest/#name-member) from your PWA’s app manifest.
61 | - **Launcher name**: The name of your app in the Android launcher. This is typically the same as app name, or a shortened version of it. We prepopulate this with [short_name](https://w3c.github.io/manifest/#short_name-member) from your PWA’s app manifest.
62 | - **App version**: This is the version string displayed to end users, e.g. “1.0.0.0”
63 | - **App version code**: This is an integer used as a private, internal version of your app.
64 | - **Host, Start URL, Manifest URL**: The URLs used to launch your PWA in the Android app. We prepopulate these for you from your app manifest.
65 | - **Status bar color, Nav bar color**: The color of the Android status bar and navigation bar in your PWA. You can also hide these bars by setting Display to
66 | Fullscreen. We prepopulate this using colors from your app manifest.
67 | - **Nav bar color:** Same as above, but for the Android navigation bar. Also can be hidden by setting Display to Fullscreen.
68 | - **Splash screen color:** The background color of the splash screen that will be used when creating your Android app. We prepopulate this with the theme color
69 | specified in your app manifest.
70 | - **Splash screen fade out time:** How long to fade out the splash screen in milliseconds. We default to 300ms.
71 | - **Icon URL**: URLs for the icon to use for your app. We recommend a 512x512 icon.
72 | - **Maskable icon URL**: Optional. The icon to use on Android devices that show rounded corner icons. Typically, this icon should have some padding around the
73 | icon’s content, enabling the icon to be safely rounded without losing fidelity. We populate this with a [purpose: maskable](https://w3c.github.io/manifest/#purpose-member icon from your app manifest. If one can’t be found, we use the icon. For more information about
74 | maskable icons on Android, see [https://web.dev/maskable-icon](https://web.dev/maskable-icon/).
75 | - **Monochrome icon URL**: Optional. The monochrome icon to use for your app. Android can use this to fill your icon with a certain color based on user preferences, theme or color mode, or high contrast configurations. We populate this with a [purpose: monochrome](https://w3c.github.io/manifest/#purpose-member) icon from your app manifest.
76 | - **Fallback behavior:** When the full TWA experience isn’t available, how should your app proceed, whether with a web view or [Chrome’s Custom Tabs feature](https://developer.chrome.com/multidevice/android/customtabs). We default to the latter.
77 | - **Display mode:** **— Standalone** means your PWA takes up all the area except Android status bar and Navigation bar. **— Fullscreen** hide both
78 | bars. This is intended for immersive experiences likes games and media playback.
79 | - **Notifications**: If enabled, your PWA will use [Android Notification Delegation](https://github.com/GoogleChromeLabs/svgomg-twa/issues/60) for push
80 | notifications, meaning your installed PWA can send push notifications without browser permission prompts. You should enable this if your PWA sends push
81 | notifications.
82 | - **Signing key:** How the APK app package will be digitally signed: **— None:** your app package won’t be signed. Unsigned packages will be signed by
83 | the Google Play Store. This is Google’s recommendation, and our default. **— New:** PWABuilder will create a new signing key for you. The signing key will
84 | be included in your zip download. Choosing this will let you fill in details like password, alias, and more. **— Mine:** Upload an existing .keystore
85 | file to use for signing the app package. This should be used if you are updating an existing app in the Store. You’ll be prompted to specify your existing key
86 | passwords and alias.
87 |
88 | Whew! As you can see, you can customize nearly every aspect of your PWA Android app package.
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/options.png
--------------------------------------------------------------------------------
/src/docs/android/generating-your-android-package/report_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/generating-your-android-package/report_card.png
--------------------------------------------------------------------------------
/src/docs/android/next-steps-documentation/next-steps-documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Testing and publishing your Android PWA to the Google Play Store
4 | excerpt: Everything you need to know about testing and publishing your Android PWA to the Google Play Store
5 | description: Everything you need to know about testing and publishing your Android PWA to the Google Play Store
6 | date: 2021-09-17
7 | updatedDate: 2021-09-17
8 | trending: false
9 | featured: false
10 | isDocumentation: true
11 | backUrl: '/docs/android-platform-documentation/'
12 | author:
13 | name: PWA Builder documentation
14 | tags:
15 | - docs
16 | - Documentation
17 | - Android
18 | - PlayStore
19 | ---
20 |
21 | # Testing and publishing your Android PWA to the Google Play Store
22 |
23 | First, to generate your Android package with [PWABuilder](https://www.pwabuilder.com)
24 |
25 | Your next steps:
26 | 1. **Deploy `assetlinks.json` to your server** to prove domain ownership.
27 | 2. **Test your app**: open the `.apk` file on an Android device or Android emulator.
28 | 3. **Submit your app to Google Play**: upload the `.aab` file to the Google Play Store.
29 | 4. **Update `assetlinks.json` for production**: after Google Play signs your app, you'll need to update your asset links to remove the address bar from your app.
30 |
31 | Each step is explained below.
32 |
33 | ## 1. Deploy `assetlinks.json`
34 |
35 | Your zip file contains `assetlinks.json`. This is a [digital asset links file](https://developers.google.com/web/updates/2019/08/twas-quickstart#creating-your-asset-link-file) that proves ownership of your PWA. Upload this file to your server at `https://example.com/.well-known/assetlinks.json`. (Replace example.com with your PWA's URL.)
36 |
37 | > 💁♂️ *Heads up*:
38 | >
39 | > **Digital asset links are required for your PWA on Android**. If you're seeing a browser address bar in your app on Android, or if your app is crashing on launch, it means your `assetlinks.json` file is missing, inaccessible, or incorrect. See our [asset links helper](/Asset-links.md) to fix this.
40 |
41 | ## 2. Test your app on an Android device or Android emulator
42 | Your zip file contains an `.apk` (Android Package) file, which can be loaded on your personal Android device or Android emulator.
43 |
44 | **To test your app, install open the `.apk` file on your Android device or emulator.**
45 |
46 | If you don't have a physical Android device, you can use an Android emulator such as the free [Android Emulator included in Android Studio](https://developer.android.com/studio/run/emulator). Run the emulator and open the `.apk` file to install your app. You can also drag and drop the `.apk` file onto the Android emulator to install it.
47 |
48 | ## 3. Upload your app to the Google Play Store
49 |
50 | Your zip file contains an `.aab` (Android App Bundle) file which can be submitted directly to the Play Store through the [Google Play Console](https://developer.android.com/distribute/console).
51 |
52 | Once you submit your app, it will be reviewed. Once approved, your PWA will be available in the Google Play Store. 😎
53 |
54 | ## 4. Update your asset links file for production
55 |
56 | > 💁🏽♀️ *Heads up*:
57 | >
58 | > This step is required for running the production version of your app. If you skip this step, your app will crash or will a browser address bar will appear inside your app. See our [asset links helper](/Asset-links.md#validate-your-assetlinksjson-file) for more info.
59 |
60 | Once you've uploaded your `.aab` file, Google Play re-signs your app. Because of this, you'll need to update your asset links file.
61 |
62 | To update your asset links and remove the address bar from your app, login to the [Google Play Console](https://developer.android.com/distribute/console), select your app, then choose `Setup` -> `App integrity`, then copy your `SHA-256 fingerprint`:
63 |
64 |
65 |
66 | Then, paste the fingerprint into your `assetlinks.json` file:
67 |
68 | ```json
69 | [
70 | {
71 | "relation": ...,
72 | "target": {
73 | "namespace": ...,
74 | "package_name": ...,
75 | "sha256_cert_fingerprints": [
76 | "...",
77 | "PASTE YOUR NEW SHA-256 FINGERPRINT HERE"
78 | ]
79 | }
80 | }
81 | ]
82 | ```
83 |
84 | Once your updated `assetlinks.json` file is deployed to your server, the address bar will disappear from your app.
85 |
86 | ## Save your signing key
87 |
88 | Your zip file contains `signing.keystore` and `signing-key-info.txt`:
89 |
90 | - `signing.keystore` is the Android key store file containing the signing key.
91 | - `signing-key-info.txt` is a text file containing your signing key information, such as the key password, store password, and key alias.
92 |
93 | Keep both of these files in a safe place. **You'll need them to deploy future versions of your app.** See [Uploading a new version](#uploading-a-new-version) for more info.
94 |
95 | ## Updating an existing app in the Play Store
96 |
97 | Have an existing app in the Play Store and want to update it to a new version? No problem! See [updating an existing app](/docs/android/updating-your-existing-app).
98 |
99 | ## Note about Quality Criteria on Android
100 |
101 | As of Chrome 86, PWAs downloaded from the Google Play Store will now crash if your app:
102 | - Does not have a valid TLS certificate
103 | - Does not link to your digital assetlinks file correctly
104 |
105 | Because of this you should ensure that your PWA runs on an HTTPS domain and has your assetlinks file properly linked.
106 |
107 | For more info about Chrome's quality criteria policy, check out [this article](https://blog.chromium.org/2020/06/changes-to-quality-criteria-for-pwas.html) from our friends over on the Chrome team.
108 |
109 | ## Note about Apps for Children
110 |
111 | Be aware that PWAs on Android cannot currently target children as their audience.
112 |
113 | Google Play's [Children And Families Policy](https://developer.android.com/google-play/guides/families) blocks PWAs from targetting children because PWAs potentially have full access to the web.
114 |
115 | If you're building an education app, for example, you'll need to specify `Target Audience: Older Users` when submitting your app to Google Play. Otherwise your app may not be approved, or may be removed from the Store.
116 |
117 | Google is considering engineering and policy updates to permit PWAs for children in the future. Please see [this thread](https://github.com/pwa-builder/PWABuilder/issues/1752) for more details.
118 |
119 | ## Need more help?
120 |
121 | If the browser address bar is showing up in your app, see our [asset links helper](https://github.com/pwa-builder/CloudAPK/blob/master/Asset-links.md).
122 |
123 | If you're otherwise stuck, we're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/android/removing-the-browser-address-bar/asset-links-details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/removing-the-browser-address-bar/asset-links-details.png
--------------------------------------------------------------------------------
/src/docs/android/removing-the-browser-address-bar/asset-links-package-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/removing-the-browser-address-bar/asset-links-package-id.png
--------------------------------------------------------------------------------
/src/docs/android/removing-the-browser-address-bar/google-play-signing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/removing-the-browser-address-bar/google-play-signing.png
--------------------------------------------------------------------------------
/src/docs/android/removing-the-browser-address-bar/removing-the-browser-address-bar.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Removing the Browser Address Bar
4 | excerpt: Browser address bar showing in your Android PWA? Learn how to fix this issue using asset-links...
5 | description: Browser address bar showing in your Android PWA? Learn how to fix this issue using asset-links...
6 | date: 2021-10-11
7 | updatedDate: 2021-10-11
8 | trending: false
9 | featured: false
10 | isDocumentation: true
11 | backUrl: '/docs/android-platform-documentation/'
12 | image: docs/android/removing-the-browser-bar/google-play-signing.png
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Android
19 | ---
20 |
21 | If you're seeing a browser address bar in your PWA Android app, it means you need to update your digital asset links, the `assetlinks.json` file.
22 |
23 | This document shows how fix this issue so the browser address bar won't show up.
24 |
25 | Please note that a "Chrome is in use" banner is expected the first time your app is run. That is not evidence of a broken asset links. You'll know if your asset links are incorrect when the browser address bar shows up in your Android app.
26 |
27 | ## Make sure assetlinks.json is valid and accessible
28 |
29 | If you're not sure what asset links are or if you don't have an `assetlinks.json` file, go back and read our [Next Steps page](/docs/removing-the-browser-bar).
30 |
31 | Once you have an `assetlinks.json` file deployed to your server, make sure it's accessible via a web browser at `https://YOUR-PWA-URL/.well-known/assetlinks.json`. (Replace YOUR-PWA-URL with the your PWA's URL.) It's important that this file be in the `/.well-known` subdirectory as shown above. Chrome on Android will look at this URL for your asset links file, and will show the browser addres bar if it's not found.
32 |
33 | ## Add production fingerprint
34 |
35 | If you haven't already, you need to add Google Play's production fingerprint to your `assetlinks.json` file.
36 |
37 | Login to the [Google Play Console](https://developer.android.com/distribute/console), select your app, then choose `Setup` -> `App integrity`, then copy your `SHA-256 fingerprint`:
38 |
39 | 
40 |
41 | Paste that fingerprint into your `assetlinks.json` file:
42 |
43 | ```json
44 | [
45 | {
46 | "relation": ...,
47 | "target": {
48 | "namespace": ...,
49 | "package_name": ...,
50 | "sha256_cert_fingerprints": [
51 | "...",
52 | "PASTE YOUR NEW SHA-256 FINGERPRINT HERE"
53 | ]
54 | }
55 | }
56 | ]
57 | ```
58 |
59 | Once you follow these steps, the browser address bar should no longer appear in your app. 😎
60 |
61 | ## Validate your `assetlinks.json` file
62 |
63 | If your address bar is still showing up after the above steps, the issue is likely due to incorrect asset links: Android thinking your asset links are different than what your `assetlinks.json` file specifies.
64 |
65 | To fix this, we'll check what Android believes is the asset links for your PWA, then update our `assetlinks.json` with the new value.
66 |
67 | 1. Install your app on an Android device or Android emulator
68 | 2. Install the [Asset Links Tool](https://play.google.com/store/apps/details?id=dev.conn.assetlinkstool) from the Google Play Store.
69 | 3. Run the Asset Links Tool and search for your PWA's package ID (e.g. `com.myawesomepwa`):
70 | 
71 | 4. Tap your PWA's package ID to view its asset links, then tap `Copy Signature`:
72 | 
73 | 5. Open your `assetlinks.json` file and find the `sha256_cert_fingerprints` array member. Paste the copied signature into the `sha256_cert_fingerprints`. Your `assetlinks.json` file should look something like this, with 2 fingerprints separated by a comma as shown below:
74 | ```json
75 | [{
76 | "relation": ...,
77 | "target" : {
78 | "namespace": ...,
79 | "package_name": ...,
80 | "sha256_cert_fingerprints": [
81 | "...",
82 | "4B:C1:D7:C7:8D:74:21:56:8C:E0:13:00:12:35:19:94:4B:33:1E:3C:2B:E5:7A:04:04:FE:F9:3E:58:30:B0:F4"
83 | ]
84 | }
85 | }]
86 | ```
87 |
88 | 6. Save your `assetlinks.json` file and re-upload to your server.
89 |
90 | > 💁♀️ *Heads up*
91 | >
92 | > Make sure your pasted fingerprints have a comma between them, otherwise your `assetlinks.json` will contain invalid JSON. You can [validate your JSON](https://jsonformatter.curiousconcept.com/) to be sure everything's correct.
93 |
94 | Once you follow these steps, the browser address bar should no longer appear in your app. 😎
95 |
96 | ## Make sure there are no redirects
97 |
98 | Another common cause of the address bar showing is redirects across origins. (Cosmetic redirects are fine.)
99 |
100 | For example, if your site automatically redirects to a different subdomain (e.g. https://myawesomepwa.com redirects to https://www.myawesomepwa.com), you'll need to make sure to generate your Android package on PWABuilder with the correct, canonical URL.
101 |
102 | For example, if you always redirect to https://www.myawesomepwa.com (the `www` subdomain), you need to generate your Android package on PWABuilder using the *same URL*, in this case, the one with the `www` subdomain.
103 |
104 | Likewise, if you redirect the `www` subdomain to the bare domain, you'll need to use the bare domain in PWABuilder when generating your Android package.
105 |
106 | Bottom line: **whatever URL you redirect to, that's the URL you need to put into PWABuilder**. If you don't do this, the Android platform will look for asset links at a URL that redirects, which renders your asset links invalid and causes the address bar to appear.
107 |
108 | See [this issue](https://github.com/GoogleChromeLabs/bubblewrap/issues/310#issuecomment-685505871) for more information.
109 |
110 | ## Clearing your site's cache
111 |
112 | If you had previously installed your PWA on an Android device, your `assetlinks.json` file might be cached. Uninstall isn't enough; you may have to manually clear the browser's cache for your site before Chrome detects an updated `assetlinks.json` file.
113 |
114 | ## The browser address bar is _still_ showing
115 |
116 | If you followed all these steps and are still seeing the browser address bar, we're here to help. [Open an issue](https://github.com/pwa-builder/PWABuilder/issues/new?assignees=&labels=android-platform&body=Type%20your%20question%20here.%20Please%20include%20the%20URL%20to%20your%20app%20in%20Google%20Play.%0A%0A%3E%20If%20my%20answer%20was%20in%20the%20docs%20all%20along%2C%20I%20promise%20to%20give%20%245%20USD%20to%20charity.&title=Address%20bar%20still%20showing%20in%20my%20app) and we'll help you fix it.
--------------------------------------------------------------------------------
/src/docs/android/updating-your-existing-app/signing-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/updating-your-existing-app/signing-options.png
--------------------------------------------------------------------------------
/src/docs/android/updating-your-existing-app/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Updating your existing app
4 | excerpt: How to update your existing app
5 | description: How to update your existing app
6 | date: 2021-09-17
7 | updatedDate: 2021-09-17
8 | trending: false
9 | featured: false
10 | isDocumentation: true
11 | backUrl: '/docs/android-platform-documentation/'
12 | author:
13 | name: PWA Builder documentation
14 | tags:
15 | - docs
16 | - Documentation
17 | - Android
18 | - PlayStore
19 | ---
20 |
21 | ## Updating an existing app in the Play Store
22 |
23 | If have an existing app in the Play Store and you want to publish a new version of it, follow these steps:
24 |
25 | 1. [Generate your new package](/docs/android/generating-android-package)
26 | 4. Specify your new `App version` and `App version code`:
27 |
28 | 5. Scroll down to `Signing key` and choose `Use mine`:
29 | 6. Choose your existing signing key file, and fill in your existing signing key information (`key alias`, `key password`, `store password`)
30 | 7. Build your package.
31 |
32 | [PWABuilder](https://www.pwabuilder.com) will build a package signed with your existing key. When you upload it to Google Play, it'll automatically be recognized as a new version of your existing app. 😎
--------------------------------------------------------------------------------
/src/docs/android/updating-your-existing-app/version-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/android/updating-your-existing-app/version-code.png
--------------------------------------------------------------------------------
/src/docs/base_package/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/download.png
--------------------------------------------------------------------------------
/src/docs/base_package/enter-url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/enter-url.png
--------------------------------------------------------------------------------
/src/docs/base_package/generate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/generate.png
--------------------------------------------------------------------------------
/src/docs/base_package/mani-editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/mani-editor.png
--------------------------------------------------------------------------------
/src/docs/base_package/mani-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/mani-options.png
--------------------------------------------------------------------------------
/src/docs/base_package/pwa-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/pwa-logo.png
--------------------------------------------------------------------------------
/src/docs/base_package/report-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/report-card.png
--------------------------------------------------------------------------------
/src/docs/base_package/sw-picker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/sw-picker.png
--------------------------------------------------------------------------------
/src/docs/base_package/sw-review.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/sw-review.png
--------------------------------------------------------------------------------
/src/docs/base_package/upload-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/base_package/upload-icons.png
--------------------------------------------------------------------------------
/src/docs/base_package/webapp-to-pwa.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Converting your web app to a Progressive Web App with PWABuilder
4 | excerpt: PWABuilder can help you generate the basic technical requirements....
5 | description: PWABuilder can help you generate the basic technical requirements to convert your web app to a PWA, a web manifest and a service worker.
6 | date: 2021-09-08
7 | updatedDate: 2021-09-08
8 | trending: false
9 | featured: true
10 | recommended: true
11 | isDocumentation: true
12 | image: docs/base_package/pwa-logo.png
13 | backUrl: '/docs'
14 | author:
15 | name: PWA Builder documentation
16 | tags:
17 | - docs
18 | - Documentation
19 | ---
20 | PWABuilder can help you generate the basic technical requirements to convert your web app to a PWA, a web manifest and a service worker.
21 |
22 | **Note** : Don't have an app yet? Check out our [PWA Starter Kit](https://github.com/pwa-builder/pwa-starter/) to start building one. The starter kit already includes a web manifest and service worker,
23 | which means you can skip the steps below and get right to building your PWA.
24 |
25 | Your Steps:
26 | 1. Enter the URL to your web app in the URL field of PWABuilder:
27 |
28 |
29 |
30 | 2. Notice that you currently score a 0 for both the web manifest and service worker. This is because you have not added them to your web app yet.
31 |
32 |
33 |
34 | 3. Tap the Manifest score bar to see the details of your score. As you can see, your web app will currently score a 0 for each section. This is ok though, as PWABuilder has generated a basic one for us that we can quickly edit and use. Tap the "Manifest Options" button to start editing your generated web manifest.
35 |
36 |
37 |
38 | 4. Edit your manifest fields using the manifest editor that is now open. We recommend atleast checking that the name and short_name fields are what you expect them to be.
39 |
40 |
41 |
42 | 5. Scroll down to the Upload App Icons section and tap the Upload button, then just choose your 512x512 icon and tap generate. This will generate all the different sizes of your Icon that PWAs need.
43 |
44 |
45 |
46 | 6. Tap the Done button and then Tap the Service Worker score bar, just as you did with the Manifest score bar before. This will take you to a list of pre-built service workers that the PWABuilder team has put together.
47 |
48 |
49 |
50 | 7. You can now choose the service worker that sounds best suited for your application by tapping the "Add to Base Package" button. After this tap the "Done" button.
51 |
52 |
53 |
54 | 8. You should now be back at the review page. We are now ready to go forward, so tap the "next" button.
55 |
56 |
57 |
58 | 9. You are almost ready! You can now tap the "Generate" button which will generate your Manifest, Service Worker and Icons. Tap the "Download" button when it pops up. You are now ready to move to the next steps, adding these files and your icons to your web app to make it a PWA!
59 |
60 |
61 |
62 | # Next steps for building your Progressive Web App (PWA)
63 | You've successfully generated a web manifest and service worker for your web app. Once you add these to your app, you'll be a PWA that can be published to app stores. 😎
64 |
65 | Your next steps:
66 | 1. **Upload `manifest.json`** to your server
67 | 2. **Upload `pwabuilder-sw.js`** to your server
68 | 3. **Upload the `images` folder** to your server
69 | 4. **Add a manifest link tag** to your HTML
70 | 5. **Add a service worker registration snippet** to your HTML
71 |
72 | Each step is explained below.
73 |
74 | ## 1. Upload `manifest.json` to your server
75 |
76 | Your zip file contains `manifest.json` - this is your [web manifest](https://www.w3.org/TR/appmanifest/) that contains metadata about your app, such as name, description, and more.
77 |
78 | Upload `manifest.json` to the root directory of your web server, e.g. https://myawesomepwa.com/manifest.json.
79 |
80 | ## 2. Upload `pwabuilder-sw.js` to your server
81 |
82 | Your zip file contains `pwabuilder-sw.js` - this is your [service worker](https://web.dev/codelab-service-workers/) that can provide advanced functionality to your web app. For example, service workers can enable your app to work offline, do push notifications, cache your app's files for faster load times, and more.
83 |
84 | Upload `pwabuilder-sw.js` to the root directory of your web server, e.g. https://myawesomepwa.com/pwabuilder-sw.js.
85 |
86 | ## 3. Upload the `images` folder to your server
87 |
88 | Your zip file contains a `images` folder containing all the image resources for your app. These images are referenced in your web manifest.
89 |
90 | Upload the `images` folder to the root directory of your web server. When you're done, you should have working URLs like https://myawesomepwa.com/images/app-icon-512x512.png
91 |
92 | ## 4. Add a manifest link tag to your HTML
93 |
94 | Now that you've uploaded your web manifest file, your HTML page should load it.
95 |
96 | In the `` section of your HTML, add the following code:
97 |
98 | ```html
99 |
100 | ```
101 |
102 | ## 5. Add a service worker registration snippet to your HTML
103 |
104 | Now that you've uploaded your service worker file, your HTML page should register your service worker.
105 |
106 | In the `` section of your HTML, add the following code:
107 |
108 | ```html
109 |
114 | ```
115 |
116 | ## Congrats, you're a PWA!
117 |
118 | If you've followed all these steps, congratulations, you're a Progressive Web App (PWA)! 😎
119 |
120 | To verify your app is a PWA, run your URL through [PWABuilder](https://pwabuilder.com) again. PWABuilder will report a score for your manifest and service worker, acknowledging your PWA status.
121 |
122 | ## Publish your PWA to app stores
123 |
124 | As a PWA, your app can be published to App Stores like Microsoft Store (Windows), Google Play (Android), and more. Run your app URL through PWABuilder and follow the steps to publish to app stores.
125 |
126 | ## Need more help?
127 |
128 | If you're otherwise stuck, we're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/index.njk:
--------------------------------------------------------------------------------
1 | ---
2 | pagination:
3 | data: collections.docs
4 | size: 20
5 | alias: docs
6 | reverse: true
7 | permalink: "/docs/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber + 1 }}/{% endif %}"
8 | title: PWABuilder Documentation
9 | ---
10 |
11 | {% extends 'layouts/home.njk' %}
12 | {% block body %}
13 | {% include "docs.njk" %}
14 | {% endblock %}
--------------------------------------------------------------------------------
/src/docs/ios/build-your-ios-app/build-your-ios-app.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Build Your iOS App
4 | excerpt: How to build and publish your iOS app package to the App Store
5 | description: How to build and publish your iOS app package to the App Store
6 | date: 2021-10-27
7 | updatedDate: 2021-10-27
8 | trending: false
9 | featured: false
10 | recommended: false
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | image: docs/ios/ios-appstore-documentation/StoreLogo.png
14 | author:
15 | name: PWA Builder documentation
16 | tags:
17 | - docs
18 | - Documentation
19 | - iOS
20 | ---
21 |
22 | Once you've built your iOS app using [PWABuilder](https://www.pwabuilder.com), you're ready for your next steps:
23 |
24 | 1. **Build your project** in Xcode
25 | 2. **Test your app**: Run your project in Xcode to try out your PWA on an iPhone simulator or physical iOS device.
26 | 3. **Submit your app to the iOS App Store**
27 |
28 | What you'll need:
29 |
30 | - A **Mac with Xcode installed** (For details, see [our FAQ](/docs/ios-faq#can-i-publish-to-the-app-store-without-a-mac).)
31 | - An **[Apple Developer Account](/docs/publish-your-pwa-to-the-ios-app-store#1-sign-into-your-apple-developer-account)** to publish your app to the App Store.
32 |
33 | Each step is explained below.
34 |
35 | ## 1. Build your project in Xcode
36 |
37 | Your zip file contains a `src` folder containing the source code for your iOS app. You'll [need a Mac with Xcode installed](/docs/ios-faq#can-i-publish-to-the-app-store-without-a-mac) to build this project.
38 |
39 | Unzip the `src` folder and open a terminal in `src` and execute the following command:
40 |
41 | `pod install`
42 |
43 | > 💁♂️ *Heads up*:
44 | >
45 | > If you get an error running `pod install`, you'll need to first run this command: `sudo gem install cocoapods`. Once completed, you can run `pod install`.
46 |
47 | Then, open the `src/[your PWA name].xcworkspace` file.
48 |
49 | This will open the project in Xcode. In Xcode, click `Product` > `Build` to build your project.
50 |
51 | ## 2. Test your app an iPhone simulator
52 |
53 | With the project opened in Xcode, click ▶️ to run your PWA in an iPhone simulator. You may also choose other iOS simulators to try our your app on those devices.
54 |
55 | If you need to debug your PWA while it's running inside an iOS device, click ▶️, then launch Safari. In the top menu bar, choose `Develop` -> `Simulator [device name]` -> `[Your PWA's URL]`. Safari Dev Tools will open, allowing you to execute arbitrary JS, set breakpoints, etc. See [PWABuilder iOS FAQs](/docs/ios-faq) for more info.
56 |
57 | ## 3. Upload your app to the iOS App Store
58 |
59 | Once you've built and tested your app, it's ready to be uploaded to the iOS App Store.
60 |
61 | See [Publish your PWA to the iOS App Store](/docs/publish-your-pwa-to-the-ios-app-store) for a step-by-step guide to publishing your PWA iOS package to the iOS App Store.
62 |
63 | ## Need more help?
64 |
65 | Check out our [PWABuilder iOS FAQs](/docs/ios-faq) for answers to frequently asked questions about PWABuilder's iOS platform.
66 |
67 | If you're stuck, we're here to help. You can [open an issue](https://github.com/pwa-builder/PWABuilder/issues/new?assignees=&labels=ios-platform,question%20%3Agrey_question%3A&body=Type%20your%20question%20here.%20Please%20include%20the%20URL%20to%20your%20PWA.%0A%0A%3E%20If%20my%20answer%20was%20in%20the%20docs%20all%20along%2C%20I%20promise%20to%20give%20%245%20USD%20to%20charity.) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/ios/ios-faq/ios-faq.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: iOS FAQ
4 | excerpt: Answers to frequently asked questions about PWABuilder's iOS platform
5 | description: Answers to frequently asked questions about PWABuilder's iOS platform
6 | date: 2021-10-27
7 | updatedDate: 2021-10-27
8 | trending: false
9 | featured: false
10 | recommended: false
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | image: docs/ios/ios-appstore-documentation/StoreLogo.png
14 | author:
15 | name: PWA Builder documentation
16 | tags:
17 | - docs
18 | - Documentation
19 | - iOS
20 | ---
21 |
22 | ## How can I tell if my PWA was launched from the iOS app?
23 |
24 | At runtime, your PWA will have a `app-platform` cookie. This cookie's value will be set to `iOS App Store`.
25 |
26 | ## Can I publish to the App Store without a Mac?
27 |
28 | No, not currently. You'll need Xcode to build your project, which is only available on Mac.
29 |
30 | However, there are 3rd party build services, such as [AppVeyor](https://www.appveyor.com/pricing/) or [GitHub Actions with Xcode Archive](https://github.com/marketplace/actions/xcode-archive), that can build Xcode projects as part of your continuous integration (CI) pipeline.
31 |
32 | Additionally, there are inexpesive services, such as [Macincloud](https://www.macincloud.com/), which let you remote into a Mac with Xcode already installed. You can use those services to build your PWA iOS app package.
33 |
34 | ## What PWA features can I use on iOS?
35 |
36 | Unlike Google Play and Microsoft Store, Apple's App Store doesn't natively support PWAs.
37 |
38 | To bridge this gap, your PWA runs in a [WKWebView](https://developer.apple.com/documentation/webkit/wkwebview) hosted inside a native Swift app. Generally, features that work in iOS Safari will work in your PWA.
39 |
40 | This includes [service worker support](https://love2dev.com/blog/apple-ships-service-workers/).
41 |
42 | To get a glimpse of general PWA support on iOS, we recommend [Maximiliano Firtman's posts on the subject](https://firt.dev/tags/ios/).
43 |
44 | ## How do updates work?
45 |
46 | Since your PWA is being loaded in a web view, pushing changes to your web app will automatically be reflected in your iOS app. No App Store resubmission required.
47 |
48 | If you need to make changes to the iOS app itself -- for example, adding new iOS-specific capabilities, or otherwise modifying your app template -- only then you'll need to submit an update to your App Store listing.
49 |
50 | ## Can I publish my PWA to the *Mac* Store?
51 |
52 | Yes. While this template is designed for the iOS App Store, you can additionally publish to the Mac App Store.
53 |
54 | In [App Store Connect](https://appstoreconnect.apple.com/apps), choose your app. Then under `Pricing & Availability`, enable `Make this app available for MacOS App Store`:
55 |
56 | 
57 |
58 | ## Can I debug my PWA app on an iOS device?
59 |
60 | You can open Safari Dev Tools while your PWA is running in your iPhone simulator.
61 |
62 | 1. Open your .xcworkspace file in Xcode.
63 | 2. Click ▶ to run your PWA inside the iPhone simulator.
64 | 3. Open Safari
65 | 4. In the top menu bar, choose `Develop` -> `Simulator [device name]` -> `[Your PWA's URL]`
66 | 
67 | 5. Safari's dev tools will open, allowing you to debug your PWA, execute arbitrary JS, set breakpoints, etc.
68 |
69 | ## Can I customize my source code?
70 |
71 | Yes, certainly. Open your project in Xcode and make your changes as usual.
72 |
73 | ## Can I use iOS capability X?
74 |
75 | Yes. To use iOS capabilities, such as `Sign In with Apple`, `Apple Wallet`, `HealthKit`, or other iOS-specific capabilities, you should specify those capabilities while creating your Bundle ID.
76 |
77 | Then, make changes to the code to make use of that ability.
78 |
79 | ## How is this different from the old PWABuilder iOS platform?
80 |
81 | Some time ago, PWABuilder had an iOS platform based on the now-deprecated UIWebView. The template lacked a number of PWA integrations, and because it used deprecated technology, couldn't take advantage of new WebKit capabilities, such as service worker support via [App-Bound Domains](https://webkit.org/blog/10882/app-bound-domains/).
82 |
83 | This new template is a fresh take on a PWA iOS app using modern iOS technologies.
84 |
85 | ## How is this different than Apache Cordova?
86 |
87 | Apache Cordova is a broader platform that aims to expose native capabilities to your web app through a special runtime and plugins. For example, you might use Cordova to package your PWA, then make special calls from your PWA's JavaScript to interact with native functionality.
88 |
89 | PWA's iOS platform is more narrow in scope, aiming to make your PWA run well, as-is, with as many PWA capabilities as we can build, on iOS. PWABuilder's iOS platform is more like a polyfill for PWAs on iOS: giving you some PWA functionality where iOS is lacking. We make it easy to publish your PWA to the iOS App Store without any changes to your PWA code.
90 |
91 | If Cordova's broader approach is the right tool for your PWA on iOS, by all means use it.
92 |
93 | ## Need more help?
94 |
95 | If you're stuck, the PWABuilder team would be glad to point you in the right direction. [Open an issue](https://github.com/pwa-builder/PWABuilder/issues/new?assignees=&labels=ios-platform,question%20%3Agrey_question%3A&body=Type%20your%20question%20here.%20Please%20include%20the%20URL%20to%20your%20PWA.%0A%0A%3E%20If%20my%20answer%20was%20in%20the%20docs%20all%20along%2C%20I%20promise%20to%20give%20%245%20USD%20to%20charity.) and we'll help walk you through it.
96 |
--------------------------------------------------------------------------------
/src/docs/ios/ios-platform/ios-platform.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: iOS Platform
4 | excerpt: Publish your PWA to the iOS App Store
5 | description: Publish your PWA to the iOS App Store
6 | date: 2021-10-26
7 | updatedDate: 2021-10-28
8 | trending: false
9 | featured: true
10 | recommended: true
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | image: docs/ios/ios-platform/ios-store-logo.png
14 | author:
15 | name: Judah Gabriel Himango
16 | tags:
17 | - docs
18 | - Documentation
19 | - iOS
20 | ---
21 |
22 |
23 |
24 | The PWABuilder iOS platform is an experimental project that utilizes a Webkit-based web view (WKWebView) to load your PWA on iOS and enable some PWA functionality.
25 |
26 | When you use PWABuilder to package your PWA for iOS, your download will include an Xcode project customized for your PWA. Once downloaded, see [Build Your iOS App](/docs/build-your-ios-app) for your next steps.
27 |
28 | ## What can it do?
29 |
30 |
31 | Service worker support
32 |
33 | We utilize [App-Bound Domains]() to enable service workers to function when your PWA is run on supported platforms (iOS 14 and above).
34 |
35 |
36 |
37 |
38 | Shortcuts
39 |
40 | If you've defined [app shortcuts](https://web.dev/app-shortcuts/) in your web manifest, they'll automatically work in your iOS app. See [this issue](https://github.com/pwa-builder/pwabuilder-ios/issues/7) for more details.
41 |
42 |
43 |
44 |
45 | URL capture
46 |
47 | By default, PWABuilder's iOS platform generates a URL capture-ready app. If a user installs your app, you can have your app's URLs open in your PWA, rather than in the browser.
48 |
49 | To enable this, deploy an [Apple App-Site Association file](https://developer.apple.com/documentation/xcode/supporting-associated-domains) to your web server. Your app already contains the necessary configuration to utilize link capture. See [our iOS Platform FAQ](/docs/ios-faq) for more info.
50 |
51 |
52 |
53 |
54 | Permitted navigation scopes
55 |
56 | When you generate your iOS app in PWABuilder, you can specify a list of permitted URLs that are considered in-scope for the app:
57 |
58 |
59 |
60 | This can be useful when your PWA needs to work with 3rd party URLs, such as `Login with Google` or other authentication providers.
61 |
62 |
63 |
64 |
65 | Status bar customization
66 |
67 | The iOS status bar -- containing your iPhone's reception bars, battery level, and more -- can be customized when shown in your app. By default, we set the status bar color to your manifest's `theme_color`, or white if you don't have a `theme_color` supplied.
68 |
69 | As a future enhancement, we may allow you to hide the status bar -- useful in `display: fullscreen` PWAs like games -- as well as change the status bar foreground color.
70 |
71 |
72 |
73 |
74 | Splash screen from manifest props
75 |
76 | While your app initializes and the web view loads your PWA, users will see a splash screen. The splash screen will be a solid background color, with your app's icon centered and a progress bar beneath it:
77 |
78 |
79 |
80 | The splash screen background color is taken from your manifest's `background_color`. The icon is from your manifest's `icons`, and the progress bar color is styled using your manifest's `theme_color`.
81 |
82 | When your app finishes initializing and your PWA is done loading into the web view, the splash screen disappears and your PWA takes the fore.
83 |
84 |
85 |
86 |
87 | iOS app awareness from JS code
88 |
89 | In your PWA, you can detect if you're running in the iOS app by looking for an `app-platform` cookie, its value set to `iOS App Store`.
90 |
91 |
92 |
93 |
94 | Mac Store support
95 |
96 | When publishing your iOS app, you can opt-in to publishing to the Mac App Store as well. Your app will be available to M1 devices running macOS 11 or later.
97 |
98 |
99 |
100 | ## PWABuilder iOS documentation
101 |
102 | Once you've downloaded your iOS app package from PWABuilder, you should [build and test your app](/docs/build-your-ios-app).
103 |
104 | After building and testing your app, [publish your PWA to the iOS App Store](/docs/publish-your-pwa-to-the-ios-app-store).
105 |
106 | Finally, we recommend reading our [PWABuilder iOS FAQ](/docs/ios-faq).
107 |
108 | ## A special thanks
109 |
110 | A great big thank you to PWA enthusiast, open sourcer, and [HostMe](https://www.hostmeapp.com/) developer [Gleb Khmyznikov](https://github.com/khmyznikov). In the true open source spirit, Gleb, along with several members of the PWABuilder open source community, contributed open source iOS projects they had successfully published to the iOS App Store. Gleb suggested we could fork his project for a fresh PWABuilder iOS platform based on latest iOS technologies.
111 |
112 | Gleb encouraged us, provided us help and documentation, and [his code](https://github.com/khmyznikov/ios-pwa-wrap), an outgrowth of his work at [HostMe](https://www.hostmeapp.com/), serves as the foundation for PWABuilder's iOS platform. Gleb, you rock! Thank you for your code, your encouragement, your technical help, your answers to our questions over the last few months. ♥
113 |
114 | ## Disclaimer
115 |
116 | PWABuilder's iOS platform is experimental, and PWABuilder doesn't guarantee that your app will be accepted into Apple's App Store.
117 |
118 | In 2019, Apple released new [guidelines for HTML5 apps in the App Store](https://developer.apple.com/news/?id=09062019b). The new guidelines appear to state that certain kinds of web apps (gambling, lotteries, etc.) may not be accepted into the App Store.
119 |
120 | The PWABuilder team attempted to clarify with Apple their stance on PWAs in their App Store. Despite several meetings, we were unable to receive an official answer from Apple.
121 |
122 | Since that time, a few members of the PWABuilder open source community successfully published PWAs in the iOS app store via web view-based apps. Thus, we are releasing our new iOS platform with the knowledge that Apple may not approve some PWAs, especially if they are little more than traditional websites in an app frame.
123 |
124 | **Our recommendation is to build a great PWA.** PWAs that provide real value to users, PWAs that are more than just websites, PWAs that look and feel like real apps. These are more likely to pass certification and get into the app store. Provide value to your users, and app stores will _want_ your PWA.
125 |
--------------------------------------------------------------------------------
/src/docs/ios/ios-platform/ios-store-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/ios/ios-platform/ios-store-logo.png
--------------------------------------------------------------------------------
/src/docs/windows/finding-publisher-info/finding-your-windows-publisher-info.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Finding your Windows Publisher info
4 | excerpt: How to get the 3 important details to create your MSIX package
5 | description: How to get the 3 important details to create your MSIX package
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | ---
20 |
21 | In order to publish your PWA in the Microsoft Store, you'll need 3 things:
22 |
23 | 1. `Package ID`
24 | 2. `Publisher ID`
25 | 3. `Publisher display name`
26 |
27 | To get this information, go to [Windows Partner Center](https://partner.microsoft.com/dashboard) and click on your app. (Don't have an app yet? [Create one](/docs/publish-a-new-app-to-the-microsoft-store/).)
28 |
29 | Choose `Product Management` -> `Product Identity`:
30 |
31 |
32 |
33 | You'll see the Package ID, Publisher ID, and publisher display name. You'll need all three of these to publish in the Store.
34 |
35 | On PWABuilder when generating your Windows app, add these values to the Windows package options:
36 |
37 |
38 |
39 | ## Need more help?
40 |
41 | Having trouble getting your package info? You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
42 |
--------------------------------------------------------------------------------
/src/docs/windows/finding-publisher-info/required-data-from-partner-center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/finding-publisher-info/required-data-from-partner-center.png
--------------------------------------------------------------------------------
/src/docs/windows/finding-publisher-info/required-data-in-pwabuilder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/finding-publisher-info/required-data-in-pwabuilder.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/app-name-pwabuilder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/app-name-pwabuilder.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/app-name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/app-name.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/fixing-common-errors.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Fixing common errors in Microsoft Store app submissions
4 | excerpt: FAQ
5 | description: FAQ
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: true
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | ---
20 |
21 | This guide describes how to fix errors you may receive when uploading your PWA app package.
22 |
23 | - [Invalid package publisher name](#invalid-package-publisher-name)
24 | - [Invalid package identity name](#invalid-package-identity-name--invalid-package-family-name)
25 | - [Invalid package family name](#invalid-package-identity-name--invalid-package-family-name)
26 | - [This package's manifest uses a display name that you have not reserved](#this-packages-manifest-uses-a-display-name-that-you-have-not-reserved)
27 |
28 | Be aware most of these issues are due to using the incorrect publisher information. [Get the correct publisher info](/docs/finding-your-windows-publisher-info/).
29 |
30 | ## "Invalid package publisher name"
31 |
32 |
33 |
34 | This error indicates that you need to rebuild your PWA app package with the correct `publisher`. [How can I find my publisher ID?](/docs/finding-your-windows-publisher-info/)
35 |
36 | ## "Invalid package identity name" / "Invalid package family name"
37 |
38 |
39 |
40 | These two combined errors, `Invalid package identity name` and `Invalid package family name`, can be fixed by rebuilding your PWA app package on PWABuilder with the correct package ID.
41 |
42 | In the above error message, the expected package ID is `42541MyCompany.MyAwesomePwa` - go to PWABuilder and rebuild your package with the correct package ID:
43 |
44 | ## "This package's manifest uses a display name that you have not reserved"
45 |
46 |
47 |
48 | This means the app name you used when generating your app package on PWABuilder doesn't match the app name reserved in Partner Center.
49 |
50 | The app name in Partner Center...
51 |
52 |
53 |
54 | ...must match the app name you used on PWABuilder:
55 |
56 |
57 |
58 | ## Need more help?
59 |
60 | We're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/invalid-package-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/invalid-package-id.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/invalid-publisher-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/invalid-publisher-id.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/not-reserved.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/not-reserved.png
--------------------------------------------------------------------------------
/src/docs/windows/fixing-common-errors/updated-package-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/fixing-common-errors/updated-package-id.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-app-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-app-icon.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-display-scales.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-display-scales.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-large-tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-large-tile.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-medium-tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-medium-tile.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-small-tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-small-tile.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-splash.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-store-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-store-logo.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-target-size.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-target-size.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-image-wide-tile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-image-wide-tile.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-os-dark-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-os-dark-mode.png
--------------------------------------------------------------------------------
/src/docs/windows/image-recommendations/windows-os-light-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/image-recommendations/windows-os-light-mode.png
--------------------------------------------------------------------------------
/src/docs/windows/next-steps/next-steps.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Next steps for getting your PWA into the Microsoft Store
4 | excerpt: You've successfully generated a Microsoft Store app package, let's see how to publish it now
5 | description: You've successfully generated a Microsoft Store app package, let's see how to publish it now
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | - Microsoft Store
20 | ---
21 |
22 | You've successfully generated a Microsoft Store app package for your PWA. 😎
23 |
24 | Your next steps:
25 | 1. **Test your app**: run `install.ps1` to install your app on your Windows machine.
26 | 2. **Submit your app packages to the Microsoft Store**: upload the `.appxbundle` and `.msixbundle` files to the Microsoft Store.
27 |
28 | Each step is explained below.
29 |
30 | ## 1. Test your app on your Windows machine
31 |
32 | Your zip file contains `install.ps1`. This is a PowerShell script that installs your app and lets you test it before submitting to the Store.
33 |
34 | Right-click `install.ps1` and choose `Run with PowerShell`.
35 |
36 | > 💁♂️ *Heads up*:
37 | >
38 | > If you get an error saying, *"install.ps1 cannot be loaded because running scripts is disabled on this system"*, you can fix this by opening PowerShell as Administrator, then entering the command `Set-ExecutionPolicy bypass` Once completed, you'll be able to run `install.ps1`.
39 |
40 | The install script will install and launch your PWA app. Once complete, you'll find your app in the Start Menu.
41 |
42 | ## 2. Submit your app packages to the Microsoft Store
43 |
44 | Your zip file [contains 2 app packages](/docs/what-is-a-classic-package/):
45 |
46 | - `{app name}.msixbundle` - the main app package
47 | - `{app name}.classic.appxbundle` - app package that allows users on older versions of Windows (below 10.0.19041, May 2020 Update) to run your app. See our [classic app package explainer](/docs/what-is-a-classic-package/) for details.
48 |
49 | Both packages can be submitted directly to the Microsoft Store through the [Windows Partner Center](https://partner.microsoft.com/dashboard)
50 |
51 | When you're ready to publish to the Store, you can either
52 | - [Publish a new app in the Store](/docs/publish-a-new-app-to-the-microsoft-store/)
53 | - [Update an existing app in the Store](/docs/update-an-existing-app-in-the-microsoft-store/)
54 |
55 | Once you submit your app, it will be reviewed. Once approved -- typically within 24 hours -- your PWA will be available in the Microsoft Store and accessible to ~1 billion Windows users worldwide. 😎
56 |
57 | ## Recommended images for Windows
58 |
59 | To help make your PWA shine on Windows, check out our [Windows app images explainer](/docs/image-recommendations-for-windows-pwa-packages/) for details about what image sizes you should include in your web app manifest for the best experience on Windows.
60 |
61 | ## Promote your app with a "Get this app in the Microsoft Store" badge
62 |
63 | Once you've published your app in the Store, help your users find it. Go to the [app badges site](https://developer.microsoft.com/en-us/microsoft-store/badges/) and generate a "Get this app on the Microsoft Store" badge and add the badge to your site.
64 |
65 | The badge allows users on Windows to install your app with a single click.
66 |
67 | ## Need more help?
68 |
69 | If you're having trouble with your app store submission, be sure to read [fixing package errors](/docs/image-recommendations-for-windows-pwa-packages/).
70 |
71 | If you're still hitting issues, we're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through
72 |
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/add-program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/add-program.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/both-packages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/both-packages.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/create-app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/create-app.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/enroll-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/enroll-apps.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/full-trust-package-man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/full-trust-package-man.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/full-trust-restricted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/full-trust-restricted.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/not-started-status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/not-started-status.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/packages-new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/packages-new.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/publish-new-windows-app.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Publish a new app to the Microsoft Store
4 | excerpt: This guide shows how to publish your PWA as a new app in the Store
5 | description: This guide shows how to publish your PWA as a new app in the Store
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | ---
20 |
21 | This guide shows how to publish your PWA as a new app in the Store. If you already have an app in the Store, you should instead [update your existing app](/docs/update-an-existing-app-in-the-microsoft-store/).
22 |
23 | ## Enroll in Windows developer program
24 |
25 | Login to [Windows Partner Center](https://partner.microsoft.com/dashboard) with your Microsoft account.
26 |
27 | Then, go to your [dashboard](https://partner.microsoft.com/en-us/dashboard/home) to see your enrolled programs. If `Windows & Xbox` is listed, great, you're already enrolled. If not, choose `Add program`:
28 |
29 | Then, under `Windows & Xbox`, choose `Get started`:
30 |
31 |
32 |
33 | ## Create your app
34 |
35 | Now that you're enrolled in the Windows developer program, on the left-side nav bar, under `Windows & Xbox`, choose [`Overview`](https://partner.microsoft.com/en-us/dashboard/windows/overview), and click `Create a new app`:
36 |
37 |
38 |
39 | ## Start a new submission
40 |
41 | If you haven't yet generated your Windows app package through PWABuilder, do that first; you now have everything you need to generate your app package.
42 |
43 | Once you've done that, follow the steps below.
44 |
45 | Click `Start a new Submission`:
46 |
47 |
48 |
49 | ## Add packages
50 |
51 | On the submission details page, you'll see your most recent app submission. Click `Packages` to upload your app packages:
52 |
53 |
54 |
55 | On the packages screen, click `Browse your files`. When browsing for your files, **choose both package files**, `*.msixbundle` *and* `*.appxbundle`.
56 |
57 | > 💁🏾♂️ *Heads up*
58 | >
59 | > Once your packages finish uploading, you may see warnings about restricted capabilities:
60 | > These warnings can be safely ignored.
61 |
62 |
63 | > 💁♂️ *Other errors*
64 | >
65 | > If you're getting other errors when uploading your packages, see [fixing package errors](/docs/fixing-common-errors-in-microsoft-store-app-submissions/).
66 |
67 | Once you upload both package files, you should see something like this, with both packages listed:
68 |
69 |
70 |
71 |
72 | > 💁🏽♀️ *Heads up*:
73 | >
74 | > Your classic app package has a lower version than the main app package. So if you packaged your PWA as version 2.0.0, the classic app package will be version 1.9.0. This way you can submit both packages as a single app.
75 |
76 | Lastly, in the platforms support list, choose `Windows 10 Desktop` and uncheck all other platforms:
77 |
78 |
79 |
80 |
81 |
82 | > 💁🏿♀️ *Heads up*
83 | >
84 | > While your PWA will run on Windows 10 desktop today, we expect Xbox support to land in 2021. 😎
85 |
86 | Click `Save` to save your packages and return to the submission details screen.
87 |
88 | ## Complete remaining options
89 |
90 | You should now see the submission status. Fill out any incomplete statuses:
91 |
92 |
93 |
94 | > 💁🏼♀️ *Heads up*
95 | >
96 | > In `Submission options`, you may receive a warning about restricted capabilities:
97 | > You can write, "Needed for PWA Hosted App model, created by pwabuilder.com"
98 |
99 | Complete all such statuses, then click `Submit to the Store` when finished.
100 |
101 | ## Need more help?
102 |
103 | If you're having trouble with your app store submission, be sure to read [fixing package errors](/docs/fixing-common-errors-in-microsoft-store-app-submissions/).
104 |
105 | If you're still hitting issues, we're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/start-submission.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/start-submission.png
--------------------------------------------------------------------------------
/src/docs/windows/publish-new-windows-app/win10-desktop-only.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/publish-new-windows-app/win10-desktop-only.png
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/descriptions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/pwa-simulator/descriptions.png
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/manifest-template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/pwa-simulator/manifest-template.png
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/mode2-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/pwa-simulator/mode2-code.png
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/pwa-simulator.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Simulate your PWA on Windows 11
4 | excerpt: This guide shows you how to use and customize the PWA simulator
5 | description: Visualize your PWA on Windows 11 before packaging for the Microsoft Store
6 | date: 2021-08-03
7 | trending: false
8 | featured: false
9 | image: docs/windows/pwa-simulator/store-preview.png
10 | isDocumentation: true
11 | backUrl: '/docs'
12 | author:
13 | name: PWA Builder documentation
14 | tags:
15 | - docs
16 | - Documentation
17 | - Windows
18 | ---
19 |
20 | Have you ever wondered if it would be possible to see how your PWA looks on Windows 11 before packaging for the Microsoft Store? The new PWA simulator enables you to preview your PWA experience on Windows 11 and see how your application will look in the Microsoft Store and even on the start menu to your users. You can also utilize the code editor within the simulator to edit manifest values real-time and see how changes in your manifest will impact your end users experience on Windows 11. This can help for you to understand what steps you can take to improve your PWA before you package it for distribution on the Microsoft Store. This guide shows you how to use *PWA simulator*, a [web component](https://medium.com/pwabuilder/building-pwas-with-web-components-33f986bf8e4c) that allows you to simulate your PWA on Windows 11 based on your app's `manifest.json` file. Below is the simulation of PWABuilder Using the link below you can now input the link to your PWA and see how your application will appear on a Windows 11 device. Want to try it out with your own URL? Then you can visit the [component's demo site](https://thankful-field-01d77ed10.azurestaticapps.net/) and enter the URL to your PWA!
21 |
22 | ## Installation
23 | The component can be [downloaded](https://www.npmjs.com/package/@pwabuilder/pwa-simulator) from `npm` with `npm i @pwabuilder/pwa-simulator`. Typings are also included in the package.
24 |
25 | ## Using this component
26 |
27 | ### Modes
28 | The `pwa-simulator` can be used in 2 ways: 1. *You can enter the PWA's URL in the initially rendered form*, and via the [\`pwabuilder-manifest-finder\` API](https://github.com/pwa-builder/pwabuilder-manifest-finder), the component fetches the corresponding web manifest.  2. *The site's URL can be passed as a property to the component*, together with the web manifest. Note that the PWA's URL is still needed in this mode to display the icons and other images. 
29 |
30 | ## Configuration
31 | All properties are optional and have default values, but for the optimal experience these should be modified as needed. Note that in the HTML markup, property names should be all in lowercase. For more information refer to [lit's documentation](https://lit.dev/docs/components/properties/#attributes).
32 | - `siteUrl`: The PWA's URL. If not defined, the component will initially display a form to input the site's URL (see mode 1 above).
33 | - `manifest`: The input manifest object. The `siteUrl` property should be defined if a manifest is given as input.
34 | - Default: 
35 | - `hideEditor`: If true, the code editor is hidden and only the simulator window is displayed.
36 | - Default: `false`
37 | - `explanations`: Object containing the explanation messages that are displayed when the user interacts with the simulator.
38 | - `initial` is the starting message (can be used to suggest an initial action to the user).
39 |
40 | `appWindow`, `startMenu`, `jumpList` and `store` are all shown when the respective window is open. If a value isn't specified, the default message is used.
41 |
42 | - `Default`: 
43 |
44 | - `explanationDisplayTime`: The duration (in milliseconds) of the explanation message display, after which it fades out. - Default: 5000 (5 seconds)
45 |
46 | ## Styling
47 | The simulator exposes the parts below for customization with the [CSS ::part()pseudo-element](https://css-tricks.com/styling-in-the-shadow-dom-with-css-shadow-parts/):
48 | - `background`: The simulator's main container.
49 | - `content`: The container of both the text editor and platform window.
50 | - `input-form`: The form for entering the PWA's URL.
51 | - `input-title`: The title of the form for entering the PWA's URL.
52 | - `input-field`: The text field for entering the PWA's URL.
53 | - `input-button`: The button that submits the form for entering the PWA's URL.
54 |
55 | The following [CSS variables](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) can also be provided:
56 | - `--font-family`: The component's main font family.
57 | - `--font-color`: The component's main font color.
58 | - `--background`: The CSS background of the entire component.
59 | - `--pwa-background-color`: Fallback background color to use in case it is not defined in the manifest.
60 | - `--pwa-theme-color`: Fallback theme color to use in case it is not defined in the manifest.
61 |
62 | ## Next steps
63 | In the future, the PWABuilder team hopes to integrate the Windows 11 simulator into the manifest editor on the PWABuilder site. This would enable developers to see and feel the PWA Windows 11 experience as they are editing their manifest for store packaging. Have feedback on what you want to see built out next in the Windows 11 simulator? Open a [feature request](https://github.com/pwa-builder/pwa-simulator) on GitHub and make sure to mention the Windows 11 simulator with your recommendations. Ready to get started packaging your PWA, head over to [pwabuilder.com ](https://www.pwabuilder.com/) to package your PWA today! ## Need help? Are you having trouble using this component, encountered a bug, or just have a question concerning its customization? Then feel free to [open an issue](https://github.com/pwa-builder/pwa-simulator) and we'll do our best to help!
64 |
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/store-preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/pwa-simulator/store-preview.png
--------------------------------------------------------------------------------
/src/docs/windows/pwa-simulator/url-form.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/pwa-simulator/url-form.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/add-submission.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/add-submission.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/both-packages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/both-packages.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/browse-for-package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/browse-for-package.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/existing-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/existing-apps.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/full-trust-restricted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/full-trust-restricted.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/full-trust.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/full-trust.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/packages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/packages.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/remaining-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/remaining-options.png
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/update-an-existing-app.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Update an existing app in the Microsoft Store
4 | excerpt: Sometimes, you'll need to do an update
5 | description: This guide shows how to publish your PWA as an update to an existing app in the Store
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | ---
20 |
21 | This guide shows how to publish your PWA as an update to an existing app in the Microsoft Store. If you don't have an app in the Store yet, you should instead [publish a new app](/publish-new-app.md).
22 |
23 | ## Choose the app you want to update
24 |
25 | Login to [Windows Partner Center](https://partner.microsoft.com/dashboard), then go to `Windows & Xbox` -> `Overview`. Your existing apps will be listed:
26 |
27 |
28 |
29 | Click the name of the app you want to update, and you'll be taken to the app details page.
30 |
31 | ## Add a new submission
32 |
33 | On the app details page, you'll see your most recent app submission. Click `Update` to add a new submission:
34 |
35 |
36 |
37 | On the submission details page, choose `Packages`:
38 |
39 |
40 |
41 | On the packages screen, click `Browse your files`:
42 |
43 |
44 |
45 | When browsing for your files, **choose both package files**, `*.msixbundle` and `*.appxbundle`.
46 |
47 | > 💁🏾♂️ *Heads up*
48 | >
49 | > Once your packages finish uploading, you may see the following warning about full trust:
50 | > This warning can be safely ignored.
51 |
52 |
53 | > 💁♂️ *Other errors*
54 | >
55 | > If you're getting other errors when uploading your packages, see [fixing package errors](/package-errors.md).
56 |
57 | Once you upload both package files, you should see something like this, with both packages listed:
58 |
59 |
60 |
61 |
62 | > 💁🏽♀️ *Heads up*:
63 | >
64 | > Your classic app package has a lower version than the main app package. So if you packaged your PWA as version 2.0.0, the classic app package will be version 1.9.0. This way you can submit both packages as a single app.
65 |
66 | Lastly, in the platforms support list, choose `Windows 10 Desktop` and uncheck all other platforms:
67 |
68 |
69 |
70 |
71 | > 💁🏿♀️ *Heads up*
72 | >
73 | > While your PWA will run on Windows 10 desktop today, we expect Xbox support to land in 2021. 😎
74 |
75 | Click `Save` to save your packages and return to the submission details screen.
76 |
77 | ## Complete remaining options
78 |
79 | You should now see the submission status. Fill out any `in progress` or `incomplete` settings:
80 |
81 |
82 |
83 | Fill out the missing sections, then click `Submit to the Store` when finished.
84 |
85 | > 💁🏼♀️ *Heads up*
86 | >
87 | > In `Submission options`, you may receive a warning about full trust capability:
88 | > You can write, "Needed for PWA Hosted App model, created by pwabuilder.com"
89 |
90 | ## Need more help?
91 |
92 | If you're having trouble with your app store submission, be sure to read [fixing package errors](/package-errors.md).
93 |
94 | If you're still hitting issues, we're here to help. You can [open an issue](https://github.com/pwa-builder/pwabuilder/issues) and we'll help walk you through it.
--------------------------------------------------------------------------------
/src/docs/windows/update-existing-app/win10-desktop-only.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/update-existing-app/win10-desktop-only.png
--------------------------------------------------------------------------------
/src/docs/windows/what-is-classic-package/what-is-a-classic-package.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: What is a classic package
4 | excerpt: Why 2 different MSIX files?
5 | description: PWABuilder's Windows platform generates 2 versions of your app, know why
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: false
10 | image: docs/windows/windows-store-documentation/StoreLogo.png
11 | isDocumentation: true
12 | backUrl: '/docs'
13 | author:
14 | name: PWA Builder documentation
15 | tags:
16 | - docs
17 | - Documentation
18 | - Windows
19 | ---
20 |
21 | PWABuilder's Windows platform generates 2 versions of your app:
22 |
23 | - Modern package that works on newer versions of Windows.
24 | - Classic package that works on older versions of Windows, with fewer bells and whistles.
25 |
26 | ## Modern package
27 |
28 | The modern package, `{app name}.msixbundle`, uses the [Hosted App Model](https://blogs.windows.com/windowsdeveloper/2020/03/19/hosted-app-model/) to install your PWA as a Windows app hosted by Edge. This app works only on Windows version 10.0.19041, May 2020 Update and newer.
29 |
30 | ## Classic package
31 |
32 | The classic package, `{app name}.classic.appxbundle`, runs on older versions of Windows, versions prior to 10.0.19041, May 2020 Update. This version still uses the new Edge, but it doesn't rely on the Hosted App Model. Instead, it uses a bootstrapper app which instructs Edge to install and launch the PWA.
33 |
34 | The classic package still runs in the new Chromium-based Edge, but lacks deep integration with the OS.
35 |
36 | ## Versioning
37 |
38 | The modern package should have a version greater than the classic package. For example, if your modern package is version `2.0.0`, the classic package should be `1.9.0`.
39 |
40 | Be aware that your app version cannot begin with zero.
41 |
42 | Additionally, app version must contain 3 sections.
43 |
44 | - `0.5.2` - ❌ Invalid, versions cannot start with zero
45 | - `1.5.2.1` - ❌ Invalid, the 4th section is reserved for Store use
46 | - `1.5.2` - ✔ Valid
47 |
48 | ## Submitting your app to the Store
49 |
50 | When you submit your app to the Microsoft Store, you'll [upload both modern and classic app packages](https://github.com/pwa-builder/pwabuilder-windows-chromium-docs/blob/master/publish-new-app.md#add-packages). Users will be offered to download whichever version their OS can support.
--------------------------------------------------------------------------------
/src/docs/windows/windows-store-documentation/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/docs/windows/windows-store-documentation/StoreLogo.png
--------------------------------------------------------------------------------
/src/docs/windows/windows-store-documentation/windows-store-documentation.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Windows Platform
4 | url: /windows-store-documentation
5 | excerpt: Publish your PWA to the Microsoft Store
6 | description: Publish your PWA to the Microsoft Store
7 | date: 2021-06-24
8 | updatedDate: 2021-10-26
9 | trending: false
10 | featured: true
11 | recommended: true
12 | isDocumentation: true
13 | backUrl: '/docs'
14 | image: docs/windows/windows-store-documentation/StoreLogo.png
15 | author:
16 | name: PWA Builder documentation
17 | tags:
18 | - docs
19 | - Documentation
20 | - Windows
21 | ---
22 |
23 |
24 |
25 | Both the Microsoft Store and Windows itself natively supports PWAs as first-class apps.
26 |
27 | Follow these steps to get your PWA listed in the Microsoft Store:
28 |
29 | 1. Reserve an app name in the [Windows Partner Center](https://partner.microsoft.com/dashboard) as explained in this documentation [Publish your Progressive Web App to the Microsoft Store](https://docs.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/how-to/microsoft-store)
30 | 2. Create your Microsoft Store app package on [PWA Builder](https://www.pwabuilder.com)
31 | 3. Follow [the Next steps for getting your PWA into the Microsoft Store](/docs/next-steps-for-getting-your-pwa-into-the-microsoft-store/)
32 |
33 | ### Related documentation
34 |
35 | - [Publish a new app to the Microsoft Store](/docs/publish-a-new-app-to-the-microsoft-store/)
36 | - [Finding your Windows Publisher info](/docs/finding-your-windows-publisher-info/)
37 | - [Image recommendations for Windows PWA packages](/docs/image-recommendations-for-windows-pwa-packages/)
38 | - [Fixing common errors in Microsoft Store app submissions](/docs/fixing-common-errors-in-microsoft-store-app-submissions/)
39 | - [Update an existing app in the Store](/docs/update-an-existing-app-in-the-store/)
40 | - [What is a classic package](/docs/what-is-a-classic-package/)
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/globals/build.js:
--------------------------------------------------------------------------------
1 | require("dotenv").config()
2 |
3 | module.exports = {
4 | env: process.env.ELEVENTY_ENV,
5 | timestamp: new Date(),
6 | timezone: process.env.TIMEZONE || "UTC",
7 | url: process.env.URL || "http://localhost:8080",
8 | }
9 |
--------------------------------------------------------------------------------
/src/globals/helpers.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | /**
3 | * Returns back some attributes based on whether the
4 | * link is active or a parent of an active item
5 | *
6 | * @param {String} itemUrl The link in question
7 | * @param {String} pageUrl The page context
8 | * @returns {String} The attributes or empty
9 | */
10 | getLinkActiveState(itemUrl, pageUrl) {
11 | let response = '';
12 |
13 | if (itemUrl === pageUrl) {
14 | response = ' aria-current="page" class="activeTab subheaderA"';
15 | }
16 |
17 | if (itemUrl.length > 1 && pageUrl.indexOf(itemUrl) === 0) {
18 | response += ' data-state="active" class="activeTab subheaderA"';
19 | }
20 |
21 | if (itemUrl === "/" && pageUrl.indexOf("/posts") === 0) {
22 | response += ' data-state="active" class="activeTab subheaderA"';
23 | }
24 |
25 | if (response === '') {
26 | response += ' class="subheaderA"';
27 | }
28 |
29 | return response;
30 | }
31 | };
--------------------------------------------------------------------------------
/src/globals/navigation.json:
--------------------------------------------------------------------------------
1 | {
2 | "items": [
3 | {
4 | "text": "Blog",
5 | "url": "/"
6 | },
7 | {
8 | "text": "Documentation",
9 | "url": "/docs/"
10 | },
11 | {
12 | "text": "Demos",
13 | "url": "/demos/"
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/src/globals/site.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PWA Builder Blog",
3 | "excerpt": "Learn about the latest updates of PWA Builder and how to build great PWAs across platforms",
4 | "description": "PWA Builder Blog & Documentation site",
5 | "url": "https://blog.pwabuilder.com",
6 | "baseUrl": "/",
7 | "images": {
8 | "subHeader": "sub-header-background.png",
9 | "placeholder": "placeholder.png",
10 | "logo": "logo.svg"
11 | },
12 | "feed": {
13 | "filename": "feed.xml",
14 | "path": "/feed/feed.xml",
15 | "id": "https://example.com/"
16 | },
17 | "jsonfeed": {
18 | "filename": "feed.json",
19 | "path": "/feed/feed.json",
20 | "url": "https://example.com/feed/feed.json"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/includes/categories.njk:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Categories
4 |
5 |
6 | {% for tag in collections.tagList | filterTagList %}
7 |
8 | {% set tagUrl %}/tags/{{ tag | slug }}/{% endset %}
9 | {{ tag }}
10 |
60 |
61 |
62 |
113 |
--------------------------------------------------------------------------------
/src/includes/taglist.njk:
--------------------------------------------------------------------------------
1 | {% import "layouts/postcard.njk" as cardLayouts %}
2 |
3 |
4 | {{ cardLayouts.tag(posts)}}
5 |
--------------------------------------------------------------------------------
/src/includes/temp/docs.11tydata.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | eleventyComputed: {
3 | eleventyNavigation: {
4 | name: data => data.title,
5 | excerpt: data => data.excerpt,
6 | description: data => data.description,
7 | }
8 | }
9 | };
--------------------------------------------------------------------------------
/src/includes/temp/docs.json:
--------------------------------------------------------------------------------
1 | {
2 | "tags": ["docs"]
3 | }
4 |
--------------------------------------------------------------------------------
/src/index.njk:
--------------------------------------------------------------------------------
1 | ---
2 | pagination:
3 | data: collections.post
4 | size: 12
5 | alias: posts
6 | reverse: true
7 | permalink: "/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber + 1 }}/{% endif %}"
8 | image: blog-card.webp
9 | ---
10 |
11 | {% extends 'layouts/home.njk' %}
12 | {% block body %}
13 | {% include "posts.njk" %}
14 | {% endblock %}
--------------------------------------------------------------------------------
/src/posts/announcing-ios/ios-announcement.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-ios/ios-announcement.png
--------------------------------------------------------------------------------
/src/posts/announcing-ios/ios-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-ios/ios-options.png
--------------------------------------------------------------------------------
/src/posts/announcing-ios/ios-permitted-urls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-ios/ios-permitted-urls.png
--------------------------------------------------------------------------------
/src/posts/announcing-ios/ios-publish-section.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-ios/ios-publish-section.png
--------------------------------------------------------------------------------
/src/posts/announcing-ios/ios-splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-ios/ios-splash.png
--------------------------------------------------------------------------------
/src/posts/announcing-vscode/announcing-vscode.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing PWA Studio, the VS Code extension for building Progressive Web Apps!
4 | excerpt: The PWA Studio VSCode extension brings everything you need to build high quality PWAs, right to your VSCode!
5 | description: The PWA Studio VSCode extension brings everything you need to build high quality PWAs, right to your VSCode!
6 | date: 2022-02-01
7 | updatedDate: 2022-02-01
8 | trending: true
9 | featured: true
10 | image: posts/announcing-vscode/vscode-release-graphic.png
11 | isPost: true
12 | backUrl: '/'
13 | author:
14 | name: Justin Willis
15 | twitter: https://twitter.com/Justinwillis96
16 | title: Software Engineer
17 | tags:
18 | - post
19 | - PWA
20 | - Windows
21 | - Android
22 | - iOS
23 | ---
24 |
25 |
26 |
27 | Today, the PWABuilder project is excited to release a brand new VSCode Extension, the PWA Studio!
28 | The PWA Studio VSCode extension brings everything you need to build high quality PWAs, right to your VSCode. You can:
29 | - Start building a new PWA, with all the best practices, excellent developer experience and exceptional performance that you expect, in seconds using the PWABuilder pwa-starter.
30 | - Learn how to publish your app to the Web with Azure Static Web Apps
31 | - Add a Web Manifest and Service Worker to your existing web app
32 | - Package your PWA for the Microsoft Store, Google Play, and Apple App Store
33 | - Generate Icons for your PWA
34 | - Validate that your PWA is installable in the browser and is ready to publish to the app stores
35 | - Learn more about the features of the Web Manifest to enable new features in your PWA
36 | - Use our snippets to quickly and easily implement native features that can improve the User Experience of your PWA
37 | These features turn VSCode into the best development environment for Progressive Web Apps, ensuring you have tools for every step of your PWA development journey.
38 |
39 | ## Get Started
40 | First, you need to install the extension. Visit the [VSCode Marketplace](https://aka.ms/install-pwa-studio) to install.
41 | The quickest way to get started with the extension is by opening the PWABuilder panel. This can be done by clicking the PWABuilder icon on the left side of VSCode:
42 | 
43 |
44 | You should then see our three sections: Web Manifest, Service Worker, and your Store Ready Checklist. If all three views have the top item checked off, then your PWA is ready to go:
45 |
46 | 
47 |
48 | If you are missing one of the items, no problem! The extension will provide you with a button to generate the needed asset:
49 |
50 | 
51 |
52 | Finally, the extension also provides buttons at the bottom of VSCode to provide quick access to all of our features:
53 |
54 | 
55 |
56 | ## Build a new PWA with the PWA Studio
57 | Lets go through an example of what the extension is capable of! Today we are going to start building a brand new PWA in about 2 minutes with the extension and the [PWABuilder pwa-starter](https://aka.ms/pwa-starter). You will get:
58 | - A ready to go codebase that follows best practices from the start: No more spending time choosing which framework to use, which build system to use, which styling system to use etc. Just start building with the PWABuilder team’s recommended setup. Enjoy Web Components? We proudly use [Lit](https://lit.dev) for incredible performance, fast load times and a React-like developer experience.
59 | - A Service Worker setup using [Workbox](https://developers.google.com/web/tools/workbox/) that ties in with the Rollup powered build system. This ensures that your PWA always works offline.
60 | - A full featured Web Manifest, including Icons, with everything that you need to ensure your PWA can be installed from the browser AND is ready to publish to the app stores.
61 | - Everything needed to publish to [Azure Static Web Apps](https://azure.microsoft.com/services/app-service/static/)
62 |
63 | ### Steps
64 | 1) Open a new VSCode Window
65 | 2) Tap the PWABuilder Icon on the left side of VSCode
66 | 
67 |
68 | 3) Tap the `Start a new PWA` button in the bottom left corner
69 | 
70 |
71 | And that’s it! A new PWA will then open in its own VSCode window with all the dependencies installed and ready to start coding. Just run tap `Run` at the top of VSCode and then `Start Debugging` to start building your new PWA!
72 | 
73 |
74 | What kind of apps can you build with the extension and the starter? Anything! Check [our demos](https://github.com/pwa-builder/pwa-starter#sample-pwas-built-with-the-starter) for some awesome apps built using the starter. Build a new PWA with the extension and starter? Let us know at our [Github](https://github.com/pwa-builder/PWABuilder)
75 |
76 | This experience becomes even more awesome when you use the [Edge VSCode Extension](https://docs.microsoft.com/microsoft-edge/visual-studio-code/microsoft-edge-devtools-extension) to debug your PWA in VSCode!
77 |
78 | Convinced and ready to turn your VSCode into the best development environment for PWAs? [Go here]( https://marketplace.visualstudio.com/items?itemName=PWABuilder.pwa-studio) to install the extension and get started today! Running into issues? Have any ideas or suggestions? Feel free to open an issue on our [Github](https://github.com/pwa-builder/PWABuilder) . Also, looking for an open-source project to contribute to? Check out [this link](https://github.com/pwa-builder/PWABuilder/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted+%3Araising_hand%3A%22) to see all our “help wanted” bugs and features. Just reply to the issue and someone from the team will respond. Thanks for making PWABuilder awesome!
79 |
80 | You can also learn more at the [PWA Studio Documentation.](https://docs.pwabuilder.com/#/studio/quick-start)
81 |
--------------------------------------------------------------------------------
/src/posts/announcing-vscode/vscode-release-graphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/announcing-vscode/vscode-release-graphic.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/BringingChromiumEdgePWAsMicrosoftStore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/BringingChromiumEdgePWAsMicrosoftStore.jpg
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/analyzing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/analyzing.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/app_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/app_android.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/app_windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/app_windows.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/chromium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/chromium.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/devtools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/devtools.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/download.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/enter_url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/enter_url.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/inspect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/inspect.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/options.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/publish_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/publish_page.png
--------------------------------------------------------------------------------
/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/report_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/bringing-chromium-edge-pwas-to-the-microsoft-store/report_card.png
--------------------------------------------------------------------------------
/src/posts/introducing-the-brand-new-pwa-builder/LaunchBlogImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/introducing-the-brand-new-pwa-builder/LaunchBlogImage.jpg
--------------------------------------------------------------------------------
/src/posts/introducing-the-brand-new-pwa-builder/MicrosoftStorePWAs.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/introducing-the-brand-new-pwa-builder/MicrosoftStorePWAs.jpg
--------------------------------------------------------------------------------
/src/posts/introducing-the-brand-new-pwa-builder/ScreenshotNewPWABuilder001.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/introducing-the-brand-new-pwa-builder/ScreenshotNewPWABuilder001.jpg
--------------------------------------------------------------------------------
/src/posts/introducing-the-brand-new-pwa-builder/ScreenshotNewPWABuilder002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/introducing-the-brand-new-pwa-builder/ScreenshotNewPWABuilder002.jpg
--------------------------------------------------------------------------------
/src/posts/introducing-the-brand-new-pwa-builder/introducing-the-brand-new-pwa-builder.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Introducing the brand new PWA builder
4 | excerpt: A better PWA Builder, a better PWA Platform boosted by Microsoft Edge, a better OS to run your PWAs on.
5 | description: A better PWA Builder, a better PWA Platform boosted by Microsoft Edge, a better OS to run your PWAs on.
6 | date: 2021-06-24
7 | updatedDate: 2021-06-24
8 | trending: false
9 | featured: true
10 | image: posts/introducing-the-brand-new-pwa-builder/LaunchBlogImage.jpg
11 | isPost: true
12 | backUrl: '/'
13 | author:
14 | name: David Rousset
15 | twitter: https://twitter.com/davrous
16 | title: Program Manager APS W+D
17 | tags:
18 | - post
19 | - Chromium
20 | - Microsoft Edge
21 | - PWA
22 | - Microsoft Store
23 | ---
24 |
25 | We’re excited to launch v3 of PWA builder today - our open-source project that can help web developers like you build Progressive Web Apps (PWAs) and package them for app stores like the Microsoft Store on Windows in minutes!
26 |
27 | Since our initial launch many years ago, PWAs have become more powerful than ever. It has been an incredible journey so far, and we believe we’re just getting started. Every day we see more and more developers interested in evaluating their PWAs or publishing them to app stores. Over the years, we’ve received a ton of great feedback from our developer community, and we listened.
28 |
29 | With the brand new PWA builder, the core value we provide to web developers remains the same. We want to help them:
30 |
31 | - Create and distribute PWAs across multiple marketplaces with minimal cost and friction using our simple tool.
32 | - Eliminate the need to understand native code or local platform architecture to take advantage of distribution channels like app stores.
33 | - Understand what makes a quality PWA and steps they can take to improve the experience they offer to their users.
34 |
35 | While rethinking and redesigning the user experience, we rebuilt our front-end from scratch (using Web Components like lit-element, Rollup, Workbox, and TypeScript, as well as Fast Components) and improved our back-end API to be more stable & robust. Modernizing our architecture will allow us to launch new features more quickly and efficiently in the future.
36 |
37 | The result is a brand-new experience we’re introducing today to build quality PWAs and package them for app stores!
38 |
39 |
40 |
41 |
42 |
43 | ## PWAs and Windows – better together than ever before
44 | The newly launched Windows 11, Microsoft Edge, and the new Microsoft Store all bring exciting possibilities to developers building both native and web apps.
45 |
46 | **First**, Windows 11 puts Chromium powered PWAs front and center, integrating them at its core. Thanks to latest improvements shipped in Edge 91, Microsoft Store PWAs are supported on Windows 10 and Windows 11 with shortcuts,web share,web share target,badging,push notifications,dark/light theme sync with OS settings, & more.
47 |
48 | **Second**, we are glad to share that the technology built in Microsoft Edge and PWA Builder to package apps for the Microsoft Store is now available for all. There’s even more to come in the near future: Experimental features - Microsoft Edge Development such as URI Protocol Handling,URL Link Handling,Window Controls Overlay for Desktop Apps,Run on OS Login and File Handling. You can test them today using Origin Trials to create more integrated PWAs on Windows.
49 |
50 | **And finally**, by distributing your web app through the new Microsoft Store, you can get it in front of millions of users looking for new apps and experiences every day. Whether you want to provide an exceptional user experience to your existing users on the Windows platform, acquire new users for your PWA, or meet your business goals, the new PWA builder can help get you there.
51 |
52 | ## Come join the growing community of PWAs on Windows
53 |
54 | 
55 |
56 | We are excited to see a growing number of PWAs in the Microsoft Store, like ClipChamp,Facebook,FitOn,Instagram,Twitter and many more. There’s never been a better time to bring your PWA to the Microsoft store, and we invite you to join us!
57 |
58 | To start, simply add the URL to your PWA here. Based on features your PWA supports, you will be assigned a score that indicates the quality of your PWA. If you want to improve your score so your PWA integrates more seamlessly with the Windows platform, you can see our recommendations on how to do so. You can also see how your PWA compares to others tested on the platform.
59 |
60 | 
61 |
62 | Once you have a valid web manifest and minimum requirements met, you can use our package to build your PWA, and submit for distribution on the Microsoft Store or other popular app stores.
63 |
64 | We're continuing to make improvements to PWA builder and welcome your feedback. Stay tuned for our upcoming news by following us on Twitter or our new blog!
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/categories.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/categories.png
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/install-collage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/install-collage.png
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/manifest-previewer.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Visualizing your web manifest
4 | excerpt: Building your progressive web app and wondering what's the purpose of this json file?
5 | description: A crucial part of building a PWA is creating its manifest.json file. However, this is not always an easy task... Besides a name and icons, what else should you include? Why do you need a background color if you already have that in your CSS stylesheets? Which are the different display modes, and which one should you use?
6 | date: 2021-08-17
7 | trending: false
8 | featured: true
9 | image: posts/manifest-previewer/name-windows.png
10 | isPost: true
11 | backUrl: '/'
12 | author:
13 | name: Maria José Solano
14 | twitter: https://www.linkedin.com/in/mariasolano151822
15 | title: Software engineering intern
16 | tags:
17 | - post
18 | - PWA
19 | ---
20 |
21 | We have all been there. Staring at this mysterious `json` object that seems so important for a progressive web app. Besides a name and icons, what else should you include? Why do you need a background color if you already have that in your CSS stylesheets? Which are the different display modes, and which one should you use?
22 |
23 | During the last 3 months, I've been working on a project that addresses these questions: the PWABuilder Manifest Previewer. This is a web component that takes your web manifest and shows you what the different manifest values look like on different operating systems. As an example, here's the manifest visualizer showing the name attribute appears on the Windows start menu:
24 |
25 |
26 | And this is by just knowing the name and icon defined on the manifest! You can also experience the same visualization on Android and iOS:
27 |
28 |
29 | Similarly, the component can also help you picture what your splash screen will look like, since this loading display is constructed by referring to the name, icons, and background indicated on the manifest. But wait, why do you need to specify a background color again if you have your CSS stylesheets for that? This is because when the splash screen is displayed to the user, your application (and hence styles) is still loading. With help of the web manifest, this loading state is smoother and customized to your PWA.
30 |
31 |
32 | Besides understanding the impact of changing values in the web manifest, you can also get an idea of what the experience is for users installing your application. Attributes like the name, site url, icons and screenshots are used to describe your application in installation dialogs:
33 |
34 |
35 | The manifest previewer can also help you visualize your application's store listing, given that with your web manifest you can assign categories to your PWA, include screenshots that show a peak of the user experience, and give details about your app via the `description` attribute. Here's the visualization in the new Microsoft Store:
36 |
37 |
38 | This web component also showcases some of the most modern features of PWAs, like making your app a web share target so that users can share media data to your application directly from the platform's share menu:
39 |
40 |
41 | And that's not all! This web component also includes previews for the `short_name`, `display`, `theme_color`, `shortcuts`, and many other manifest attributes. You can see them all now on the PWABuilder site, since the team is the first proud user of this component, and it is using it to help their users have a better experience when getting their applications ready to be published to the Microsoft store. Currently the team is only enabling the preview on Windows, but the Android and iOS will be added in the near future.
42 |
43 | You can also integrate the manifest visualizer to your own application, since this component is a standalone tool and can be downloaded from `npm`. To learn more about how to use it, check out the documentation and customize it according to your needs, from using your own colors to using the explanation messages that you desire.
44 |
45 | Before I wrap up, I will take a brief detour and get a bit sentimental: Thanks to everyone in the PWABuilder team. You’ve made my internship this summer amazing, and I truly admire your passion and dedication for what you do. More than builders, you’re creators, enhancers, and innovators. Keep doing what you’re doing.
46 |
47 | And that’s all for today fellow PWA builders. I hope that this post fulfilled its goal and you’re now excited and eager to experiment with what you can do with your manifest.json file. Fortunately you don’t need to read long and boring documentation, you can visualize it with the manifest previewer web component!
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/name-collage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/name-collage.png
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/name-windows.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/name-windows.png
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/share-target.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/share-target.png
--------------------------------------------------------------------------------
/src/posts/manifest-previewer/splashscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pwa-builder/pwabuilder-blog/4de115a3676486b5d8ab732ac3036c6939d55ea7/src/posts/manifest-previewer/splashscreen.png
--------------------------------------------------------------------------------
/src/posts/microsoft-and-google-team-up.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Microsoft and Google team up to make PWAs better in the Play Store
4 | excerpt: We’re glad to announce a new collaboration between Microsoft and Google for the benefit of the web developer community.
5 | description: description
6 | date: 2020-07-09
7 | updatedDate: 2020-07-09
8 | trending: false
9 | featured: true
10 | image: microsoft-google.png
11 | isPost: true
12 | backUrl: '/'
13 | author:
14 | name: Judah Gabriel Himango
15 | twitter: https://twitter.com/JudahGabriel
16 | title: Software Engineer APS W+D
17 | tags:
18 | - post
19 | - Microsoft
20 | - Google
21 | - PlayStore
22 | ---
23 |
24 | 
25 | Web shortcuts on Android — now available to PWA developers through PWABuilder
26 |
27 | We’re glad to announce a new collaboration between Microsoft and Google for the benefit of the web developer community. Microsoft’s [PWABuilder](https://pwabuilder.com) and Google’s [Bubblewrap](https://github.com/GoogleChromeLabs/bubblewrap) are now working together to help developers publish PWAs in the Google Play Store.
28 |
29 | [PWABuilder.com](https://pwabuilder.com) is Microsoft’s open source developer tool that helps you build high quality PWAs and publish them in app stores.
30 |
31 | Bubblewrap is Google’s command line utility and library to generate and sign Google Play Store packages from Progressive Web Apps.
32 |
33 | Earlier this year we started working together with Google to make PWABuilder utilize Bubblewrap under the hood. Today, **we’re announcing two great new features for PWA developers borne out of our collaboration:**
34 |
35 | 1. **Web shortcuts support:** PWAs packaged for Google Play via PWABuilder will now support the new [web shortcuts standard](https://w3c.github.io/manifest/#shortcuts-member.
36 | 2. **Advanced Android features & customization:** PWABuilder now supports the full range of trusted web activity options that makes your PWA shine on Android devices. From PWABuilder, you can customize the appearance of the Android status bar and nav bar in your PWA, customize your Android splash screen, change your launcher name, use an existing signing key, utilize deeper push notification support, configure your package’s ID and versioning, fallback behavior and more.
37 |
38 | All of this was a result of the collaboration between Google and Microsoft, with
39 | your PWAs reaping the benefit. More details below.
40 |
41 | ## Web Shortcuts Support
42 |
43 | Shortcuts are a [new web standard](https://w3c.github.io/manifest/#shortcuts-member) that enables installed PWAs to have app shortcuts, a contextual list of common actions that users can quickly jump to:
44 |
45 | 
46 | Twitter is using web shortcuts to enable quick actions like New Tweet, Notifications, DMs. This feature is now available in Edge Canary and Chrome Canary.
47 |
48 | Web shortcuts integrate into the operating system — such as Windows’ task bar and start menu, or Android’s home screen— enabling users to quickly access your app’s core functionality.
49 |
50 | **Today we’re pleased to announce support for shortcuts in PWABuilder**. Thanks to our collaboration with Google’s Bubblewrap, PWAs you package for the Google Play Store through pwabuilder.com will now receive full support for shortcuts. 😎
51 |
52 | The support happens automatically; no extra work required. [Shortcuts you define in your web app manifest](https://w3c.github.io/manifest/#shortcuts-member) will work in your Google Play Store APK package as one might expect them to. As users discover and install your PWA in the Google Play Store, they’ll be able to easily re-engage with your app through web shortcuts.
53 |
54 | To try it out, go to pwabuilder.com and put in the URL to a PWA with shortcuts, such as [https://sadchonks.com](https://sadchonks.com):
55 |
56 | 
57 |
58 | Click start to analyze the URL and then click “Build My PWA”:
59 |
60 | 
61 |
62 | You’re asked which app stores to publish in. Choose Android to package for the Google Play Store:
63 |
64 | 
65 |
66 | 
67 |
68 | This will generate an APK package that can be uploaded to the Google Play Store. And when it’s installed on Android, your app shortcuts will just work. For example, you can long-press on your app’s tile to see the web shortcuts:
69 |
70 | 
71 | Web shortcuts working on Android in a PWA published to the Google Play Store
72 |
73 | You can read up more about your PWA’s web shortcuts on Android over at the [shortcuts with trusted web activities explainer](https://web.dev/app-shortcuts/#trusted-web-activity-support).
74 |
75 | ## **Android Features & Customization**
76 |
77 | When we rolled out our initial collaborative work with Google’s Bubblewrap this spring, PWABuilder didn’t have a way to customize the Android package it generated. While this was fine for some basic scenarios, like publishing to the Google Play Store for the first time, it fell short in other ways.
78 |
79 | To address this, we’ve updated PWABuilder to allow for full customization of your Android app package:
80 |
81 | 
82 | PWABuilder Android options. When you package your PWA for Android, we give you a
83 | bunch of ways to customize the appearance and functionality of your Android app
84 |
85 | With this new functionality, you can customize your PWA for Android:
86 |
87 | - **Package ID:** The Android identifier unique to your app
88 | - **App name:** The full name of your app. We prepopulate this with the [app name](https://w3c.github.io/manifest/#name-member) from your PWA’s app manifest.
89 | - **Launcher name**: The name of your app in the Android launcher. This is typically the same as app name, or a shortened version of it. We prepopulate this with [short_name](https://w3c.github.io/manifest/#short_name-member) from your PWA’s app manifest.
90 | - **App version**: This is the version string displayed to end users, e.g. “1.0.0.0”
91 | - **App version code**: This is an integer used as a private, internal version of your app.
92 | - **Host, Start URL, Manifest URL**: The URLs used to launch your PWA in the Android app. We prepopulate these for you from your app manifest.
93 | - **Status bar color, Nav bar color**: The color of the Android status bar and navigation bar in your PWA. You can also hide these bars by setting Display to
94 | Fullscreen. We prepopulate this using colors from your app manifest.
95 | - **Nav bar color:** Same as above, but for the Android navigation bar. Also can be hidden by setting Display to Fullscreen.
96 | - **Splash screen color:** The background color of the splash screen that will be used when creating your Android app. We prepopulate this with the theme color
97 | specified in your app manifest.
98 | - **Splash screen fade out time:** How long to fade out the splash screen in milliseconds. We default to 300ms.
99 | - **Icon URL**: URLs for the icon to use for your app. We recommend a 512x512 icon.
100 | - **Maskable icon URL**: Optional. The icon to use on Android devices that show rounded corner icons. Typically, this icon should have some padding around the
101 | icon’s content, enabling the icon to be safely rounded without losing fidelity. We populate this with a [purpose: maskable](https://w3c.github.io/manifest/#purpose-member icon from your app manifest. If one can’t be found, we use the icon. For more information about
102 | maskable icons on Android, see [https://web.dev/maskable-icon](https://web.dev/maskable-icon/).
103 | - **Monochrome icon URL**: Optional. The monochrome icon to use for your app. Android can use this to fill your icon with a certain color based on user preferences, theme or color mode, or high contrast configurations. We populate this with a [purpose: monochrome](https://w3c.github.io/manifest/#purpose-member) icon from your app manifest.
104 | - **Fallback behavior:** When the full TWA experience isn’t available, how should your app proceed, whether with a web view or [Chrome’s Custom Tabs feature](https://developer.chrome.com/multidevice/android/customtabs). We default to the latter.
105 | - **Display mode:** **— Standalone** means your PWA takes up all the area except Android status bar and Navigation bar. **— Fullscreen** hide both
106 | bars. This is intended for immersive experiences likes games and media playback.
107 | - **Notifications**: If enabled, your PWA will use [Android Notification Delegation](https://github.com/GoogleChromeLabs/svgomg-twa/issues/60) for push
108 | notifications, meaning your installed PWA can send push notifications without browser permission prompts. You should enable this if your PWA sends push
109 | notifications.
110 | - **Signing key:** How the APK app package will be digitally signed: **— None:** your app package won’t be signed. Unsigned packages will be signed by
111 | the Google Play Store. This is Google’s recommendation, and our default. **— New:** PWABuilder will create a new signing key for you. The signing key will
112 | be included in your zip download. Choosing this will let you fill in details like password, alias, and more. **— Mine:** Upload an existing .keystore
113 | file to use for signing the app package. This should be used if you are updating an existing app in the Store. You’ll be prompted to specify your existing key
114 | passwords and alias.
115 |
116 | Whew! As you can see, you can customize nearly every aspect of your PWA Android app package.
117 |
118 | To access this functionality, put a URL into pwabuilder.com, then: **Build My PWA -> Android -> Options**
119 |
120 | 
121 | Choosing Options here will open the Android package options discussed above
122 |
123 | ## Final thoughts
124 |
125 | Both web shortcuts and Android package customization are possible thanks to the collaboration between Google and Microsoft. We are working together to make the
126 | web a more capable app platform.
127 |
128 | In addition to the above, we’re also collaborating with Google on [Project Fugu](https://docs.google.com/spreadsheets/d/1de0ZYDOcafNXXwMcg4EZhT0346QM-QFvZfoD8ZffHeA/edit#gid=557099940) to incubate new web platform features, with PWAs front and center, toward the goal of standardization so everyone benefits. We’ve highlighted some Project Fugu capabilities in our [web platform demo showcase](https://components.pwabuilder.com/).
129 |
130 | We hope you enjoy these capabilities in PWABuilder! Please give it a try over at [pwabuilder.com](https://pwabuilder.com).
131 |
--------------------------------------------------------------------------------
/src/posts/posts.11tydata.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | eleventyComputed: {
3 | eleventyNavigation: {
4 | name: data => data.title,
5 | excerpt: data => data.excerpt,
6 | description: data => data.description,
7 | }
8 | }
9 | };
--------------------------------------------------------------------------------
/src/posts/posts.json:
--------------------------------------------------------------------------------
1 | {
2 | "tags": ["posts"]
3 | }
4 |
--------------------------------------------------------------------------------
/src/posts/pwa-inking.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: PWA Inking Enable 2D inking for the web!
4 | excerpt: There are many ways to enable inking on the web, but they all involve their challenges to set up. Do you need to support 2D drawing or 3D rendering?
5 | description: There are many ways to enable inking on the web, but they all involve their challenges to set up. Do you need to support 2D drawing or 3D rendering? How will you minimize rendering latency? How should the drawing respond to browser events like window resizing, tab switching, or zooming? What kinds of input do you want to handle? What do you want to do with a finished drawing?
6 | date: 2021-07-15
7 | updatedDate: 2021-07-15
8 | trending: true
9 | featured: false
10 | image: pwa-linking.png
11 | author:
12 | name: Killian McCoy
13 | tags:
14 | - post
15 | - Inking
16 | - Microsoft Edge
17 | - Windows
18 | ---
19 |
20 |
21 | There are many ways to enable inking on the web, but they all involve their challenges to set up. Do you need to support 2D drawing or 3D rendering? How will you minimize rendering latency? How should the drawing respond to browser events like window resizing, tab switching, or zooming? What kinds of input do you want to handle? What do you want to do with a finished drawing?
22 |
23 | The [PWABuilder](https://pwabuilder.com/) team built a solution that enables a basic inking experience for the modern web and addresses the above considerations. We are excited to announce the 1.0 version of [the pwa-inking component](https://github.com/pwa-builder/pwa-inking) is now available!
24 |
25 | ## pwa-inking is a web component that
26 |
27 | - Uses a desynchronized 2D HTML canvas.
28 | - Optimizes canvas redraws through [the requestAnimationFrame() api](https://docs.w3cub.com/dom/window/requestanimationframe/) and [the requestIdleCallback() api](https://w3c.github.io/requestidlecallback/) functions.
29 | - Resizes and refocuses with the browser.
30 | - Supports pointer (mouse, touch, and pen) events.
31 | - Offers 4 inking experiences: pen, pencil, highlighter, and eraser.
32 | - Allows you to copy your drawing to the clipboard and save it as a png through the native device file system
33 |
34 | In other words, pwa-inking can let users draw a picture as quickly as they can doodle it with a finger and then save it to their phone camera roll! And developer can make it happen by adding only a few lines of code to their existing web apps
35 |
36 | ## Why would I use this?
37 |
38 | - **modern** using the latest web APIs to keep your web apps fast while handling and rendering user input: touch, pen, and mouse friendly!
39 | - **ready to go** wherever you want to use it in your web apps, right on your homepage or nested in another web component.
40 | - **customizable** through CSS shadow parts and you can set any configuration of the included tools you want to use.
41 | - **free to use and open-source** because why not!
42 |
43 | ## Getting Started
44 |
45 | ### Install it
46 |
47 | You can install this component through npm or a script tag. If you are already using npm, we recommend installing the pwa-inking npm package. Otherwise, the script tag works fine for simple use cases.
48 |
49 | ### Script tag
50 |
51 | 1. Add this script tag in the head of your index.html
52 |
53 | ### NPM
54 |
55 | 1. Run this command in your project directory:
56 |
57 | ```js
58 | npm install @pwabuilder/pwa-inking
59 | ```
60 |
61 | 2. Add this import statement to your script file:
62 |
63 | ```js
64 | import @pwabuilder/pwa-inking
65 | ```
66 |
67 | ### Pick your starter
68 |
69 | This component can be used with or without an included toolbar:
70 |
71 | ### Canvas with toolbar
72 |
73 | 
74 |
75 | A screenshot of the pwa-inking component with the default toolbar.
76 |
77 | The default and recommended experience is to add an inking-component with a nested inking-toolbar to get the most functionality for the least amount of code:
78 |
79 | [Try the component with the default toolbar live!](https://pwa-inking.glitch.me/) | [See the code for the component with the default toolbar](https://glitch.com/edit/#!/pwa-inking?path=index.html%3A1%3A0)
80 |
81 | ### Canvas without toolbar
82 |
83 | 
84 |
85 | A screenshot of the pwa-inking component without a toolbar.
86 |
87 | Some advanced users might want to implement their own toolbar or control the canvas purely through JavaScript, so the inking-canvas can also be used alone and controlled via [the components exposed API](https://github.com/pwa-builder/pwa-inking/#inking-canvas):
88 |
89 | [Try the component without a toolbar live!](https://pwa-inking-canvas-only.glitch.me/) | [See the code for the component without a toolbar](https://glitch.com/edit/#!/pwa-inking-canvas-only?path=index.html%3A20%3A41)
90 |
91 | ## Customize it
92 |
93 | ### Pick your tools
94 |
95 | 
96 |
97 | A screenshot of pwa-inking with a custom toolbar positioned in the bottom right corner.
98 |
99 | Only want some of the tools? You can specify the toolbar contents and even change its position and orientation on the canvas:
100 |
101 | [See the component live with a custom positioned toolbar](https://pwa-inking-customized-toolbar.glitch.me/) | [See the code for the component with a custom positioned toolbar](https://glitch.com/edit/#!/pwa-inking-customized-toolbar?path=index.html%3A25%3A55)
102 |
103 | ### Modify the CSS
104 |
105 | 
106 |
107 | A screenshot of pwa-inking with customized styles on the toolbar and the canvas.
108 |
109 | The canvas and the toolbar tool styles are completely customizable through [the CSS shadow parts feature in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/::part):
110 |
111 | [See the component fully customized live](https://pwa-inking-styling-samples.glitch.me/) | [See the code for fully customizing the component](https://glitch.com/edit/#!/pwa-inking-styling-samples?path=index.html%3A29%3A20)
112 |
113 | ## Limitations
114 |
115 | At the time of this release, browsers do not fully support features that impact the inking experience.
116 |
117 | ### Pointer event properties
118 |
119 | Some [pointer event properties](https://w3c.github.io/pointerevents/#pointerevent-interface) that could be used to influence stroke behavior are available today but do not yet report meaningful data. These include:
120 |
121 | - tangentialPressure
122 | - tiltX
123 | - tiltY
124 | - twist
125 |
126 | The pointer event properties utilized in this release to influence stroke size are _width_ and _pressure_.
127 |
128 | ### Low latency canvas
129 |
130 | The 2D canvas contexts of this web component rely on the availability of [the desynchronized attribute](https://developers.google.com/web/updates/2019/05/desynchronized) to support low latency.
131 |
132 | If a browser does not recognize this attribute, then the canvas contexts are established without it.
133 |
134 | A [Chromium bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1085015#c38) related to image extraction of the low latency canvas is preventing this web component copy & save features from working on impacted platforms. The fix has been applied the Chromium source code, but many Chromium-based browsers (including the stable versions of Edge and Chrome) have not received it yet. We have a [GitHub issue](https://github.com/pwa-builder/pwa-inking/issues/31) tracking this.
135 |
136 | ### requestIdleCallback()
137 |
138 | The ability to process inking component events in a way that yields to other activity on the main thread is made possible through [the requestIdleCallback() function](https://w3c.github.io/requestidlecallback/), but it is not widely supported across browsers yet.
139 |
140 | If a browser does not support this API, the impacted inking component calls are run instead as [IIFE (immediately invoked function expressions)](https://developer.mozilla.org/en-US/docs/Glossary/IIFE).
141 |
142 | ### Clipboard API
143 |
144 | The canvas state is copied as a png image to the browser clipboard through [the Clipboard API](https://w3c.github.io/clipboard-apis/).
145 |
146 | If a browser does not support _navigator.clipboard_ or _ClipboardItem_, then a failure toast (and console error message if you clone and run the source code locally) will appear when a user clicks the copy button.
147 |
148 | ## What next
149 |
150 | We are still planning our roadmap and we would love to hear from you! Let the PWABuilder team know what you think of this version and what you think should come next.
151 |
152 | Find us on [our Twitter (@pwabuilder)](https://twitter.com/pwabuilder) and engage with us on [our GitHub repo](https://github.com/pwa-builder/).
153 |
154 | Thanks for reading!
155 |
156 | ```js
157 | module.exports = {
158 | eleventyComputed: {
159 | eleventyNavigation: {
160 | name: (data) => data.title,
161 | excerpt: (data) => data.excerpt,
162 | description: (data) => data.description,
163 | },
164 | },
165 | }
166 | ```
167 |
--------------------------------------------------------------------------------
/src/posts/pwabuiderv3-announcement.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: PWA Builder v3 a brand-new experience to build even better PWAs
4 | excerpt: A better PWA Builder, a better PWA Platform boosted by Microsoft Edge, a better OS to run your PWAs on.
5 | description: A better PWA Builder, a better PWA Platform boosted by Microsoft Edge, a better OS to run your PWAs on.
6 | date: 2020-06-24
7 | updatedDate: 2020-06-24
8 | trending: false
9 | featured: false
10 | image: posts/bringing-chromium-edge-pwas-to-the-microsoft-store/chromium.png
11 | isPost: true
12 | draft: true
13 | backUrl: '/'
14 | author:
15 | name: David Rousset
16 | twitter: https://twitter.com/davrous
17 | title: Program Manager APS W+D
18 | tags:
19 | - post
20 | - Chromium
21 | - Microsoft Edge
22 | - PWA
23 | - Microsoft Store
24 | ---
25 |
26 | **To be published soon**
--------------------------------------------------------------------------------
/src/rss.njk:
--------------------------------------------------------------------------------
1 | ---json
2 | {
3 | "permalink": "feed.xml",
4 | "eleventyExcludeFromCollections": true,
5 | "metadata": {
6 | "title": "PWABuilder Blog",
7 | "subtitle": "News, updates, and articles from Microsoft's PWABuilder",
8 | "url": "https://blog.pwabuilder.com/",
9 | "feedUrl": "https://blog.pwabuilder.com/feed.xml",
10 | "author": {
11 | "name": "PWABuilder team",
12 | "email": "nikolame@microsoft.com"
13 | }
14 | }
15 | }
16 | ---
17 |
18 |
19 | {{ metadata.title }}
20 | {{ metadata.subtitle }}
21 |
22 |
23 | {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}
24 | {{ metadata.url }}
25 |
26 | {{ metadata.author.name }}
27 | {{ metadata.author.email }}
28 |
29 | {%- for post in collections.posts %}
30 | {% set absolutePostUrl %}{{ post.url | url | absoluteUrl(metadata.url) }}{% endset %}
31 |
32 | {{ post.data.title }}
33 |
34 | {{ post.date | dateToRfc3339 }}
35 | {{ absolutePostUrl }}
36 | {{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}
37 |
38 | {%- endfor %}
39 |
--------------------------------------------------------------------------------
/src/scripts/copy.js:
--------------------------------------------------------------------------------
1 | // Adapted from https://codepen.io/wilbo/pen/xRVLOj by Wilbert Schepenaar.
2 | // @ts-check
3 | import ClipboardJS from "clipboard"
4 |
5 | const handleCodeCopying = () => {
6 | const preTags = document.querySelectorAll("pre")
7 | const isPrismClass = (preTag) =>
8 | preTag.className.substring(0, 8) === "language"
9 | const copy = `