Updates from: 07/21/2023 04:08:46
Service Microsoft Docs article Related commit history on GitHub Change details
platform Build Tabs For Meeting https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/build-tabs-for-meeting.md
Title: Build tabs for meeting
-description: Learn how to build a tab for a meeting chat, meeting side panel, and meeting stage in Microsoft Teams meeting, and app caching in meeting.
+description: Learn how to build a tab for a meeting chat, meeting side panel, and meeting stage in Microsoft Teams meeting.
ms.localizationpriority: high
The following table provides the user types and lists the features that each use
| Federated or External | Can interact only | Not available | Not available | Can interact only | | Anonymous | Can interact only | Not available | Not available | Not available |
-## App caching
-
-App caching improves subsequent launch time of the apps that are loaded in the meeting side panel by allowing you to keep some resources and assets in memory that you can use when rehydrating app.
-
-> [!NOTE]
->
-> * App caching is available only in [public developer preview](~/resources/dev-preview/developer-preview-intro.md).
-> * App caching is supported only for tabs loaded in the meeting side panel in Teams desktop client. While it can work in other contexts such as personal apps and chat or channel tabs, it isn't officially supported. We recommend to register the `onLoad` or `beforeUnload` handlers when in the sidePanel frameContext.
-
-### Enable app caching
-
-To enable app caching in your meeting side panel, follow the steps:
-
-1. Call `teamsCore.registerBeforeUnloadHandler` and `teamsCore.registerOnLoadHandler` APIs.
-
-1. Use `contentUrl` and `entityId` passed into the load handler to route to the correct page within your app and invoke `notifySuccess` or `notifyFailure` to notify Teams client that the app initialization flow is complete.
-
- * [contentUrl](../resources/schem#statictabs): Add content page URL.
- * [entityId](../resources/schem#statictabs): Add a unique identifier.
-
-1. Dispose resources and perform any cleanup needed in the `beforeUnload` handler, then invoke the `readyToUnload` callback to notify Teams client that the app unload flow is complete.
-
-The following is the flow diagram of the first launch of an app that wants to opt into app caching (register the `load` or `beforeUnload` on the first launch of the app):
--
-The following is the flow diagram of the launch of cached app:
--
-When you opt into app caching, the webview that is used to host the embedded app is reused as users navigate to different instances of the app within a window. The webview used to host the app is hidden when the users leave the app and shown when the users return to the app. When the app is cached, any audio that is playing is muted.
-
-> [!NOTE]
-> If the app caching isn't enabled, the webview is recreated every time the user launches the app.
-
-There are multiple reasons for an app to not get cached or for an app to get removed from the cache, some of the reasons are (numbers here are subject to change):
-
-* If the system memory load is high, the app is removed from the cache.
-* If the number of cached apps exceed the maximum cache size, the oldest cached app is removed from the cache.
-* If the user doesn't return to the app within 20 minutes, the app is removed from the cache.
-* The app isn't cached if Teams doesn't receive the `readyToUnload` signal from the app within 30 seconds after sending the `beforeUnload` notification.
-* App caching is disabled if the system memory is less than 4 GB or if the available memory is less than 1 GB on Windows or 512 MB on Mac.
-* Side panel is the only supported frameContext for app caching in meetings.
-* App caching isn't supported for meetings where the invited user count is more than 20.
-* If an app fails to load, the app isn't cached.
-
-### Code example
-
-The following code snippet is an example of `teamsCore.registerOnLoadHandler` and `teamsCore.registerBeforeUnloadHandler` APIs:
-
-```javascript
-microsoftTeams.teamsCore.registerOnLoadHandler((data) => {
- console.log("got load from TEAMS", data.contentUrl, data.entityId);
- // use contentUrl to route to correct page
- // invoke notifySuccess when ready
- app.notifySuccess();
-});
-microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload) => {
- // dispose resources and then invoke readyToUnload
- readyToUnload();
- return true;
-});
-```
-
-### Limitations
-
-The following are the limitations for app caching:
-
-* Single-page apps that use client-side routing for page navigation can benefit from app caching. It's recommended that the same domain be used across all contexts of your app launch.
-
-* Apps need to re-register for events such as `themeChange`, `focusEnter`, and so on, in the load handler. Teams client won't send any notifications to the app when cached. If your app requires notifications even when cached, caching might not be the right solution.
-
-* App caching is supported only in Teams desktop client. In Teams web client, even if the app registers load handlers, the app is removed from the cache after the unload sequence is completed.
-
-* Register the `load` and `beforeUnload` handlers early in your launch sequence. If the Teams client doesnΓÇÖt see these registrations before the user leaves the app, the app isn't cached.
-
-* The Teams client invokes the `loadHandler` only after the `unload` sequence of the app is completed. For example, if a user launches tab A of your app and then launches tab B of the same app, tab B won't get the load signal until the tab A invokes the `readyToUnload` callback.
-
-* Apps are cached on a per-window basis. App caching happens on a per app (not on a per tab) basis within the same window.
-
-* App caching isn't supported for the meeting stage or Task module contexts, because these can be opened on top of the tab and the same webview can't be used to render the content in the tab and the Task module.
-
-* Register only the `beforeUnload` handler if your app doesn't require app caching but needs time to safely save state (as leaving the app can cause the app content to be abruptly removed from the Document Object Model (DOM)). If the app hasn't registered for the `load` event, it's removed from the DOM after the unload flow completes.
-
-* Follow the guidelines in this section to onboard your app to app caching in Teams meeting. For app caching support only in meetings, register the `load` or `beforeUnload` handlers if the context is `sidePanel`.
-
-* Apps are expected to sleep when cached (use minimal compute or network resources and minimizes SDK requests). All the register handlers and the following SDK requests are allowed when the app is cached:
-
- * `initialize`
- * `notifyappLoaded`
- * `notifySuccess`
- * `notifyFailure`
- * `notifyExpectedFailure`
- * `getContext`
- * `getAuthToken`
- * `readyToUnload`
- * `getConfig/getSettings`
-
-### Troubleshooting
-
-**Apps are not being cached? Why is load handler not invoked on subsequent navigation?**
-
-* Verify if the system and available memory constraints are met.
-
-* Reduce your memory footprint when cached. Use the `beforeUnload` handler to dispose resources, for example, release references and remove event listeners, that might not be needed when cached.
- ## Code sample |Sample name | Description | .NET | Node.js | Manifest|
The following are the limitations for app caching:
| Meeting side panel | Sample app to show how to add agenda in a meeting side panel. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-sidepanel/csharp) |[View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-sidepanel/nodejs) || | In-meeting notification | Demonstrates how to implement in-meeting notification using bot. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-events/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-events/nodejs) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meetings-events/csharp/demo-manifest/Meetings-Events.zip)| | In-meeting document signing | Demonstrates how to implement a document signing Teams app. Includes sharing specific app content to stage, Teams SSO and user specific Stage View. | [View](https://github.com/officedev/microsoft-teams-samples/tree/main/samples/meetings-share-to-stage-signing/csharp) | NA ||
-| App caching | Sample app to show how app caching works in the meeting side panel. | NA | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-cache-meetings/nodejs) ||
| Meeting tabs | This sample shows app Stage View, Mute/Unmute Teams meeting audio call in meeting Side panel tab. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meeting-tabs/csharp) | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/meeting-tabs/nodejs) || > [!NOTE] >
-> * Meeting apps (side panel and meeting stage) are supported in Teams desktop and mobile clients.
+> * Meeting apps (side panel and meeting stage) are supported in Teams desktop client.
> * Meeting apps (side panel and meeting stage) in Teams web client is supported only when the [developer preview is enabled](/microsoftteams/platform/resources/dev-preview/developer-preview-intro#enable-developer-preview). ## Step-by-step guides
platform Teams Apps In Meetings https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/apps-in-teams-meetings/teams-apps-in-meetings.md
Learn more about [Teams meetings, expiration, and policies](/microsoftteams/meet
A meeting lifecycle includes pre-meeting, in-meeting, and post-meeting app experience, depending on the user type and user's role in a Teams meeting.
-### App caching for tab app in Teams meeting
-
-You can configure your tab app to enable app caching to reduce the reload time of your app during a meeting. The app reloads from the cache, which improves the app relaunch time within the meeting. For more information, see [enable app caching for your tab app](build-tabs-for-meeting.md#app-caching).
- ## User types in Teams Teams supports user types, such as in-tenant, guest, federated or external, and anonymous users in a Teams meeting. Each user type can have one of the [user roles in Teams meeting](#user-roles-in-teams-meeting).
platform Map Use Cases https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/concepts/design/map-use-cases.md
The Microsoft Teams platform offers a large variety of features. Each feature is
Let's look at how Teams capabilities enable different features for your app. For example:
platform App Caching https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/how-to/app-caching.md
+
+ Title: App caching for your tab app
+
+description: Learn how to enable app caching to your tab app in Teams meeting and how it improves the launch time of the app.
++
+ms.localizationpriority: high
Last updated : 04/07/2022++
+# App caching for your tab app
+
+App caching improves subsequent launch time of the apps within Teams by allowing you to keep some resources and assets in memory that you can use when rehydrating your app.
+
+App caching is supported for the following:
+
+| Scope |   Desktop | iOS | Android |
+| | | | |
+| &nbsp; | *Supported* <br> *Available only in [public developer preview](~/resources/dev-preview/developer-preview-intro.md)* | *Supported* | *Supported* |
+| Personal | ✔️ Cache lifetime: 30 minutes| ✔️ | ❌ |
+| Chat | ✔️ Cache lifetime: 30 minutes| ❌ | ❌ |
+| Channel | ✔️ Cache lifetime: 30 minutes| ❌ | ❌ |
+| Meeting tab | ✔️ Cache lifetime: 30 minutes| ❌ | ❌ |
+| Meeting side panel or In-meeting apps | ✔️ Cache lifetime: 20 minutes| ❌ | ❌ |
+
+## Enable app caching
+
+To enable app caching, follow the steps:
+
+1. Call `teamsCore.registerBeforeUnloadHandler` and `teamsCore.registerOnLoadHandler` APIs.
+
+1. Use `contentUrl` and `entityId` passed into the load handler to route to the correct page within your app and invoke `notifySuccess` or `notifyFailure` to notify Teams client that the app initialization flow is complete.
+
+ * [contentUrl](create-tab-pages/configuration-page.md#modify-or-remove-a-tab): Add content page URL.
+ * [entityId](create-tab-pages/configuration-page.md#modify-or-remove-a-tab): Add a unique identifier.
+
+1. Dispose resources and perform any cleanup needed in the `beforeUnload` handler, then invoke the `readyToUnload` callback to notify Teams client that the app unload flow is complete.
+
+The following is the flow diagram of the first launch of an app that wants to opt into app caching (register the `load` or `beforeUnload` on the first launch of the app):
++
+The following is the flow diagram of the launch of cached app:
++
+When you opt into app caching, the webview that is used to host the embedded app is reused as users navigate to different instances of the app within a window. The webview used to host the app is hidden when the users leave the app and shown when the users return to the app.
+
+> [!NOTE]
+> If the app caching isn't enabled, the webview is recreated every time the user launches the app.
+
+There are multiple reasons for an app to not get cached or for an app to get removed from the cache, some of the reasons are (numbers here are subject to change):
+
+* If the system memory load is high, the app is removed from the cache.
+* If the number of cached apps exceed the maximum cache size, the oldest cached app is removed from the cache.
+* The app isn't cached if Teams doesn't receive the `readyToUnload` signal from the app within 30 seconds after sending the `beforeUnload` notification.
+* App caching is disabled if the system memory is less than 4 GB or if the available memory is less than 1 GB on Windows or 512 MB on Mac.
+* Side panel is the only supported frameContext for app caching in meetings.
+* App caching isn't supported for meetings where the invited user count is more than 20.
+* If an app fails to load, the app isn't cached.
+
+## Code example
+
+The following code snippet is an example of `teamsCore.registerOnLoadHandler` and `teamsCore.registerBeforeUnloadHandler` APIs:
+
+```javascript
+microsoftTeams.teamsCore.registerOnLoadHandler((data) => {
+ console.log("got load from TEAMS", data.contentUrl, data.entityId);
+ // use contentUrl to route to correct page
+ // invoke notifySuccess when ready
+ app.notifySuccess();
+});
+microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload) => {
+ // dispose resources and then invoke readyToUnload
+ readyToUnload();
+ return true;
+});
+```
+
+## Best practices
+
+It's recommended that you implement web storage or service worker capabilities to store the data or web view locally in iOS and Android. This helps to load the app faster in subsequent launches.
+
+## Limitations
+
+The following are the limitations for app caching:
+
+* Single-page apps that use client-side routing for page navigation can benefit from app caching. It's recommended that the same domain be used across all contexts of your app launch.
+
+* Apps need to re-register for events such as `themeChange`, `focusEnter`, and so on, in the load handler. Teams client won't send any notifications to the app when cached. If your app requires notifications even when cached, caching might not be the right solution.
+
+* App caching is supported only in Teams desktop client. In Teams web client, even if the app registers load handlers, the app is removed from the cache after the unload sequence is completed.
+
+* Register the `load` and `beforeUnload` handlers early in your launch sequence. If the Teams client doesnΓÇÖt see these registrations before the user leaves the app, the app isn't cached.
+
+* The Teams client invokes the `loadHandler` only after the `unload` sequence of the app is completed. For example, if a user launches tab A of your app and then launches tab B of the same app, tab B won't get the load signal until the tab A invokes the `readyToUnload` callback.
+
+* Apps are cached on a per-window basis. App caching happens on a per app (not on a per tab) basis within the same window.
+
+* App caching isn't supported for the meeting stage or task module contexts, because these can be opened on top of the tab and the same webview can't be used to render the content in the tab and the task module.
+
+* Register only the `beforeUnload` handler if your app doesn't require app caching but needs time to safely save state (as leaving the app can cause the app content to be abruptly removed from the Document Object Model (DOM)). If the app hasn't registered for the `load` event, it's removed from the DOM after the unload flow completes.
+
+* Follow the guidelines in this section to onboard your app to app caching in Teams meeting. For app caching support only in meetings, register the `load` or `beforeUnload` handlers if the context is `sidePanel`.
+
+* Apps are expected to sleep when cached (use minimal compute or network resources and minimizes SDK requests). All the register handlers and the following SDK requests are allowed when the app is cached:
+
+ * `initialize`
+ * `notifyappLoaded`
+ * `notifySuccess`
+ * `notifyFailure`
+ * `notifyExpectedFailure`
+ * `getContext`
+ * `getAuthToken`
+ * `readyToUnload`
+ * `getConfig/getSettings`
+
+## Troubleshooting
+
+**Apps are not being cached? Why is load handler not invoked on subsequent navigation?**
+
+* Verify if the system and available memory constraints are met.
+
+* Reduce your memory footprint when cached. Use the `beforeUnload` handler to dispose resources, for example, release references and remove event listeners, that might not be needed when cached.
+
+## Code sample
+
+|Sample name | Description | Node.js |
+|-|--|
+| App caching | Sample app to show how app caching works in the meeting side panel. | [View](https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/app-cache-meetings/nodejs) |
+
+## See also
+
+* [Create a personal tab](create-personal-tab.md)
+* [Create a channel tab or group tab](create-channel-group-tab.md)
+* [Build tabs for meeting](../../apps-in-teams-meetings/build-tabs-for-meeting.md)
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/tabs/what-are-tabs.md
Following are a few benefits of static tabs in chats and meeting tabs:
* **Pinnable and instant**: You can pin apps with static tabs from the add a tab **+** icon in chats and meetings. These tabs can be unpinned and don't have the mandatory configuration dialog, which allows you to create tabs that function more like apps.
-* **Unified**: You can create one static tab that work in personal and group scopes such as chat and meeting tabs.
+* **Unified**: You can create one static tab that work in personal and group scopes such as chat and meeting tabs.
* **Optional configuration**: You can change the default URL in your tab instance by changing the `contentUrl` property of your app after it's pinned in Teams. - [Channel or group tabs](~/tabs/how-to/create-channel-group-tab.md) also known as configurable tabs, deliver content to channels and group chats and is a way to create collaborative spaces around dedicated web-based content. The following table helps you determine best fit for your app:
The following table helps you determine best fit for your app:
|[Static tabs](~/tabs/how-to/create-personal-tab.md)|✔️|❌|✔️|✔️| |[Configurable tabs](~/tabs/how-to/create-channel-group-tab.md)|❌|✔️|✔️|✔️|
->[!NOTE]
+>[!NOTE]
> If you have both [configurable tab](~/tabs/how-to/create-tab-pages/configuration-page.md) and [static tab](~/tabs/how-to/create-personal-tab.md) defined in your app manifest for a specific scope, Teams pins the static tab by default. You can [create a content page](~/tabs/how-to/create-tab-pages/content-page.md) as part of a personal static tab, channel or group tab, or task module. You can [create a configuration page](~/tabs/how-to/create-tab-pages/configuration-page.md) that enables users to configure Microsoft Teams app and use it to configure a personal, channel, or group chat tab, a messaging extension, or a connector card for Microsoft 365 Groups. You can permit users to reconfigure your tab after installation and [create a tab removal page](~/tabs/how-to/create-tab-pages/removal-page.md) for your application. When you build a Teams app that includes a tab, you must test how your [tab functions on both the Android and iOS Teams clients](~/tabs/design/tabs-mobile.md). Your tab must [get context](~/tabs/how-to/access-teams-context.md) through basic information, locale and theme information, and `entityId` or `subEntityId` that identifies what is in the tab.
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/main/msteams-platform/whats-new.md
Teams platform features that are available to all app developers.
**2023 July**
-***July 06, 2023***: [Use app icon badging to identify any app activity during a meeting](apps-in-teams-meetings/app-icon-badging-for-your-app.md).
+* ***July 20, 2023***: [App caching for iOS personal tray](tabs/how-to/app-caching.md)
+
+* ***July 06, 2023***: [Use app icon badging to identify any app activity during a meeting](apps-in-teams-meetings/app-icon-badging-for-your-app.md).
:::column-end::: :::row-end:::
Developer preview is a public program that provides early access to unreleased T
| -- | | -| |19/07/2023| Use Collaborative Stage View to engage with your app content in a new Teams window | Build tabs > [Tabs link unfurling and Stage View](tabs/tabs-link-unfurling.md#collaborative-stage-view) | |31/01/2023| Send notifications to specific participants on a meeting stage with targeted in-meeting notification. |Build apps for Teams meetings and calls > Enable and configure apps for meetings > Build in-meeting notification for Teams meeting > Build tabs for meeting > [Targeted in-meeting notification](apps-in-teams-meetings/in-meeting-notification-for-meeting.md#targeted-in-meeting-notification)|
-|30/01/2023| Enable app caching to improve subsequent launch time of the apps to the meeting side panel.|Build apps for Teams meetings and calls > Enable and configure apps for meetings > [App caching](apps-in-teams-meetings/build-tabs-for-meeting.md#app-caching) |
+|30/01/2023| Enable app caching to improve subsequent launch time of the apps to the meeting side panel.|Build tabs > [App caching for your tab app](tabs/how-to/app-caching.md) |
</details> </br>