\n\n
Great question Saeed! The good thing is most of the tools and SDKs we have at our disposal are language agnostic or come in various language & platform flavors. Since you asked about extending Microsoft Teams & Microsoft 365 Copilot, my first choice would be TypeScript as the language because you can use it both server-side & client-side (that's what I use in 90% of my projects).
\nFor the UX side of a Teams app, I'm partial to React for 2 reasons:
\nFor APIs you'd use to create actions for Copilot Agents to call, or for processes you'd use to implement Microsoft Graph Connectors, you can use TypeScript or C#... whichever is your choice.
\nPython is popular, and you can't go wrong, but most of the samples you see from Microsoft favor TypeScript & C#, so you'll probably have less you need to research if you go that route.
\nAre you aware of the breaking change in Q3 2024 that impacted many PnP libraries and tools? Previously, these tools & libraries used a shared Microsoft Entra ID application, but in September 2024, Microsoft removed this shared app. Now, you have to create your own Entra ID application. You can learn more about the change and how to do it from the PnP PowerShell docs and the announcement from August 2024.
\nWith that being said, I'm not a fan of using the list schema XML files for creating lists. I know it works, but they're incredibly complicated to build, test, debug, and update. This makes the development & deployment experience so poor & inefficient, my preference is to create lists using the SharePoint REST API. In my experience, I spend less time implementing this approach than I do getting list schema XML files to work. I do this as a first-run experience with SPFx Web Parts or extensions.
\nWhen I've had the exact need you pose in your question, I have a web part of the extension on the page that checks if the list is present. If not, it displays a prompt to create the list, making sure the current user has permission to do it.
\nWhat about you? Do you have a question that I could feature in an upcoming newsletter? Hit reply and ask away! |
\n \n \n
|
The Microsoft Teams Toolkit (TTK) includes an Azure Function project by default in its React with Fluent UI template.
\nHowever, with the upcoming general availability of Nested App Authentication, many Microsoft Graph-focused apps will no longer need Azure Functions.
\nIn my most recent office hours session from December, Bill B., one of the attendees, asked how to fully remove the Azure Function. This week’s article does just that!
\nThis week, my article guides developers through the process of removing unused Azure Function components from their Teams tab projects, resulting in a cleaner, more maintainable codebase.
\nThe removal process involves several key steps:
\nBy following this guide, developers can streamline their Teams projects by eliminating unnecessary Azure Function components, reducing complexity and potential maintenance overhead. This optimization is particularly relevant for applications that primarily interact with Microsoft Graph and don’t require additional backend services.
\nInterested to learn more? That’s what this week’s article is about!
\nKeep Reading (11 minutes) ↗️ |
\n \n \n
|
🧰 Announcing the Office Add-ins Development Kit GA - Set up your environment, create Office Add-ins, debug the code, and view more samples with the Office Add-ins Dev Kit for Visual Studio Code. -by Microsoft 365 Developer Blog
\n🤖 Preview the GitHub Copilot extension for Teams Toolkit - Introducing the GitHub Copilot for Teams Toolkit—your companion in Visual Studio Code, Visual Studio, and GitHub. -by Microsoft 365 Developer Blog
\n💦 Compute scaling in Azure Fluid Relay - This article discusses how Azure Fluid Relay (AFR) implements autoscaling using Azure Kubernetes Service (AKS) to handle varying traffic loads, with a detailed exploration of how they configured Horizontal Pod Autoscaler (HPA) and Cluster Autoscaler (CA) to optimize compute capacity and cost efficiency. -by Microsoft 365 Developer Blog
\n📦 M365Advocacy.Teams.Templates v0.7 - Microsoft Teams project templates for .NET projects. -by Microsoft 365 Developer Advocacy
\n📦 Microsoft’s Dev Proxy v0.24 beta 2 - Added support for generating OpenAPI description documents in YAML (vs JSON). -by microsoft/dev-proxy
\n🔎 Search SharePoint and OneDrive files in natural language with OpenAI function calling and Microsoft Graph Search API - The article explains that while many Microsoft 365 apps now offer “chat with documents” features using LLMs and vector databases, sometimes a simple keyword search using Microsoft’s built-in search indexes through Graph Search API or SharePoint Search REST API can be more practical since the indexing is already handled by the service. -by Vardhaman Deshpande (MVP)
\n🔁 Rename the first channel in Teams using the Microsoft Graph API - Learn how to rename the default ‘General’ channel in Microsoft Teams programmatically using the new firstChannelName property in Microsoft Graph API. -by Jarbas Horst (MVP)
\n🤖 AI Builder Custom Prompts: Costs and Calculations - Custom prompts are a great feature within the Power Platform, but how much are they really costing us? -by Dan Finan
\n💪 Microsoft Graph Bicep Extension: Steamline Entra ID resource management with MS Graph Bicep - I found this great article about Microsoft’s Graph extension for Bicep that explains how you can now manage Entra ID (Azure AD) resources like groups, apps, and service principals using infrastructure as code, instead of having to manually configure everything or write scripts. The guide walks through everything from basic setup to advanced usage with practical examples. -by Christos Galanopoulos
\n🚀 State of JavaScript 2024 - The results are in from the latest State of JavaScript survey! -by State of JavaScript 2024 Survey
\n🪟 React 19 introduces full support for custom elements - Explore how React 19’s full support for custom elements improves integration with Web Components -by Aleks Elkin
\n\n \n \n
|
📄 How To Remove Azure Functions from React Tab TTK Projects
\n📄 Reflecting Back on 2024 and Looking Forward to 2025
\n\n \n \n
|
No Such Podcast: “Future Possibilities: Data, Hardware, Software, and People” by Rear Admiral Grace Hopper: Part 1 & Part 2
\nRear Admiral Grace Hopper was an American computer scientist, mathematician, and United States Navy Rear Admiral. She was a pioneer of computer programming, and among her accomplishments, Hopper was the first to devise the theory of machine-independent programming languages. She was posthumously awarded the Presidential Medal of Freedom – the nation’s highest civilian honor – in 2016. In 1982, she delivered a lecture at NSA entitled, “Future Possibilities: Data, Hardware, Software, and People.” Her insights on leadership and her prescient predictions still hold weight today, more than forty years later. This is a two-part episode of the full lecture by No Such Podcast, the official NSA podcast!
\n\n \n \n
|
📰 Reflecting ⬅️ Back on 2024 and Looking ➡️ Forward to 2025
\n📰 Microsoft 365 Full-Stack Developer’s Recap to Ignite 2024
\n📰 Ignite 2024 Developer Highlights: Declarative Agents, Agents SDK, Azure AI Foundry & More!
\n\n","recentPosts":[{"id":8432647,"title":"🎉 Voitanos' new website, 🧰 Microsoft Developer Program Tenants, 💬 Reader Question, and 📰 News","slug":"voitanos-new-website-microsoft-developer-program-tenants-reader-question-and-news","status":"published","readingTime":5,"campaignCompletedAt":"2025-03-18T15:05:26.000Z","publishedAt":"2025-03-18T15:05:26.000Z","orderByDate":"2025-03-18T15:05:26.000Z","timeAgo":"7 days","thumbnailUrl":"https://embed.filekitcdn.com/e/sxVXYZfPgzAM2JBx2TvJdt/9PVdKNLfQgdgqyz7xfauuK","thumbnailAlt":"Have you seen the new Voitanos website? It's a HUGE update!","path":"posts/voitanos-new-website-microsoft-developer-program-tenants-reader-question-and-news","url":"https://newsletter.voitanos.io/posts/voitanos-new-website-microsoft-developer-program-tenants-reader-question-and-news","isPaid":null,"introContent":"🎉 I’m thrilled to unveil the new Voitanos website, marking the second wave of my comprehensive rebranding initiative that's part of Voitanos 2.0. This journey began last year when I recognized the need to evolve Voitanos beyond its original framework, which I had largely developed single-handedly since our inception in 2016. Inspired by industry peers, I collaborated with a branding expert to redefine Voitanos' brand identity, leading to the introduction of our new logo and visual elements in...","campaignId":18698286,"publicationId":15255945,"metaDescription":"Learn about Voitanos' new website redesign - part of a major rebranding initiative, marking the 2nd wave of changes to better serve M365 devs!"},{"id":8316673,"title":"☠️ Microsoft 365 Dev Tenants - A Paid Model Could Save 🛟 Them!","slug":"microsoft-365-dev-tenants-a-paid-model-could-save-them","status":"published","readingTime":3,"campaignCompletedAt":"2025-03-04T16:05:30.000Z","publishedAt":"2025-03-04T16:05:30.000Z","orderByDate":"2025-03-04T16:05:30.000Z","timeAgo":"21 days","thumbnailUrl":"https://embed.filekitcdn.com/e/sxVXYZfPgzAM2JBx2TvJdt/ja9xVf4yaKWmbtyw3NFKfx","thumbnailAlt":"Microsoft halted free 365 developer tenants in January 2024, leaving devs stuck. Should they offer a paid option? Explore a proposal to bring them back securely.","path":"posts/microsoft-365-dev-tenants-a-paid-model-could-save-them","url":"https://newsletter.voitanos.io/posts/microsoft-365-dev-tenants-a-paid-model-could-save-them","isPaid":null,"introContent":"Microsoft has been silent on the fate of the Microsoft 365 Developer Program and its free developer tenants, leaving developers in limbo. After stopping new tenant creations in early 2024 due to a security breach, Microsoft initially promised availability until late 2024 or early 2025. Now, as Q1 2025 nears its end, there’s still no update—raising concerns about Microsoft’s commitment to the developer ecosystem. Without access to reliable testing environments, building solutions for Microsoft...","campaignId":18560196,"publicationId":15116781,"metaDescription":"Microsoft halted free 365 developer tenants in January 2024, leaving devs stuck. Should they offer a paid option? Explore a proposal to bring them bac"},{"id":8171036,"title":"SharePoint Framework Project Upgrades and Versioning Guidance","slug":"sharepoint-framework-project-upgrades-and-versioning-guidance","status":"published","readingTime":3,"campaignCompletedAt":"2025-02-18T16:05:21.000Z","publishedAt":"2025-02-18T16:05:21.000Z","orderByDate":"2025-02-18T16:05:21.000Z","timeAgo":"about 1 month","thumbnailUrl":"https://embed.filekitcdn.com/e/sxVXYZfPgzAM2JBx2TvJdt/nheY4C57w7mbj5MyShx3iA","thumbnailAlt":"","path":"posts/sharepoint-framework-project-upgrades-and-versioning-guidance","url":"https://newsletter.voitanos.io/posts/sharepoint-framework-project-upgrades-and-versioning-guidance","isPaid":null,"introContent":"Managing upgrades and versioning in the SharePoint Framework (SPFx) can be tricky, but understanding the process ensures smooth deployments. Interestingly, I’ve seen this question pop up a few times recently, from my panel at the European SharePoint Conference (ESPC) 2024 in Stockholm Sweden, to students in my Mastering the SharePoint Framework course, to just this week during an office hours session in my SharePoint Framework Development Accelerator program The package-solution.json file is...","campaignId":18384778,"publicationId":14940643,"metaDescription":""}],"newsletter":{"formId":4014116,"productId":null,"productUrl":null,"featuredPostId":null,"subscribersOnly":true},"isPaidSubscriber":false,"isSubscriber":false,"originUrl":"https://newsletter.voitanos.io/posts/reader-questions-removing-azure-functions-from-react-based-ttk-tab-projects","creatorProfileName":"The Full Stack Dev's Microsoft 365 Playbook","creatorProfileId":1077262}Reader Questions & Removing Azure Functions from React-Based TTK Tab Projects
Over the last few weeks, I've received a handful of reader questions. One of my professional goals for 2025 is to better serve YOU, full-stack web developers in the Microsoft 365 ecosystem. So, in this first newsletter, I'm going to do that two ways. First, I love answering reader questions but I don't like 1:1 discussions as the question & answer could help others. So in this week's installment, I'm going to kick off a new segment: Questions from the Reader Mailbag where I'll answer your...
Andrew, a 20-year recipient of Microsoft's MVP award, scours Microsoft & community resources every week so YOU DON'T HAVE TO. Save time & stay informed - get the Microsoft 365 developers need + my insights and guidance on a trending topic. Subscribe to my bi-weekly newsletter & join 10,000+ fellow M365 developers! No clickbait · 100% free · unsubscribe anytime.
This post is free to read but only available to subscribers.
Join today to get access to all of my posts.