Updates from: 05/27/2021 03:26:34
Service Microsoft Docs article Related commit history on GitHub Change details
platform Create A Bot Commands Menu https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/bots/how-to/create-a-bot-commands-menu.md
[!INCLUDE [pre-release-label](~/includes/v4-to-v3-pointer-bots.md)]
-> [!Note]
-> Bot menus do not appear on mobile clients.
- To define a set of core commands that your bot can respond to, you can add a command menu with a drop-down list of commands for your bot. The list of commands is presented to the users in the compose message area when they are in conversation with your bot. Select a command from the list to insert the command string into the compose message box and select **Send**.
+# [Desktop](#tab/desktop)
+ ![Bot command menu](./conversations/media/bot-menu-sample.png)
+# [Mobile](#tab/mobile)
+
+![Mobile bot command menu](./conversations/media/mobile-bot-menu-sample.png)
+
+* * *
+ ## Create a command menu for your bot Command menus are defined in your app manifest. You can either use **App Studio** to create them or add them manually in the app manifest.
platform Teams Developer Portal https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/build-and-test/teams-developer-portal.md
> [!NOTE] > The Developer Portal for Teams is currently in [public developer preview](~/resources/dev-preview/developer-preview-intro.md).
-The Developer Portal for Teams is the primary tool for configuring, distributing, and managing your Microsoft Teams apps. With the Developer Portal, you can collaborate with colleagues on your app, set up runtime environments, and much more.
+The <a href="https://dev.teams.microsoft.com" target="_blank">Developer Portal for Teams</a> is the primary tool for configuring, distributing, and managing your Microsoft Teams apps. With the Developer Portal, you can collaborate with colleagues on your app, set up runtime environments, and much more.
:::image type="content" source="../../assets/images/tdp/tdp_home_1.png" alt-text="Screenshot showing the home page of the Developer Portal for Teams.":::
platform Apps Upload https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/concepts/deploy-and-publish/apps-upload.md
If your app fails to sideload, do the following until the issue resolves:
1. Go back through the instructions for [creating your app package](../../concepts/build-and-test/apps-package.md). 1. [Validate your app package](https://dev.teams.microsoft.com/appvalidation.html) again.
-1. Make sure your app manifest matches the latest [schema](../../resources/schem).
+1. Ensure your app manifest matches the latest [schema](../../resources/schem).
## Access your app
platform First App Blazor https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/get-started/first-app-blazor.md
Use the Teams Toolkit to create your first project:
1. Run `dotnet new -i` to install the template from NuGet: ``` bash
- dotnet new -i Microsoft.TeamsApp.Blazor
+ dotnet new --install Microsoft.TeamsFx.VisualStudio.ProjectTemplates::0.1.43-beta
```
- You only need to do this the first time or when updating the template.
+ You only need to do this the first time or when updating the template. Check [NuGet](https://www.nuget.org/packages/Microsoft.TeamsFx.VisualStudio.ProjectTemplates/) for the latest version of this package.
1. Create a directory:
platform Manifest Schema Dev Preview https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/resources/schema/manifest-schema-dev-preview.md
Last updated 05/20/2019
# Developer preview manifest schema for Microsoft Teams > [!NOTE]
-> See [Developer Preview](~/resources/dev-preview/developer-preview-intro.md) for information on the program and how you can join.
+> For more information on the program and how you can join,see [Developer Preview](~/resources/dev-preview/developer-preview-intro.md).
> If you are not using the developer preview you should not be using this version of the manifest. See [Reference: Manifest schema for Microsoft Teams](~/resources/schem) for the public version of the manifest. The Microsoft Teams manifest describes how the app integrates into the Microsoft Teams product. Your manifest must conform to the schema hosted at [`https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json`](https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json).
For more information on the features available see: [Features in the Public Deve
"entityId": "idForPage", "name": "Display name of tab", "contentUrl": "https://contoso.com/content?host=msteams",
+ "contentBotId": "Specifies to the app that tab is an Adaptive Card Tab. You can either provide the contentBotId or contentUrl.",
"websiteUrl": "https://contoso.com/content", "scopes": [ "personal" ] }
The object is an array with all elements of the type `object`. This block is req
Defines a set of tabs that can be "pinned" by default, without the user adding them manually. Static tabs declared in `personal` scope are always pinned to the app's personal experience. Static tabs declared in the `team` scope are currently not supported.
+Render tabs with Adaptive Cards by specifying `contentBotId` instead of `contentUrl` in the **staticTabs** block.
+ The object is an array (maximum of 16 elements) with all elements of the type `object`. This block is required only for solutions that provide a static tab solution. + |Name| Type| Maximum size | Required | Description| |||||| |`entityId`|String|64 characters|Γ£ö|A unique identifier for the entity that the tab displays.| |`name`|String|128 characters|Γ£ö|The display name of the tab in the channel interface.| |`contentUrl`|String|2048 characters|Γ£ö|The https:// URL that points to the entity UI to be displayed in the Teams canvas.|
+|`contentBotId`| | | | The Microsoft Teams app ID specified for the bot in the Bot Framework portal. |
|`websiteUrl`|String|2048 characters||The https:// URL to point at if a user opts to view in a browser.| |`scopes`|Array of enum|1|Γ£ö|Currently, static tabs support only the `personal` scope, which means it can be provisioned only as part of the personal experience.|
platform Build Adaptive Card Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/how-to/build-adaptive-card-tabs.md
+
+ Title: Build Adaptive Card Tabs
+
+description: Build tabs using Adaptive Cards
+++++
+# Build tabs with Adaptive Cards
+
+> [!IMPORTANT]
+> * This feature is in [Public Developer Preview](~/resources/dev-preview/developer-preview-intro.md) and is supported in desktop and mobile. Support in the web browser is coming soon.
+> * Tabs with Adaptive Cards are currently only supported as personal apps.
+
+Use Adaptive Cards to build tabs with ease. You can build your tabs with ready-made UI Lego-blocks that look and feel native on desktop, web, and mobile. Building tabs with Adaptive Cards centralizes all Teams app capabilities around a bot backend and Adaptive Card frontend, thus, eliminating the need for a different backend for your bot and tabs. This greatly reduces server and maintenance costs of your Teams app. This article helps you understand the changes required to be made to the app manifest, how the invoke activity requests and sends information in tab with Adaptive Cards, and the impact on the task module workflow.
+
+The following image depicts build tabs with Adaptive Cards in desktop and mobile:
+
+## Prerequisites
+
+Before you start using Adaptive Cards to build tabs, you must:
+
+* Be familiar with, [bot development](../../bots/what-are-bots.md), [Adaptive Cards](../../task-modules-and-cards/what-are-cards.md#adaptive-cards), and [Task Modules](../../task-modules-and-cards/task-modules/task-modules-bots.md) in Teams.
+* Have a bot running in Teams for your development.
+* Be in [Public Developer Preview](~/resources/dev-preview/developer-preview-intro.md).
+
+## Changes to app manifest
+
+Personal apps that render tabs must include a `staticTabs` array in their app manifest. Adaptive Card Tab are rendered when the `contentBotId` property is provided in the `staticTab` definition. Static tab definitions must contain either a `contentBotId`, specifying an Adaptive Card Tab or a `contentUrl`, specifying a typical hosted web content tab experience.
+
+> [!NOTE]
+> The `contentBotId` property is currently available manifest version 1.9 or later.
+
+Provide the `contentBotId` property with the `botId` that the Adaptive Card Tab must communicate with. The `entityId` configured for the Adaptive Card Tab is sent in the `tabContext` parameter of each invoke request, and can be used to differentiate different Adaptive Card Tabs that are powered by the same bot. For more information about other static tab definition fields, see [manifest schema](../../resources/schem#statictabs).
+
+Following is a sample Adaptive Card Tab manifest:
+
+```json
+{
+ "$schema": "https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json",
+ "manifestVersion": "1.9",
+ "id": "00000000-0000-0000-0000-000000000000",
+ "version": "0.0.1",
+ "packageName": "acprototype",
+ "developer": {
+ "name": "Contoso",
+ "websiteUrl": "https://contoso.yourwebsite.com",
+ "privacyUrl": "https://contoso.yourwebsite.com/privacy.html",
+ "termsOfUseUrl": "https://contoso.yourwebsite.com/terms.html"
+ },
+ "name": {
+ "short": "Contoso",
+ "full": "Contoso Home"
+ },
+ "description": {
+ "short": "Add short description here",
+ "full": "Add full description here"
+ },
+ "icons": {
+ "outline": "icon-outline.png",
+ "color": "icon-color.png"
+ },
+ "accentColor": "#D85028",
+ "configurableTabs": [],
+ "staticTabs": [
+ {
+ "entityId": "homeTab",
+ "name": "Home",
+ "contentBotId": "00000000-0000-0000-0000-000000000000",
+ "scopes": ["personal"]
+ },
+ {
+ "entityId": "moreTab",
+ "name": "More",
+ "contentBotId": "00000000-0000-0000-0000-000000000000",
+ "scopes": ["personal"]
+ }
+ ],
+ "connectors": [],
+ "composeExtensions": [],
+ "permissions": ["identity", "messageTeamMembers"],
+ "validDomains": [
+ "contoso.yourwebsite.com",
+ "token.botframework.com"
+ ]
+}
+```
+
+## Invoke activities
+
+Communication between your Adaptive Card Tab and your bot is done through `invoke` activities. Each `invoke` activity has a corresponding *name*. Use the name of each activity to differentiate each request. `tab/fetch` and `tab/submit` are the activities covered in this section.
+
+### Fetch Adaptive Card to render to a tab
+
+`tab/fetch` is the first invoke request that your bot receives when a user opens an Adaptive Card Tabs. When your bot receives the request, it will either send a tab **continue** response or a tab **auth** response.
+The **continue** response includes an array for **cards**, which is rendered vertically to the tab in the order of the array.
+
+> [!NOTE]
+> The **auth** response is explained in detail in the [authentication](#authentication) section.
+
+The following code snippets are examples of `tab/fetch` request and response:
+
+**`tab/fetch` request**
+
+```json
+// tab/fetch POST request: agents/{botId}/invoke
+{
+ "name": "tab/fetch",
+ "value: {
+ "tabContext": {
+ "tabEntityId": "{tab_entity_id}"
+ },
+ "context": {
+ "theme": "default"
+ }
+ },
+ "conversation": {
+ "id": "{generated_conversation_id}"
+ },
+ "imdisplayname": "{user_display_name}"
+}
+```
+
+**`tab/fetch` response**
+
+```json
+// tab/fetch **continue** POST response:
+{
+ "tab": {
+ "type": "continue",
+ "value": {
+ "cards": [
+ {
+ "card": adaptiveCard1,
+ },
+ {
+ "card": adaptiveCard2,
+ }
+ {
+ "card": adaptiveCard3
+ }
+ ]
+ },
+ },
+ "responseType": "tab"
+}
+```
+
+### Handle submits from Adaptive Card
+
+After an Adaptive Card is rendered in the tab, it must be able to respond to user interactions. This response is handled by the `tab/submit` invoke request.
+
+When a user selects a button on the Adaptive Card Tab, the `tab/submit` request is triggered to your bot with the corresponding data through the *Action.Submit* function of Adaptive Card. The Adaptive Card data is available through the data property of the `tab/submit` request. You will receive either of the following responses to your request:
+
+* A http status code `200` response with no body. An empty 200 response will result in no action taken by the client.
+* The standard `200` tab **continue** response, as explained in [Fetch Adaptive Card](#fetch-adaptive-card-to-render-to-a-tab) section. A tab **continue** response triggers the client to update the rendered Adaptive Card Tab with the Adaptive Cards provided in the cards array of the **continue** response.
+
+The following code snippets are examples of `tab/submit` request and response:
+
+**`tab/submit` request**
+
+```json
+// tab/submit POST request: agents/{botId}/invoke:
+{
+ "name": "tab/submit",
+ "value": {
+ "data": {
+ "type": "tab/submit",
+ //...<data properties>
+ },
+ "context": {
+ "theme": "default"
+ },
+ "tabContext": {
+ "tabEntityId": "{tab_entity_id}"
+ },
+ },
+ "conversation": {
+ "id": "{generated_conversation_id}"
+ },
+ "imdisplayname": "{user_display_name}"
+}
+```
+
+**`tab/submit` response**
+
+```json
+//tab/fetch **continue** POST response:
+{
+ "tab": {
+ "type": "continue",
+ "value": {
+ "cards": [
+ {
+ "card": adaptiveCard1,
+ },
+ {
+ "card": adaptiveCard2,
+ }
+ ]
+ },
+ },
+ "responseType": "tab"
+}
+```
+
+## Understand task module workflow
+
+The task module also uses Adaptive Card to invoke `task/fetch` and `task/submit` requests and responses. For more information, see [Using Task Modules in Microsoft Teams bots](../../task-modules-and-cards/task-modules/task-modules-bots.md).
+
+However, with the introduction of Adaptive Card Tab there is a change in how the bot responds to a `task/submit` request. If you are using an Adaptive Card Tab, the bot responds to the `task/submit` invoke request with the standard tab **continue** response, and closes the task module. The Adaptive Card Tab is updated by rendering the new list of cards provided in the tab **continue** response body.
+
+### Invoke `task/fetch`
+
+The following code snippets are examples of `task/fetch` request and response:
+
+**`task/fetch` request**
+```json
+// task/fetch POST request: agents/{botId}/invoke
+{
+ "name": "task/fetch",
+ "value": {
+ "data": {
+ "type": "task/fetch"
+ },
+ "context": {
+ "theme": "default",
+ },
+ "tabContext": {
+ "tabEntityId": "{tab_entity_id}"
+ }
+ },
+ "imdisplayname": "{user_display_name}",
+ "conversation": {
+ "id": "{generated_conversation_id}"
+ }
+}
+```
+
+**`task/fetch` response**
+
+```json
+// task/fetch POST response: agents/{botId}/invoke
+{
+ "task": {
+ "value": {
+ "title": "Ninja Cat",
+ "height": "small",
+ "width": "small",
+ "card": {
+ "contentType": "application/vnd.microsoft.card.adaptive",
+ "content": adaptiveCard,
+ }
+ },
+ "type": "continue"
+ },
+ "responseType": "task"
+}
+```
+
+### Invoke `task/submit`
+
+The following code snippets are examples of `task/submit` request and response:
+
+**`task/submit` request**
+
+```json
+// task/submit POST request: agent/{botId}/invoke:
+{
+ "name": "task/submit",
+ "value": {
+ "data": {serialized_data_object},
+ "context": {
+ "theme": "default"
+ },
+ "tabContext": {
+ "tabEntityId": "{tab_entity_id}"
+ },
+ },
+ "conversation": {
+ "id": "{generated_conversation_id}"
+ },
+ "imdisplayname": "{user_display_name}",
+}
+```
+
+**`task/submit` tab response type**
+
+```json
+// tab/fetch **continue** POST response:
+{
+ "task":{
+ "value": {
+ "tab": {
+ "type": "continue",
+ "value": {
+ "cards": [
+ {
+ "card": adaptiveCard1
+ },
+ {
+ "card": adaptiveCard2
+ }
+ ]
+ }
+ }
+ },
+ "type": "continue"
+ },
+ "responseType": "task"
+}
+```
+
+## Authentication
+
+In the previous sections of this article, you have seen that most of the development paradigms could be extrapolated from the task module requests and responses into tab requests and responses. However, when it comes to handling authentication, the workflow for Adaptive Card Tab follows the authentication pattern for messaging extensions. For more information, see [add authentication](../../messaging-extensions/how-to/add-authentication.md).
+
+In the [invoke activities](#invoke-activities) section, you were informed that `tab/fetch` requests can have either a **continue** or an **auth** response. When a `tab/fetch` request is triggered and receives a tab **auth** response, the sign-in page is shown to the user.
+
+**To get an authentication code through `tab/fetch` invoke**
+
+1. Open your app. The sign in page appears.
+
+ > [!NOTE]
+ > The app logo is provided through the `icon` property defined in the app manifest, and the title appearing after the logo is defined in the `title` property returned in the tab **auth** response body.
+
+1. Select **Sign in**. You are redirected to the authentication URL provided in the `value` property of the **auth** response body.
+1. A pop-up window appears. This pop-up window hosts your web page using the authentication URL.
+1. After you sign in, close the window. An *authentication code* is sent to the Teams client.
+1. The Teams client then reissues the `tab/fetch` request to your service, which includes the authentication code provided by your hosted web page.
+
+### `tab/fetch` authentication data flow
+
+The following image provides an overview of how the authentication data flow works for a `tab/fetch` invoke.
++
+**`tab/fetch` auth response**
+
+The following code snippet is an example of `tab/fetch` auth response:
+
+```json
+// tab/auth POST response (openURL)
+{
+ "tab": {
+ "type": "auth",
+ "suggestedActions":{
+ "actions":[
+ {
+ "type": "openUrl",
+ "value": "https://example.com/auth",
+ "title": "Sign in to this app"
+ }
+ ]
+ }
+ }
+}
+```
+
+### Example
+
+The following shows a reissued request example:
+
+```json
+{
+ "name": "tab/fetch",
+ "type": "invoke",
+ "timestamp": "2021-01-15T00:10:12.253Z",
+ "channelId": "msteams",
+ "serviceUrl": "https://smba.trafficmanager.net/amer/",
+ "from": {
+ "id": "{id}",
+ "name": "John Smith",
+ "aadObjectId": "00000000-0000-0000-0000-000000000000"
+ },
+ "conversation": {
+ "tenantId": "{tenantId}",
+ "id": "tab:{guid}"
+ },
+ "recipients": {
+ "id": "28:00000000-0000-0000-0000-000000000000",
+ "name": "ContosoApp"
+ },
+ "entities": [
+ {
+ "locale": "en-us",
+ "country": "US",
+ "platform": "Windows",
+ "timezone": "America/Los_Angeles",
+ "type": "clientInfo"
+ }
+ ],
+ "channelData": {
+ "tenant": { "id": "00000000-0000-0000-0000-000000000000" },
+ "source": { "name": "message" }
+ },
+ "value": {
+ "tabContext": { "tabEntityId": "homeTab" },
+ "state": "0.43195668034524815"
+ },
+ "locale": "en-US",
+ "localTimeZone": "America/Los_Angeles"
+}
+```
+
+## See also
+
+> [!div class="nextstepaction"]
+> [Adaptive Card](../../task-modules-and-cards/what-are-cards.md#adaptive-cards)
+
platform What Are Tabs https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/tabs/what-are-tabs.md
There are two types of tabs available in Teams ΓÇö channel/group and personal. C
## Understand how tabs work
+You can use one of the following methods to create tabs:
+* [Declare custom tab in app manifest](#declare-custom-tab-in-app-manifest)
+* [Use Adaptive Card to build tabs](#use-adaptive-card-to-build-tabs)
+
+### Declare custom tab in app manifest
+ A custom tab is declared in the app manifest of your app package. For each webpage you want included as a tab in your app, you define a URL and a scope. Additionally, you need to add the [Teams JavaScript client SDK](/javascript/api/overview/msteams-client) to your page, and call `microsoftTeams.initialize()` after your page loads. Doing so will tell Teams to display your page, give you access to Teams-specific information (for example if the Teams client is running the *dark theme*), and allow you to take action based on the results. Whether you choose to expose your tab within the channel/group or personal scope, you'll need to present an <iframe\> HTML [content page](~/tabs/how-to/create-tab-pages/content-page.md) in your tab. For personal tabs, the content URL is set directly in your Teams app manifest by the `contentUrl` property in the `staticTabs` array. Your tab's content will be the same for all users.
For channel/group tabs, you also need to create an additional configuration page
You can have multiple channels or group tabs, and up to sixteen personal tabs per app.
-## Mobile considerations
+
+### Use Adaptive Card to build tabs
+
+When developing a tab using the traditional method, you need to consider things, such as HTML, CSS considerations to feel native, slow load times, iFrame constraints, server maintenance and costs, and so on. Adaptive Card Tabs is a new way to build tabs in Teams. Instead of embedding web content in an iframe, you can render Adaptive Card to a tab. While the front-end is rendered as Adaptive Card, the backend is powered by a bot. The bot is responsible for accepting requests and responding appropriately with the Adaptive Card to render.
+
+## Mobile clients
If you choose to have your channel or group tab appear on Teams mobile clients, the `setSettings()` configuration must have a value for the `websiteUrl` property. To ensure optimal user experience, you must follow the [guidance for tabs on mobile](~/tabs/design/tabs-mobile.md) when creating your tabs. Apps [distributed through the Teams store](~/concepts/deploy-and-publish/appsource/publish.md) have a separate approval process for mobile clients. The default behavior of such apps is as follows:
Apps [distributed through the Teams store](~/concepts/deploy-and-publish/appsour
| **Channel and group tabs** | The tab opens in the Teams client using `contentUrl`. | The tab opens in a browser outside the Teams client using `websiteUrl`. | > [!NOTE]
->
+> [Apps submitted to the AppSource for publishing on Teams ](../concepts/deploy-and-publish/overview.md#publish-to-appsource) are evaluated automatically for mobile responsiveness. For any queries, reach out to teamsubm@microsoft.com.
+> For all [apps that are not distributed through the AppSource](../concepts/deploy-and-publish/overview.md), the tabs open in an in-app webview within the Teams clients by default and there is no separate approval process required.
+>
> The default behavior of apps is only applicable if distributed through the Teams store. By default, all tabs open in the Teams client. > To initiate an evaluation of your app for mobile-friendliness, reach out to teamsubm@microsoft.com with your app details.
platform Cards Reference https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/task-modules-and-cards/cards/cards-reference.md
# Cards reference
-The cards listed in this document are supported in bots for Microsoft Teams. They are based on cards defined by the Bot Framework, but Teams does not support all Bot Framework cards and instead some Teams cards have been added. Differences are called out in the references in this document.
+The cards listed in this document are supported in bots for Microsoft Teams. They are based on cards defined by the Bot Framework (BF), but Teams does not support all Bot Framework cards and instead some Teams cards have been added. Differences are called out in the references in this document.
## Card examples
platform Whats New https://github.com/MicrosoftDocs/msteams-docs/commits/master/msteams-platform/whats-new.md
localization_priority: Normal keywords: teams what's new latest + # What's new for developers in Microsoft Teams
-Discover Microsoft Teams platform features that are generally available (GA) and in developer preview.
+Discover Microsoft Teams platform features that are introduced in Microsoft Build 2021, generally available (GA), and in developer preview.
+
+## Microsoft Build 2021
+
+# [Features in developer preview](#tab/devpreview)
+
+| **Date** | **Features** | **Changed topics** |
+| -- | | |
+|05/26/2021| Build tabs with Adaptive Cards. |[Build tabs](tabs/how-to/build-adaptive-card-tabs.md)|
+|05/25/2021| Updated Teams Toolkit for [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension) and [Visual Studio](https://marketplace.visualstudio.com/items?itemName=msft-vsteamstoolkit.vsteamstoolkit&ssr=false#overview). | [Get started with Teams app development](~/get-started/prerequisites.md) |
+|05/25/2021| Meeting Details API and real-time Teams meeting events. | [Create apps for Teams meetings](~/apps-in-teams-meetings/create-apps-for-teams-meetings.md) |
+|05/25/2021| New Developer Portal for Teams introduced for managing your Teams apps. | [Developer Portal for Teams](concepts/build-and-test/teams-developer-portal.md) |
+|05/25/2021| Together Mode feature combines participants into a single virtual scene and places their video streams in pre-determined seats. | [Together Mode](~/apps-in-teams-meetings/teams-together-mode.md) |
+|05/24/2021| Bots can be enabled to receive all channel messages using resource-specific consent (RSC).|[Receive all messages with RSC](~/bots/how-to/conversations/channel-messages-with-rsc.md), [bot conversation overview](~/bots/how-to/conversations/conversation-basics.md), [channel and group conversations](~/bots/how-to/conversations/channel-and-group-conversations.md), and [developer preview manifest schema](~/resources/schem) |
+|05/21/2021| Tabs link unfurling and stage view. |[Tabs link unfurling and stage view](tabs/tabs-link-unfurling.md) |
+
+> [!NOTE]
+> For more information on features available in developer preview, see [public developer preview for Teams](~/resources/dev-preview/developer-preview-intro.md).
+
+# [Features in GA](#tab/GA)
+
+| **Date** | **Features** | **Changed topics** |
+| -- | | |
+|04/29/2021 | Universal Actions for Adaptive Cards. | [Universal Actions for Adaptive Cards](task-modules-and-cards/cards/universal-actions-for-adaptive-cards/overview.md) |
+|04/08/2021| App customization.|[Design teams app overview](concepts/design/enable-app-customization.md), [App studio overview](concepts/build-and-test/app-studio-overview.md#connectors), and [Manifest schema](resources/schem) |
+|03/29/2021 | Format cards in Teams. | [Format cards in Teams](task-modules-and-cards/cards/cards-format.md) |
+|02/19/2021|Added location capabilities. <br/> Location capabilities information is added in the device capabilities overview, native device permissions, integrate media capabilities, and QR or barcode scanner capability files.|[Overview](concepts/device-capabilities/device-capabilities-overview.md), [Request device permissions](concepts/device-capabilities/native-device-permissions.md), [Integrate media capabilities](concepts/device-capabilities/mobile-camera-image-permissions.md), [Integrate QR or barcode scanner capability](concepts/device-capabilities/qr-barcode-scanner-capability.md), [Integrate location capabilities](concepts/device-capabilities/location-capability.md) |
++ ## GA features
Microsoft Teams platform features that are available to all app developers.
|05/10/2021| New app customization feature.| [Enable orgs to customize your app](concepts/design/enable-app-customization.md) | |05/07/2021| Deep links for audio and video calls in chat. |[Deep links](concepts/build-and-test/deep-links.md#deep-linking-to-an-audio-or-audio-video-call) | |04/30/2021|New guidance on how to publish apps to the Teams store.|[Publish your app to the Teams store](concepts/deploy-and-publish/appsource/publish.md), [Teams store validation guidelines](concepts/deploy-and-publish/appsource/prepare/teams-store-validation-guidelines.md) |
-|04/29/2021 | New: Universal Actions for Adaptive Cards. | [Universal Actions for Adaptive Cards](task-modules-and-cards/cards/universal-actions-for-adaptive-cards/overview.md) |
-|04/08/2021| App customization feature is now available in developer preview.|[Design teams app overview](concepts/design/enable-app-customization.md), [App studio overview](concepts/build-and-test/app-studio-overview.md#connectors), and [Manifest schema](resources/schem) |
+|04/29/2021 | Universal Actions for Adaptive Cards. | [Universal Actions for Adaptive Cards](task-modules-and-cards/cards/universal-actions-for-adaptive-cards/overview.md) |
+|04/08/2021| App customization feature.|[Design teams app overview](concepts/design/enable-app-customization.md), [App studio overview](concepts/build-and-test/app-studio-overview.md#connectors), and [Manifest schema](resources/schem) |
|03/18/2021|Notice: Update to version 4.10 or above of the Bot Framework SDK, as we've started with the deprecation process for `TeamsInfo.getMembers` and `TeamsInfo.GetMembersAsync`. | [Bot API Changes for Team/Chat Members](resources/team-chat-member-api-changes.md) | |03/05/2021|Notice: Tabs will no longer have margins surrounding their experiences. Tab developers should review and update their apps. | [Removing tab margins](resources/removing-tab-margins.md) |
-|03/05/2021|Default install scope and group capability is in developer preview.| [Default install scope and group capability](concepts/deploy-and-publish/add-default-install-scope.md) |
+|03/05/2021|Default install scope and group capability.| [Default install scope and group capability](concepts/deploy-and-publish/add-default-install-scope.md) |
|03/05/2021|Reorder personal app tabs.|[Reorder the chat tab in personal apps](tabs/how-to/create-tab-pages/content-page.md#reorder-static-personal-tabs)| |03/04/2021|Information masking in Adaptive cards.| [Information masking in Adaptive cards](task-modules-and-cards/cards/cards-format.md#information-masking-in-adaptive-cards) | |02/19/2021|Added location capabilities. <br/> Location capabilities information is added in the device capabilities overview, native device permissions, integrate media capabilities, and QR or barcode scanner capability files.|[Overview](concepts/device-capabilities/device-capabilities-overview.md), [Request device permissions](concepts/device-capabilities/native-device-permissions.md), [Integrate media capabilities](concepts/device-capabilities/mobile-camera-image-permissions.md), [Integrate QR or barcode scanner capability](concepts/device-capabilities/qr-barcode-scanner-capability.md), [Integrate location capabilities](concepts/device-capabilities/location-capability.md) |
Microsoft Teams platform features that are available to all app developers.
| 05/06/2019 | Application Certification program for store apps. | [Application Certification](~/concepts/deploy-and-publish/appsource/post-publish/overview.md#complete-microsoft-365-certification) | | 05/06/2019 | App Templates are now available. | [App Templates](~/samples/app-templates.md) | | 04/23/2019 | Action-based Messaging Extensions are now available. | [Action-based Message Extensions](~/concepts/messaging-extensions/create-extensions.md) |
-| 02/18/2019 | Creating deep links to private chat is out of developer preview and available. | [Deep linking to a chat](concepts/build-and-test/deep-links.md#deep-linking-to-a-chat) |
+| 02/18/2019 | Creating deep links to private chat. | [Deep linking to a chat](concepts/build-and-test/deep-links.md#deep-linking-to-a-chat) |
| 01/23/2019 | Surfacing SKU and licenceType information in the tab context. | [Tab Context](~/concepts/tabs/tabs-context.md) | <br>
Microsoft Teams platform features that are available to all app developers.
| **Date** | **Notes** | **Changed topics** | | -- | | |
-| 11/12/2018 | Tabs in group chat is now available in the released version of Teams, and has been moved out of developer preview. As part of this work, the tabs section has been reworked for clarity.| [Configurable tabs](~/concepts/tabs/tabs-configurable.md) |
+| 11/12/2018 | Tabs in group chat is now available in the released version of Teams. As part of this work, the tabs section has been reworked for clarity.| [Configurable tabs](~/concepts/tabs/tabs-configurable.md) |
| 11/11/2018 | Getting started for Node JS and for .NET/C# has been updated to use App Studio in Teams, and a new section has been added on hosting Node based Teams apps in Azure. | [Get started on the Microsoft Teams platform with C#/.NET and App Studio](~/get-started/get-started-dotnet-app-studio.md), [Get started on the Microsoft Teams platform with Node JS and App Studio](~/get-started/get-started-nodejs-app-studio.md), [Host your Node Teams app in Azure](~/get-started/get-started-nodejs-in-azure.md)| | 11/09/2018 | You can now create deep links to private chats between users. | [Deep linking to a chat](concepts/build-and-test/deep-links.md#deep-linking-to-a-chat) | | 11/08/2018 | SharePoint Framework 1.7 has shipped and with it a new feature to use Microsoft Teams tab as a SharePoint Framework web part. | [Tabs in SharePoint](~/concepts/tabs/tabs-in-sharepoint.md) |
Microsoft Teams platform features that are available to all app developers.
| 09/11/2018 | Tab configuration pages are now significantly taller. | [Tab Design](tabs/design/tabs.md) | | 08/15/2018 | Adaptive cards are now supported in Teams.|[Adaptive card actions in Teams](task-modules-and-cards/cards/cards-reference.md#adaptive-card) | | 08/10/2018 | Client support for DevTools.| [DevTools for the Microsoft Teams Desktop Client](~/resources/dev-preview/developer-preview-tools.md)|
-| 08/08/2018 | Messaging extensions now supports multiple commands. This feature has been in Developer Preview, and is now released to all users.| [composeExtensions.commands](~/resources/schem#composeextensionscommands)|
+| 08/08/2018 | Messaging extensions now supports multiple commands. | [composeExtensions.commands](~/resources/schem#composeextensionscommands)|
| 08/07/2018 | Inline configuration is now supported in Connectors. The Connectors documentation has also been revised and expanded for clarity.| [Connectors](~/concepts/connectors/connectors.md)| | 08/06/2018 | Your bot can now send and receive files.| [Send and receive files through your bot](~/bots/how-to/bots-filesv4.md)| | 07/23/2018 | Information about app re-certification has been added to the Publishing section. |[Manifest permissions](resources/schem#permissions)|
Developer preview is a public program that provides early access to unreleased T
| **Date** | **Notes** | **Changed topics** | | -- | | |
+|05/26/2021|Build tabs with Adaptive Cards|[Build tabs](tabs/how-to/build-adaptive-card-tabs.md)|
|05/25/2021| Updated Teams Toolkit for [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension) and [Visual Studio](https://marketplace.visualstudio.com/items?itemName=msft-vsteamstoolkit.vsteamstoolkit&ssr=false#overview). | [Get started with Teams app development](~/get-started/prerequisites.md) | |05/25/2021| Meeting Details API and real-time Teams meeting events | [Create apps for Teams meetings](~/apps-in-teams-meetings/create-apps-for-teams-meetings.md) | |05/25/2021| New Developer Portal for Teams introduced for managing your Teams apps. | [Developer Portal for Teams](concepts/build-and-test/teams-developer-portal.md) |