Skip to content

Mark reactions API as GA across Libraries and core#509

Merged
corinagum merged 3 commits into
mainfrom
cg/reactions-ga
May 14, 2026
Merged

Mark reactions API as GA across Libraries and core#509
corinagum merged 3 commits into
mainfrom
cg/reactions-ga

Conversation

@corinagum
Copy link
Copy Markdown
Collaborator

Summary

Removes the [Experimental("ExperimentalTeamsReactions")] attributes from ReactionClient, ReactionType, Reaction, and the Reactions property on ConversationApiClient/ConversationClient, across both Libraries/ and core/. Also removes the corresponding #pragma warning disable/restore blocks and NoWarn entries in test and sample .csproj files.

The reactions feature is in sync across all three SDKs and the Teams service — no longer preview.

Scope

Attributes removed (5):

  • Libraries/Microsoft.Teams.Api/Clients/ReactionClient.cs
  • Libraries/Microsoft.Teams.Api/Messages/Reaction.cs (ReactionType and Reaction)
  • core/src/Microsoft.Teams.Apps/Api/Clients/ReactionClient.cs
  • core/src/Microsoft.Teams.Apps/Api/Clients/ConversationApiClient.cs (Reactions property)

Suppressions removed (8 inline pragma locations + 5 NoWarn entries in .csproj files):

  • Libraries/Microsoft.Teams.Api/Clients/ConversationClient.cs (5 sites)
  • Libraries/Microsoft.Teams.Api/Messages/Message.cs
  • Libraries/Microsoft.Teams.Api/Activities/Message/MessageReactionActivity.cs (file-level)
  • core/src/Microsoft.Teams.Apps/Api/Clients/ConversationApiClient.cs
  • .csproj NoWarn: Samples/Samples.Reactions, core/test/IntegrationTests, core/samples/TeamsBot, Tests/Microsoft.Teams.Api.Tests, Tests/Microsoft.Teams.Apps.Tests

The Samples.Reactions/Program.cs already demonstrates add → wait → delete cycle, so no sample change is needed here.

Cross-SDK coordination

Part of the cross-SDK Reactions-GA pass. Sibling PRs:

  • microsoft/teams.ts — Mark reactions API as GA
  • microsoft/teams.py — Mark reactions API as GA
  • microsoft/teams-sdk — drop .NET opt-in tip from the reactions guide

Test plan

  • dotnet build Microsoft.Teams.sln --configuration Release — 0 errors
  • dotnet build core.slnx --configuration Release — 0 errors
  • dotnet test Microsoft.Teams.sln — all suites pass (Apps 146+146, Api 422, Common 63, AI 17, Graph 3, McpClient 9, AspNetCore 25+25 net8/net10)
  • dotnet test core.slnx — all suites pass (Apps.UnitTests 213+213, Core.UnitTests 101+101, BotBuilder.UnitTests 41)

Versioning

No version.json change in this PR. Bump happens as part of the release flow per RELEASE.md.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 14, 2026 19:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Marks the Reactions API as GA by removing experimental annotations and related warning suppressions across both Libraries/ and core/.

Changes:

  • Removed [Experimental("ExperimentalTeamsReactions")] attributes from reactions-related clients/types.
  • Removed #pragma warning disable/restore ExperimentalTeamsReactions blocks around reactions usages.
  • Removed ExperimentalTeamsReactions from NoWarn lists in affected test/sample projects.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
File Description
core/test/IntegrationTests/IntegrationTests.csproj Drops ExperimentalTeamsReactions from NoWarn now that reactions are GA.
core/src/Microsoft.Teams.Apps/Api/Clients/ReactionClient.cs Removes experimental attribute (and related import) from core ReactionClient.
core/src/Microsoft.Teams.Apps/Api/Clients/ConversationApiClient.cs Removes experimental attribute and pragma suppression around Reactions property initialization.
core/samples/TeamsBot/TeamsBot.csproj Drops ExperimentalTeamsReactions from NoWarn.
Tests/Microsoft.Teams.Apps.Tests/Microsoft.Teams.Apps.Tests.csproj Drops ExperimentalTeamsReactions from NoWarn.
Tests/Microsoft.Teams.Api.Tests/Microsoft.Teams.Api.Tests.csproj Drops ExperimentalTeamsReactions from NoWarn.
Samples/Samples.Reactions/Samples.Reactions.csproj Removes reactions experimental suppression from the sample project.
Libraries/Microsoft.Teams.Api/Messages/Reaction.cs Removes experimental attributes (and related import) from ReactionType and Reaction.
Libraries/Microsoft.Teams.Api/Messages/Message.cs Removes pragma suppression around Message.Reactions property.
Libraries/Microsoft.Teams.Api/Clients/ReactionClient.cs Removes experimental attribute (and related import) from library ReactionClient.
Libraries/Microsoft.Teams.Api/Clients/ConversationClient.cs Removes pragma suppressions around Reactions field and initialization in constructors.
Libraries/Microsoft.Teams.Api/Activities/Message/MessageReactionActivity.cs Removes file-level experimental warning suppression for message reaction activity APIs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

corinagum added a commit to microsoft/teams-sdk that referenced this pull request May 14, 2026
## Summary

Removes the `:::tip[.NET]` callout block from the reactions in-depth
guide's C# include. The block instructed readers to suppress
`ExperimentalTeamsReactions` via `#pragma` or `<NoWarn>` — that's no
longer applicable now that the `[Experimental]` attribute is being
removed from teams.net (sibling PR).

## Cross-SDK coordination

Part of the cross-SDK Reactions-GA pass. Sibling PRs:
- microsoft/teams.ts#575 — Mark reactions API as GA
- microsoft/teams.py#427 — Mark reactions API as GA
- microsoft/teams.net#509 — Mark reactions API as GA (Libraries + core)

## Test plan

- [x] `npm start` regenerates docs cleanly with no content gaps
- [x] C# in-depth guide renders without the opt-in callout (verified in
local dev server)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@corinagum corinagum merged commit a987b14 into main May 14, 2026
15 checks passed
@corinagum corinagum deleted the cg/reactions-ga branch May 14, 2026 20:51
corinagum added a commit that referenced this pull request May 15, 2026
## Summary

Brings `main` into `releases/v2` for the 2.0.7 Libraries release, with
quoted-replies (PR #389) excluded. Scope is **Legacy / Libraries only**
— `core/` is not in scope for this release.

Single squashed commit.

## What's in this release

- All commits merged to main since 2.0.6 (the previous Libraries
release), notably:
- **Reactions GA** (PR #509) —
`[Experimental("ExperimentalTeamsReactions")]` removed across Libraries
  - Prompt Preview Support (PR #433)
  - MCP server auth security hardening (PR #448)
  - Various dependency bumps and bug fixes

## What's NOT in this release

**Quoted-replies feature (PR #389) is excluded:**
- `MessageActivity.AddQuote()`, `PrependQuote()` builder methods —
absent
- `Context.Reply()` quote-aware behavior — reverted to legacy
`replyToId` + blockquote
- `Samples/Samples.Quoting` — removed
- QR-related tests — removed

**Kept intentionally:**
- `QuotedReplyEntity` and `QuotedReplyData` types stay in
`Microsoft.Teams.Api.Entities` (still annotated
`[Experimental("ExperimentalTeamsQuotedReplies")]`) so inbound
activities carrying `quotedReply` entities still parse
- `MessageActivity.AddTargetedMessageInfo` runtime strip-QR logic —
preserves prompt-preview cleanup
- Entity.cs serializer cases for `quotedReply` (with existing `#pragma
warning disable ExperimentalTeamsQuotedReplies`)

## Version

`version.json`: `2.0.6` → `2.0.7`

## Scope

**Libraries only.** `core/` (the `releases/core` track) is not affected
by this PR — when this prep merges to `releases/v2`, the `core/` tree
may appear in the branch as part of the merge, but the Legacy publish
pipeline only builds and ships from `Libraries/`, `Samples/`, and
`Tests/`.

## Test plan

- [x] `dotnet build Microsoft.Teams.sln --configuration Release` — 0
errors, 5 pre-existing warnings
- [x] `dotnet test Microsoft.Teams.sln --configuration Release` — all
suites pass across net8.0 and net10.0 (Api 407+407, Apps 136+136, Common
63+63, AI 17+17, McpClient 9+9, Graph 3+3, AspNetCore 25+25 with 1
pre-existing skip)
- [x] `dotnet pack` — nupkgs produced; consumer install verified (fresh
console project, `dotnet add package Microsoft.Teams.Apps --prerelease`,
`dotnet run` confirms `QuotedReplyEntity` ships,
`AddQuote`/`PrependQuote` absent, `AddTargetedMessageInfo` present,
`ReactionClient.AddAsync`/`DeleteAsync` present)
- [ ] Teams.NET-ESRP pipeline with `packageSet=Legacy`,
`publishType=Public` (post-merge)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants