This page is checked against
@amityco/ts-sdk package metadata and the TypeScript SDK source changelog in AmityTypescriptSDK/CHANGELOG.md.New ReleasesImprovements
🚀 New Features
Comment Approval for Communities
A community can now require review before a new comment is visible. While a comment is pending, only its author, the community’s reviewers, and network admins can see it. It stays out of public comment lists and comment counts until a reviewer approves it. See Comment Review.- Turn it on: set
needApprovalOnCommentCreationwhen you create or update the community. - Approval status:
comment.approvalStatusispending,approved, orrejected. - Create without a local copy:
CommentRepository.createComment(bundle, false)skips the local comment, so the comment you get back carries the server’s approval status. The default,true, keeps today’s behavior. - Review queue:
CommentRepository.getCommentReviewQueuereturns the community’s pending comments. Narrow it to one post or a date range. - Approve or decline:
CommentRepository.approveCommentanddeclineComment. Declining deletes the comment. The optionalreason(at most 250 characters) is kept for the moderation record only. - Permission: reviewers need
ReviewCommunityCommentPermission. - Editing while pending:
Client.getSocialSettings()returnsisAllowEditCommentWhenReviewingEnabled, which tells you whether an author may edit a pending comment. - Realtime: an approved comment appears as soon as it is approved, through the
comment.approvedevent. Subscribe withCommentRepository.onCommentApproved. A declined comment arrives as a deletion.
Curated Content
Fetch the posts selected for a topic configured in the Console, and build your own discovery surface around them. A pool is one bounded, ranked result with no pagination, and the SDK keeps the server’s order. See Topic-based Content Discovery.- Fetch a pool:
CuratedContentRepository.getPool(topicId, limit?)returns a promise of the pool: the topic plus its ranked posts.limitmust be between 1 and 100. - Analytics:
topic.analyticsprovidesmarkAsViewed(),markPostAsViewed(postId), andmarkPostClick(postId).
Pin Message in Live Channels
Pin one message in a live channel so it stays visible above the chat. Pinning a new message replaces the current pin. The server clears the pin when the message is deleted or its author is banned from the channel or globally. See Pin and Unpin Messages.- Pin and unpin:
MessageRepository.pinMessageandunpinMessage. - Read the pin:
channel.pinnedMessageholds the current pinned message, ornullwhen nothing is pinned. - Permission:
PinMessagePermission. Channel moderators, and livestream hosts and co-hosts, have it by default. - Realtime:
ChannelRepository.getChannelemits on every pin and unpin, driven by thechannel.messagePinnedandchannel.messageUnpinnedevents.ChannelRepository.onChannelMessagePinnedandonChannelMessageUnpinnedare also available as separate callbacks.
Local Event on Channel Creation
createChannel now fires a local channel.created event right after a successful create. A newly created channel appears immediately in a running ChannelRepository.getChannels query, instead of waiting for its first message.✨ Improvements
- Added
post.getLocalCommentCount(includePending). By default, the count leaves out the current user’s own comments that are still awaiting approval. Passtrueto include them.post.localCommentCountis now deprecated and equalsgetLocalCommentCount(true).
🐞 Bug Fixes
- Fixed a member’s channel role change (
channel.roleAdded/channel.roleRemoved) not updatingChannelRepository.getChannel, which could leave a stale pin permission. - Fixed a globally banned user’s session staying active when the realtime ban event was missed. The next API call now terminates the session and notifies
onClientBanned. - Fixed a deleted message’s text lingering in the channel list preview when the preview setting excludes deleted messages.
- Fixed
message.creator.avataralways resolving toundefinedeven though the type declared it.
🧩 Compatibility
Environment
Environment
Improvements
New ReleasesImprovements
🚀 New Features
v4 Sessions
MigratedloginWithAccessToken to v4 sessions.Skip Token Renewal for Banned Users
Token renewal is now skipped for globally banned users.🐞 Bug Fixes
- No longer builds a cache key from an id the payload left null.
- Capped the MQTT v5 session expiry at 1800s.
- Typed the video file metadata.
🧩 Compatibility
Environment
Environment
Improvements
New ReleasesImprovements
🚀 New Features
Report User with Reason
Added the ability to report a user with a reason.✨ Improvements
- Upgraded the MQTT client to protocol v5.
🐞 Bug Fixes
- Added an
excludeOwnEventsquery parameter to event queries. - Fixed the message preview not updating in real time on edit.
- Added
actorUserIdto co-host data.
🧩 Compatibility
Environment
Environment
Improvements
New Releases
🚀 New Features
For You Feed
Added a personalized For You feed. New APIs let you fetch the recommended feed and read its network-level setting, and the feed reports a “caught up” state once the user has seen all available recommendations.Notification Settings
Added APIs to read and update user notification settings.Chat Settings API
Added a chat settings API for configuring channel and messaging behavior.Channel Search Live Collection
Added a live collection for searching channels, so search results stay in sync as data changes.Enhanced User Blocking
A new API to list all users blocking the current user, a public auto-subscription enum, and a dedicated error code emitted when the maximum number of blocked users is reached.Shareable Link Configuration
Updated thegetShareableLinkConfiguration schema.🧩 Compatibility
Environment
Environment
New Releases
🚀 New Features
Visitor Daily Usage Limit
Added detection for the visitor daily read quota (100 req/day, error code400323 — ServerError.VISITOR_USAGE_LIMIT_EXCEEDED). The SDK detects this error in the Axios response interceptor and emits an visitorUsageLimitReached event. Subscribe via onVisitorUsageLimitReached(callback).🧩 Compatibility
Environment
Environment
New Releases
Improvements
Improvements
New Releases
🚀 New Features
Get All Blocked Users
IntroducegetAllBlockedUsers() on UserRepository — returns the full list of blocked users (up to 100) as a non-paginated, one-shot Promise<Amity.User[]> with a 5-minute TTL cache.Excluding Roles in Community Member Queries
AddexcludingRoles parameter to getMembers() and searchMembers() query params. Members holding any of the specified roles are excluded from the live collection result.🧩 Compatibility
Environment
Environment
New Releases
🚀 New Features
Live Thumbnail and Resolution in AmityRoom
AddliveThumbnailUrl, liveResolution, and recordedResolution fields to AmityRoom to expose server-generated thumbnail and stream resolution data.Link Detection in Comments
Add link detection support to comment create/update APIs, enabling automatic link parsing in comment text.Root Comment and Latest Comment ID in Query
AddrootId and latestCommentId fields to the comment query API for improved comment threading and navigation.Page Size for Get Comments
AddpageSize parameter to getComments API for more granular control over comment pagination.🐞 Bug Fixes
- Fixed posts going missing after paging REFRESH.
🧩 Compatibility
Environment
Environment
New Releases
🚀 New Features
Product Tagging in Posts
Introduce product tagging support in posts — tag products in post text via@ trigger and per-media. Includes product search and create/update post with product tags.Livestream Product Tagging
Introduce product management in livestream(Room) post — tag, pin, and remove products across broadcast phases.🧩 Compatibility
Environment
Environment
New Releases
New Releases
New Releases
New Releases
New Releases
New Releases
New Releases
🚀 New Features
Child stream
- Support child stream creation where a child stream can be linked to a parent stream.
Poll
- Added
unvotePoll()function, enables user to update poll answer.
Preview members
- Added
getPreviewMembers()onAmityChannel, enables access upto 4 members of converation and community channel.
🧩 Compatibility
Environment
Environment