diff --git a/docz/docs/03-demos/02-frontend/05-svelte.md b/docz/docs/03-demos/02-frontend/05-svelte.md
index f5bd106..e59dbd8 100644
--- a/docz/docs/03-demos/02-frontend/05-svelte.md
+++ b/docz/docs/03-demos/02-frontend/05-svelte.md
@@ -25,7 +25,7 @@ models and data flow strategies.
This demo focuses on Svelte concepts. Other demos cover general deployments:
- [Static Site Generation powered by SvelteKit](/docs/demos/static/svelte)
-- [iOS applications powered by CapacitorJS](/docs/demos/mobile/capacitor)
+- [iOS and Android applications powered by CapacitorJS](/docs/demos/mobile/capacitor)
- [Desktop application powered by Wails](/docs/demos/desktop/wails)
:::
diff --git a/docz/docs/03-demos/17-mobile/01-reactnative.md b/docz/docs/03-demos/17-mobile/01-reactnative.md
index c8aa3b9..130f631 100644
--- a/docz/docs/03-demos/17-mobile/01-reactnative.md
+++ b/docz/docs/03-demos/17-mobile/01-reactnative.md
@@ -222,6 +222,13 @@ const wb = XLSX.read(ab);
This demo was tested in the following environments:
+**Real Devices**
+
+| OS | Device | RN | Date |
+|:-----------|:------------------|:---------|:-----------|
+| iOS 15.1 | iPhone 12 Pro Max | `0.73.6` | 2024-03-13 |
+| Android 29 | NVIDIA Shield | `0.73.6` | 2024-03-13 |
+
**Simulators**
| OS | Device | RN | Dev Platform | Date |
@@ -231,13 +238,6 @@ This demo was tested in the following environments:
| Android 34 | Pixel 3a | `0.73.5` | `win10-x64` | 2024-03-05 |
| Android 34 | Pixel 3a | `0.73.7` | `linux-x64` | 2024-04-29 |
-**Real Devices**
-
-| OS | Device | RN | Date |
-|:-----------|:------------------|:---------|:-----------|
-| iOS 15.1 | iPhone 12 Pro Max | `0.73.6` | 2024-03-13 |
-| Android 29 | NVIDIA Shield | `0.73.6` | 2024-03-13 |
-
:::
0) Install React Native dependencies
@@ -1004,6 +1004,13 @@ try {
This demo was tested in the following environments:
+**Real Devices**
+
+| OS | Device | RN | Date |
+|:-----------|:------------------|:---------|:-----------|
+| iOS 15.5 | iPhone 13 Pro Max | `0.73.6` | 2024-03-31 |
+| Android 29 | NVIDIA Shield | `0.73.6` | 2024-03-31 |
+
**Simulators**
| OS | Device | RN | Dev Platform | Date |
@@ -1013,13 +1020,6 @@ This demo was tested in the following environments:
| Android 34 | Pixel 3a | `0.73.6` | `win10-x64` | 2024-03-31 |
| Android 34 | Pixel 3a | `0.73.6` | `linux-x64` | 2024-03-31 |
-**Real Devices**
-
-| OS | Device | RN | Date |
-|:-----------|:------------------|:---------|:-----------|
-| iOS 15.5 | iPhone 13 Pro Max | `0.73.6` | 2024-03-31 |
-| Android 29 | NVIDIA Shield | `0.73.6` | 2024-03-31 |
-
:::
:::danger pass
diff --git a/docz/docs/03-demos/17-mobile/02-nativescript.md b/docz/docs/03-demos/17-mobile/02-nativescript.md
index 83831f7..a4e40ee 100644
--- a/docz/docs/03-demos/17-mobile/02-nativescript.md
+++ b/docz/docs/03-demos/17-mobile/02-nativescript.md
@@ -52,6 +52,13 @@ Angular and TypeScript is assumed.
This demo was tested in the following environments:
+**Real Devices**
+
+| OS | Device | NS | Date |
+|:-----------|:--------------------|:---------|:-----------|
+| Android 30 | NVIDIA Shield | `8.6.5` | 2024-04-07 |
+| iOS 15.1 | iPad Pro | `8.6.1` | 2023-12-04 |
+
**Simulators**
| OS | Device | NS | Dev Platform | Date |
@@ -60,13 +67,6 @@ This demo was tested in the following environments:
| iOS 17.0.1 | iPhone SE (3rd gen) | `8.6.1` | `darwin-x64` | 2023-12-04 |
| Android 34 | Pixel 3a | `8.6.5` | `win10-x64` | 2024-04-07 |
-**Real Devices**
-
-| OS | Device | NS | Date |
-|:-----------|:--------------------|:---------|:-----------|
-| Android 30 | NVIDIA Shield | `8.6.5` | 2024-04-07 |
-| iOS 15.1 | iPad Pro | `8.6.1` | 2023-12-04 |
-
:::
:::danger Telemetry
diff --git a/docz/docs/03-demos/17-mobile/04-ionic.md b/docz/docs/03-demos/17-mobile/04-ionic.md
index 533f5cf..9b24977 100644
--- a/docz/docs/03-demos/17-mobile/04-ionic.md
+++ b/docz/docs/03-demos/17-mobile/04-ionic.md
@@ -49,12 +49,21 @@ The [CapacitorJS demo](/docs/demos/mobile/capacitor) covers CapacitorJS apps.
This demo was tested in the following environments:
-**Simulators**
+**Real Devices**
| OS | Device | Config | Date |
|:-----------|:--------------------|:-------|:-----------|
-| Android 34 | Pixel 3a | A | 2023-12-04 |
-| iOS 17.0.1 | iPhone SE (3rd gen) | A | 2023-12-04 |
+| Android 30 | NVIDIA Shield | B | 2024-05-30 |
+| iOS 15.1 | iPad Pro | B | 2024-05-30 |
+
+**Simulators**
+
+| OS | Device | Config | Dev Platform | Date |
+|:-----------|:--------------------|:-------|:-------------|:-----------|
+| Android 34 | Pixel 3a | A | `darwin-x64` | 2023-12-04 |
+| iOS 17.0.1 | iPhone SE (3rd gen) | A | `darwin-x64` | 2023-12-04 |
+| Android 34 | Pixel 3a | B | `darwin-arm` | 2024-05-30 |
+| iOS 17.5 | iPhone SE (3rd gen) | B | `darwin-arm` | 2024-05-30 |
Configurations (click to show)
@@ -65,6 +74,12 @@ Configuration A:
- Cordova: `cordova-lib@12.0.1`, `android 12.0.1, ios 7.0.1`
- File Integration: `@awesome-cordova-plugins/file` version `6.4.0`
+Configuration B:
+
+- Ionic: `@ionic/angular 8.2.0`, `@ionic/angular-toolkit 11.0.1`
+- Cordova: `cordova-lib@12.0.1`, `android 13.0.0, ios 7.1.0`
+- File Integration: `@awesome-cordova-plugins/file` version `6.7.0`
+
Installation Notes (click to show)
+
+Ionic requires Java 17.
+
+
iOS | @@ -32,20 +40,22 @@ The "Complete Example" creates an app that looks like the screenshots below: This demo was tested in the following environments: -**Simulators** - -| OS | Device | CapacitorJS + FS | Dev Platform | Date | -|:-----------|:--------------------|:------------------|:-------------|:-----------| -| Android 34 | Pixel 3a | `5.5.1` / `5.1.4` | `darwin-x64` | 2023-12-04 | -| iOS 17.0.1 | iPhone 15 Pro Max | `5.5.1` / `5.1.4` | `darwin-x64` | 2023-12-04 | -| Android 34 | Pixel 3a | `6.0.0` / `6.0.0` | `win10-x64` | 2024-05-28 | - **Real Devices** | OS | Device | CapacitorJS + FS | Date | |:-----------|:--------------------|:------------------|:-----------| -| Android 29 | NVIDIA Shield | `5.5.1` / `5.1.4` | 2023-12-04 | -| iOS 15.1 | iPad Pro | `5.5.1` / `5.1.4` | 2023-12-04 | +| Android 30 | NVIDIA Shield | `6.0.0` / `6.0.0` | 2024-06-02 | +| iOS 15.1 | iPad Pro | `6.0.0` / `6.0.0` | 2024-06-02 | + +**Simulators** + +| OS | Device | CapacitorJS + FS | Dev Platform | Date | +|:-----------|:--------------------|:------------------|:-------------|:-----------| +| Android 34 | Pixel 3a | `6.0.0` / `6.0.0` | `darwin-x64` | 2024-06-02 | +| iOS 17.5 | iPhone 15 Pro Max | `6.0.0` / `6.0.0` | `darwin-x64` | 2024-06-02 | +| Android 34 | Pixel 3a | `6.0.0` / `6.0.0` | `darwin-arm` | 2024-06-02 | +| iOS 17.5 | iPhone 15 Pro Max | `6.0.0` / `6.0.0` | `darwin-arm` | 2024-06-02 | +| Android 34 | Pixel 3a | `6.0.0` / `6.0.0` | `win10-x64` | 2024-05-28 | ::: @@ -67,13 +77,26 @@ npx @capacitor/cli telemetry ## Integration Details -This example uses Svelte, but the same principles apply to other frameworks. +The [SheetJS NodeJS Module](/docs/getting-started/installation/nodejs) can be +imported from any component or script in the app. + +This demo uses [SvelteJS](/docs/demos/frontend/svelte), but the same principles +apply to other frameworks. #### Reading data -The standard HTML5 File Input element logic works in CapacitorJS: +The standard [HTML5 File Input](/docs/demos/local/file#file-api) API works as +expected in CapacitorJS. -```html +Apps will typically include an `input type="file"` element. When the element is +activated, CapacitorJS will show a file picker. After the user selects a file, +the element will receive a `change` event. + +The following example parses the selected file using the SheetJS `read`[^1] +method, generates a HTML table from the first sheet using `sheet_to_html`[^2], +and displays the table by setting the `innerHTML` attribute of a `div` element: + +```html title="Sample component for data import"
---|