{"id":10614,"date":"2022-05-26T08:00:17","date_gmt":"2022-05-26T15:00:17","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/?p=10614"},"modified":"2022-10-26T14:39:58","modified_gmt":"2022-10-26T21:39:58","slug":"microsoft-teams-toolkit-for-visual-studio-code-now-generally-available","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/microsoft-teams-toolkit-for-visual-studio-code-now-generally-available\/","title":{"rendered":"Microsoft Teams Toolkit for Visual Studio Code now generally available"},"content":{"rendered":"<header id=\"main-title\" class=\"crayons-article__header\">\n<div class=\"crayons-article__header__meta\">\n<div class=\"spec__tags flex flex-wrap\"><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/developing-enterprise-ready-microsoft-teams-apps-with-teams-toolkit-v3-0\" target=\"_blank\" rel=\"noopener\">Previously<\/a><span style=\"font-size: 1rem;\">, I introduced Microsoft Teams Toolkit preview in a series of blog posts. I am happy to announce that <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=TeamsDevApp.ms-teams-vscode-extension\">Teams Toolkit for Visual Studio Code<\/a><span style=\"font-size: 1rem;\"> and the Teams Toolkit CLI are now <\/span><em style=\"font-size: 1rem;\">generally available<\/em><span style=\"font-size: 1rem;\">! And, for everyone building .NET web apps, Teams Toolkit for Visual Studio is available now in preview. I hope you caught the announcement at Build 2022 earlier this week. <\/span>We have made a lot of updates and improvement since the preview versions. I&#8217;d like to highlight some of the key new features with Teams Toolkit for VS Code that will excite you the most!<\/div>\n<div><\/div>\n<div><\/div>\n<\/div>\n<\/header>\n<div class=\"crayons-article__main\">\n<div id=\"article-body\" class=\"crayons-article__body text-styles spec__body\" data-article-id=\"1076803\">\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-10623\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga-1024x722.png\" alt=\"Doodles illustrating the summary of Teams Toolkit\" width=\"640\" height=\"451\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga-1024x722.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga-300x211.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga-768x541.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-toolkit-ga.png 1050w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<h3><\/h3>\n<h2>\ud83c\udf9e Introducing scenario-based Teams apps<\/h2>\n<p>Prior to this release, Teams Toolkit preview provided app template code based on the Teams capabilities, such as <a href=\"https:\/\/docs.microsoft.com\/microsoftteams\/platform\/tabs\/what-are-tabs?WT.mc_id=m365-66412-timura\">Tabs<\/a>,\u00a0<a href=\"https:\/\/docs.microsoft.com\/microsoftteams\/platform\/bots\/what-are-bots?WT.mc_id=m365-66412-timura\">Bots<\/a>, and\u00a0<a href=\"https:\/\/docs.microsoft.com\/microsoftteams\/platform\/messaging-extensions\/what-are-messaging-extensions?WT.mc_id=m365-66412-timura\">Messaging Extensions<\/a>. However, in the reality, we design products based on the\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/overview-story?WT.mc_id=m365-66412-timura\">real-life scenarios<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/developer-scenario.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10624\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/developer-scenario.png\" alt=\"User story illustrated - a travel agent wants to build an app that sends weather forecast notifications\" width=\"651\" height=\"482\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/developer-scenario.png 880w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/developer-scenario-300x222.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/developer-scenario-768x569.png 768w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/a><\/p>\n<p>So, with this GA release, we have added the scenario-based Teams app template, along with the existing basic capabilities templates.<\/p>\n<p>Here are the newly added features\u2014<\/p>\n<h2>\ud83e\udd16 Bot Notifications<\/h2>\n<p>Sending bot notification can be a common scenario for a chat bot applications and for Teams app too. However, the development process for Teams apps has been cumbersome&#8230; Well, we made the process simpler as Toolkit now can help you create the notification feature for your app by tweaking the generated code!<\/p>\n<p>When you are first setting up a new app in Teams Toolkit, click\u00a0<strong>Notification bot<\/strong>\u00a0under Scenario-based Teams app. to let Toolkit generate the scaffolding to create a bot that sends notifications.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10629\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-1024x427.png\" alt=\"Screenshot of Teams Toolkit on VS Code showing the app creation with bot notification menu\" width=\"799\" height=\"333\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-1024x427.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-300x125.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-768x320.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-1536x640.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification.png 2008w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><\/a><\/p>\n<p>You can specify the event for that message\u2014a trigger or a timer. If you want your bot to send Teams periodical reminder of something, choose the Timer Trigger.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10630\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger-1024x427.png\" alt=\"Screenshot of Teams Toolkit on VS Code showing the app creation with bot notification trigger options\" width=\"799\" height=\"333\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger-1024x427.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger-300x125.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger-768x320.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger-1536x640.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-notification-trigger.png 2008w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><\/a><\/p>\n<p>If you are using JavaScript, take a look at the file,\u00a0<code>source\/adaptiveCards\/notification-default.json<\/code>\u00a0and see where specifies the message structure in JSON. You can keep the message just with some simple text, or with a list, table, buttons, etc.<\/p>\n<p>You can also live-preview how the JSON is displayed as the Adaptive Card too. Just click where it says\u00a0<strong>Preview and Debug Adaptive Cards<\/strong> to preview, or get the Visual Studio Code extension.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10625\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-1024x522.png\" alt=\"Screenshot of Teams Toolkit on VS Code showing Adaptive Card viewer\" width=\"801\" height=\"408\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-1024x522.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-300x153.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-768x391.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-1536x782.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-adaptive-card-2048x1043.png 2048w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><\/a><\/p>\n<p>And in\u00a0<code>src\/timerTrigger.js<\/code>\u00a0(for Timer-based notifications), you can see how the message to be sent is applied to the Adaptive Card. Try changing the strings and see how it works on Teams client!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">const<\/span> <span class=\"nx\">target<\/span> <span class=\"k\">of<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">bot<\/span><span class=\"p\">.<\/span><span class=\"nx\">notification<\/span><span class=\"p\">.<\/span><span class=\"nx\">installations<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"k\">await<\/span> <span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">sendAdaptiveCard<\/span><span class=\"p\">(<\/span>\r\n      <span class=\"nx\">AdaptiveCards<\/span><span class=\"p\">.<\/span><span class=\"nx\">declare<\/span><span class=\"p\">(<\/span><span class=\"nx\">notificationTemplate<\/span><span class=\"p\">).<\/span><span class=\"nx\">render<\/span><span class=\"p\">({<\/span>\r\n        <span class=\"na\">title<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Aloha! This is your daily reminder.<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"na\">appName<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Contoso Bot<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"na\">description<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`This is a sample time-triggered notification (<\/span><span class=\"p\">${<\/span><span class=\"nx\">timeStamp<\/span><span class=\"p\">}<\/span><span class=\"s2\">).`<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"na\">notificationUrl<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/www.adaptivecards.io\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"p\">})<\/span>\r\n    <span class=\"p\">);<\/span>\r\n  <span class=\"p\">}<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\"><\/div>\n<\/div>\n<\/div>\n<p>Once you run the bot with the F5 debugger, the bot sends you a notification in your scheduled time.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10632\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-1024x679.png\" alt=\"Screenshot of a bot sending a message on Teams client\" width=\"900\" height=\"597\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-1024x679.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-300x199.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-768x510.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-1536x1019.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-notification-2048x1359.png 2048w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>There are more you can do with bots\u2014<\/p>\n<h2>\ud83d\udcac Command Bot<\/h2>\n<p>Another common scenario would be a bot that respond to a command. You might think about some conversational bot but for most cases, all you need is a simple bot that answers your commands, like what you may have used &#8220;slash commands&#8221; in some services.<\/p>\n<p>Now with the Toolkit, you can start creating a command bot easier than ever.<\/p>\n<p>After clicking\u00a0<strong>Create a new Teams<\/strong>\u00a0app in Teams Toolkit, select the\u00a0<strong>Command bot<\/strong>\u00a0from the menu and proceed the rest.<\/p>\n<p>Once the template code is generated, see the\u00a0<code>commandHandler<\/code>\u00a0function. For example, if you chose JavaScript, the file,\u00a0<code>bot\/src\/helloWorldCommandHandler.js<\/code>\u00a0you see the trigger word and response message.<\/p>\n<p>You can alter the handler (or create a new handler) to create your command:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">class<\/span> <span class=\"nx\">HelloWorldCommandHandler<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">triggerPatterns<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Hi kitty<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n  <span class=\"k\">async<\/span> <span class=\"nx\">handleCommandReceived<\/span><span class=\"p\">(<\/span><span class=\"nx\">context<\/span><span class=\"p\">,<\/span> <span class=\"nx\">message<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n <span class=\"c1\">\/\/ render your adaptive card for reply message<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"nx\">cardData<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"na\">title<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">MeowBot \ud83d\udc31 says<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">body<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Meow meow meow<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">image<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/placekitten.com\/500\/400<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"na\">imageAlt<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cat<\/span><span class=\"dl\">'<\/span>\r\n    <span class=\"p\">};<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"nx\">MessageBuilder<\/span><span class=\"p\">.<\/span><span class=\"nx\">attachAdaptiveCard<\/span><span class=\"p\">(<\/span><span class=\"nx\">helloWorldCard<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cardData<\/span><span class=\"p\">);<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\"><\/div>\n<\/div>\n<\/div>\n<p>And define the response message UI with the Adaptive Cards previewer in\u00a0<code>bot\/src\/adaptiveCards\/helloworldCommand.json<\/code>.<\/p>\n<p>Now, when a user sends a &#8220;Hi kitty&#8221; message to the bot, the bot will respond.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10631\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-1024x793.png\" alt=\"Screenshot of a bot responding to the command from a user on Teams client\" width=\"900\" height=\"697\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-1024x793.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-300x232.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-768x595.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-1536x1190.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/teams-client-command-2048x1586.png 2048w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<hr \/>\n<h2>\ud83d\udcec Expand Your Apps to Outlook and Office<\/h2>\n<p>More exciting news is that now your Teams apps can run on Outlook and Office!<\/p>\n<p>When you create a new app, the previous version of Toolkit only allowed you to choose one of the capabilities, however, with the new Toolkit, now you have more choices.<\/p>\n<p>To create an app that runs on other Microsoft 365 products, like Outlook and Office, choose one from the <strong>extended Teams apps across Microsoft 365. <\/strong>This will generate a scaffolding code with helpful code template and samples, either in JavaScript or TypeScript (whichever one you choose!).<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10626\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-1024x589.png\" alt=\"Screenshot of Teams Toolkit on VS Code showing the create menu\" width=\"900\" height=\"518\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-1024x589.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-300x173.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-768x442.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-1536x884.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-create-2048x1179.png 2048w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>The &#8220;F5&#8221; debug feature is your friend when you are testing out your code in VS Code, and now the debug profile in Teams Toolkit includes Outlook and Office, where you can simply select one and see your app running!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10628\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-1024x679.png\" alt=\"Screenshot of Teams Toolkit on VS Code showing the debug menu\" width=\"900\" height=\"597\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-1024x679.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-300x199.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-768x510.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-1536x1019.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-outlook-2048x1359.png 2048w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office.png\"><img decoding=\"async\" class=\"aligncenter wp-image-10627\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-1024x679.png\" alt=\"Screenshot of Teams and Outlook where the app is running\" width=\"900\" height=\"597\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-1024x679.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-300x199.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-768x510.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-1536x1019.png 1536w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2022\/05\/toolkitga-m365-f5-office-2048x1359.png 2048w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<hr \/>\n<h2>\ud83d\udce2 More updates for Teams development<\/h2>\n<p>There are more updates with Microsoft 365 and Teams app developments.<\/p>\n<h3>\ud83d\udcdc Teams SDK v2 &amp; Updated Manifest<\/h3>\n<p>Teams client SDK has been around for you to create tabs and task modules, and come with functionalities like tab configurations and theme detection, as well as authentication. Now it is upgraded to v2, and the latest version comes with functionalities to extend Teams app to run in Outlook and Office.<\/p>\n<p>The new Teams Toolkit utility also allows you to upgrade your existing apps that uses Teams-js SDK v1 to use the SDK v2, which updates imports &amp; API calls.<\/p>\n<p>Toolkit also revises a Teams manifest to the latest schema to support Office and Outlook.<\/p>\n<h3>\ud83d\uddbc Fluent UI Component Library for Tabs App<\/h3>\n<p>When creating a tab app (which is a web embed in Teams), you would want the UI for your app to look and feel like Teams.\nThe\u00a0<strong>Teams UI Component Library<\/strong>\u00a0is here to help with that.<\/p>\n<p><a href=\"https:\/\/github.com\/OfficeDev\/microsoft-teams-ui-component-library\">Teams UI Component Library<\/a>\u00a0is a UI library built on top of\u00a0<strong>Fluent UI React<\/strong>.\nFluent is Microsoft\u2019s design system that provides you with a set of UI libraries for all M365.<\/p>\n<p>And the base components library,\u00a0<a href=\"https:\/\/github.com\/microsoft\/fluentui\">Fluent UI React<\/a>\u00a0is now upgraded to v9, which supports design tokens and has major performance improvements \ud83c\udf89<\/p>\n<hr \/>\n<p>I hope you found the article useful to help you get started with your Teams app development with Teams Toolkit, especially if you are new to Teams app development! Please don&#8217;t hesitate to drop your comments and feedback here.\u00a0See you again at the next post \ud83d\udc4b<\/p>\n<h2>\ud83d\udcda Learn More<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.microsoft.com\/microsoftteams\/platform\/toolkit\/teams-toolkit-fundamentals?WT.mc_id=m365-66412-timura\">Teams Toolkit documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/microsoftteams\/platform\/get-started\/get-started-overview?WT.mc_id=m365-66412-timura\">Get started with Microsoft Teams platform<\/a><\/li>\n<\/ul>\n<h2>\ud83d\udce2 Shoutout<\/h2>\n<\/div>\n<div class=\"crayons-article__body text-styles spec__body\" data-article-id=\"1076803\"><span style=\"font-size: 1rem;\">A big hurrah to the Teams Toolkit engineering team! And, thank you, Yu Zhang, Zhidi Shang, John Miller, Zhenya Savchenko, and Pierce Boggan, for helping me write this article \u2764\ufe0f<\/span><\/div>\n<\/div>\n<div data-article-id=\"1076803\"><\/div>\n<div data-article-id=\"1076803\">Happy coding!<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Teams Toolkit for Visual Studio Code and the Teams Toolkit CLI are now generally available! And, for everyone building .NET web apps, Teams Toolkit for Visual Studio is available now in preview.<\/p>\n","protected":false},"author":77786,"featured_media":10746,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[8,128],"tags":[171,23,173,55,44],"class_list":["post-10614","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adaptive-cards","category-microsoft-teams","tag-bots","tag-teams-toolkit","tag-teams-toolkit-cli","tag-visual-studio","tag-visual-studio-code"],"acf":[],"blog_post_summary":"<p>Teams Toolkit for Visual Studio Code and the Teams Toolkit CLI are now generally available! And, for everyone building .NET web apps, Teams Toolkit for Visual Studio is available now in preview.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/10614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/77786"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=10614"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/10614\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/10746"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=10614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=10614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=10614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}