Compatibility rows on this page are checked against the matching Android SDK Git tags in
Amity-Social-Cloud-SDK-Android. Pre-release alpha tags are not listed here unless promoted into the public SDK changelog.New ReleasesImprovements
🚀 New Features
GIF Comments
Comments can now carry a GIF from your GIF provider, with or without text. See GIF Comments.- Create or reply: pass an
AmityComment.Attachment.GIF(url, width, height)tocreateComment()…attachments(...).widthandheightare optional. A GIF-only comment needs no text. - Edit:
editComment(commentId).attachments(...)with a new GIF replaces it, and an empty list removes it while keeping the text. Leave attachments out to keep the GIF. - Read: a GIF comment reports
AmityComment.DataType.GIFand exposes the attachment’sgetUrl(),getWidth(), andgetHeight(). - Query:
AmityCommentDataTypeFilteracceptsGIFfor bothanyandexactmatching.
GIF Posts
Posts can now include GIF attachments, on their own or mixed with other media. See GIF Post.- Create: pass
AmityGif(url, width, height)as an attachment tocreateMixedAttachmentPost. A GIF post needs no text. - Edit: post edit accepts
AmityGifin the attachment list alongside images, videos, files, and audio. - Read: GIF child posts surface as
AmityPost.Data.GIF(withgetUrl(),getWidth(),getHeight(), andtoGif()) andAmityPost.DataType.GIF. A post with GIFs beside other media is a mixed post. - Feeds:
gifis a supported data type on feed queries, and community feeds include GIF posts.
🐞 Bug Fixes
- Fixed comment collections on the same post with different data type filters sharing one set of results.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.33.0
Improvements
🐞 Bug Fixes
- Fixed realtime events never connecting after an app updated from an older SDK version restored its existing session.
- Fixed realtime events staying disconnected for up to a few minutes after the device’s network came back, including when the app returns from the background. The SDK now reconnects as soon as network access is restored.
- Fixed live collections briefly reporting an empty, fully loaded list after a refresh (for example, member search showing “No results found” for a second or two) before the fetched results appeared.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.32.0
Improvements
✨ Improvements
login()andloginWithAccessToken()no longer send a separate user update request after login.
🚨 Compatibility Changes
- When the stored session token is still valid, logging in with a different
displayNameno longer updates the user’s display name on the server. To change a display name for an existing user, useAmityCoreClient.editUser().displayName(...).build().apply()instead.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.31.0
New Releases
🚀 New Features
Child Endangerment Report Reason
Users can now report posts, comments, messages, and users for child endangerment. The reason is available asAmityContentFlagReasonType.CHILD_ENDANGERMENT and as AmityContentFlagReason.ChildEndangerment, so it also appears in any picker built from AmityContentFlagReason.list(). See Content Flagging.🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.30.0
New ReleasesImprovements
🚀 New Features
Report Reasons with Details
Posts, comments, and messages can now be reported under any reason with an optional free-text detail. Previously, text could only be attached to the “Others” reason. See Content Flagging and Message Flagging.- New reason enum:
AmityContentFlagReasonTypelists the report reasons without payloads. - New calls:
flagPost(postId, reason, detail),flagComment(commentId, reason, detail), andflagMessage(messageId, reason, detail).detailis optional and is sent exactly as given. - Deprecated: the overloads that take
AmityContentFlagReason. They keep working and send the same request as before. The ID-only overloads are no longer deprecated.
Profile and Behavior User Reports
User reports are now split by what is being reported, and each can carry an optional comment. See Flag and Unflag User.- Report a profile field:
AmityUserRepository.flagUserProfile(userId, field, comment), wherefieldis anAmityUserProfileField(DISPLAY_NAME,DESCRIPTION,AVATAR). - Report behavior:
AmityUserRepository.flagUserBehavior(userId, reason, comment), with anAmityContentFlagReasonTypereason. - Comment limit: the comment is trimmed, left out when blank, and rejected with
IllegalArgumentExceptionwhen it is over 300 characters. - Check your own reports:
AmityUser.getUserFlagsByMe()returnsAmityUserFlagByMe, withisFlagByMeand oneAmityUserFlag(report type, reason, comment, created time) per report the current user filed. - Withdraw one report type:
unflagUser(userId, reportType)takes an optionalAmityUserReportTypeFilter. Without it, the call behaves as before. - Deprecated: the
flagUseroverloads that take a report type or reason.flagUser(userId)stays supported.
Sort Channels by Last Message
Channel queries can now be sorted by the newest message, so member joins, leaves, and bans no longer move a channel. See Query Channels.- Sort option:
sortBy(AmityChannelSortBy)on every channel query builder, withLAST_ACTIVITY(default) andLAST_MESSAGE.LAST_MESSAGEmust be enabled for your network; until it is, the query fails. - New field:
AmityChannel.getLastMessageAt()returns the time of the newest message, ornullif it is not available yet. Fall back togetCreatedAt()when it isnull.
Structured Network Activity
AmityCoreClient.observeNetworkActivities() now emits a transport-neutral AmityNetworkActivity record that covers more than HTTP responses. See Logging.- Activity types:
AmityNetworkActivityTypecovers API calls, uploads, downloads, media segments, images, MQTT messages, MQTT state changes, and stream state changes. - Payloads: request and response details (method, URL, status, headers, and captured bodies, decompressed and size-capped), MQTT topic and payload, or a state transition, plus timing (
durationMs,isInFlight). - Dropped records: when records are dropped under load,
droppedBeforeon the next record says how many were lost at that point.
✨ Improvements
- Added
AmityError.UNSAFE_CONTENT(400314), returned when content moderation blocks an image, andAmityError.USER_IS_GLOBAL_MUTED(400313). Both previously resolved toAmityError.UNKNOWN. createChannel()no longer requires adisplayName, so a direct conversation can be created without a placeholder name.- Sending a message now moves its channel to the top of the channel list right away, instead of waiting for the realtime event.
🐞 Bug Fixes
- Fixed the “Sexual content or nudity” report reason being sent with the wrong value, so those reports did not match the reason filter in the Console moderation feed.
- Fixed message edits, deletions, flags, and reactions moving a channel in a channel list sorted by last activity.
🚨 Compatibility Changes
observeNetworkActivities()now emitscom.amity.socialcloud.sdk.model.core.network.AmityNetworkActivity. The previouscom.ekoapp.ekosdk.internal.api.http.AmityNetworkActivity.HTTPtype, which wrapped an OkHttpResponse, has been removed. Update any code that reads network activity.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.29.0
New ReleasesImprovements
🚀 New Features
Module Entitlement Settings
Read which SDK modules your network is entitled to, so you can hide features that your plan does not include.- Fetch:
AmityCoreClient.getModuleSettings()returnsSingle<AmityModuleSettings>, with the enforcement mode (AmityModuleEnforcementMode:OFF,SHADOW,ENFORCE), the granted modules, and the catalog of every module and its prerequisites. - Read offline:
AmityCoreClient.getCachedModuleSettings()returns the last stored settings synchronously, ornullwhen none have been fetched yet (treat this as every module available). - Check a module:
AmityModuleSettings.availabilityOf(AmityModule)returnsAmityModuleAvailability.Available,NotGranted, orPrerequisiteUnavailable(with the unmet prerequisites). - Typed refusal: when enforcement is on, a call to a module the network does not own fails with
AmityModuleNotEntitledError(AmityError.MODULE_NOT_ENTITLED, 400325), which lists the missing modules.
🐞 Bug Fixes
- Fixed authenticated calls made immediately after login sometimes failing with “Please login to use SDK”.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.28.0
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:
isCommentReviewEnabled(true)onAmityCommunityCreator.BuilderorAmityCommunityUpdate.Builderwhen you create or update the community. Read it back withAmityCommunity.isCommentReviewEnabled(). - Approval status:
AmityComment.getApprovalStatus()returnsAmityCommentApprovalStatus(PENDING,APPROVED,REJECTED). - Create without a local copy:
.isOptimistic(false)on the comment creator builder 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:
AmityCommentRepository.getCommentReviewQueue(communityId)returns a builder for the community’s pending comments. Narrow it to one post or a date range with.post(postId),.startDate(),.endDate(), and.timeZone(). - Approve or decline:
AmityCommentRepository.approveComment(commentId)anddeclineComment(commentId, reason). Declining deletes the comment. The optionalreason(at most 250 characters) is kept for the moderation record only. - Permission: reviewers need
AmityPermission.REVIEW_COMMUNITY_COMMENT. - Editing while pending:
AmitySocialSettings.isAllowEditCommentWhenReviewingEnabled()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. 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:
AmityCoreClient.newCuratedContentRepository().getPool(topicId, limit)returnsSingle<AmityCuratedContentPool>.limitmust be between 1 and 100. - Analytics:
AmityCuratedContentTopic.analytics()providesmarkAsViewed(),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:
AmityMessageRepository.pinMessage(messageId)andunpinMessage(messageId). - Read the pin:
AmityChannel.getPinnedMessage()returns the currentAmityPinnedMessage, ornullwhen nothing is pinned. - Permission:
AmityPermission.PIN_MESSAGE. Channel moderators, and livestream hosts and co-hosts, have it by default. - Realtime: the channel
Flowableemits on every pin and unpin, driven by thechannel.messagePinnedandchannel.messageUnpinnedevents.
✨ Improvements
AmityPost.getLocalCommentCount()now takes an optionalincludePendingflag. By default, the count leaves out the current user’s own comments that are still awaiting approval. Passtrueto include them.
🐞 Bug Fixes
- Fixed
AmityRoomStatusfalling back toIDLEfor a room terminated by moderation. A terminated room now surfaces asAmityRoomStatus.TERMINATED. - Fixed a member’s channel role change (
channel.roleAdded/channel.roleRemoved) not reaching the client until the app was restarted, which could leave a stale pin permission.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.27.1
New ReleasesImprovements
🚀 New Features
Configurable Search Fields
Added an opt-insearchBy option to user search (and channel-member search) so you can restrict which fields the keyword is matched against.- New enum
AmitySearchUserBy(DISPLAY_NAME,PROFILE_HANDLE,USER_ID) incom.amity.socialcloud.sdk.model.core.search. - New builder method
AmityUserSearch.Builder.searchBy(List<AmitySearchUserBy>). - Omitting
searchBykeeps the existing default matching, so existing integrations are unaffected.
Video Rotation & Dimensions
Video rotation and dimensions are now exposed, andgetVideoUrl no longer hangs.Live Viewer Count Configuration
AddedgetLiveViewerCountConfig to AmityCoreClient.v4 Sessions
loginWithAccessToken now verifies the access token against v4 sessions and persists the caller’s user type from the login response.✨ Improvements
- Capped the MQTT v5 session expiry at 1800s.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.26.0
New ReleasesImprovements
🚀 New Features
Channel Moderation Permissions
Added theBAN_USER_FROM_CHANNEL and MUTE_USER_INSIDE_CHANNEL permissions for per-channel moderation.✨ Improvements
- Cleaned up the channel ban/mute permission set — retired unused names and added missing ones.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.25.0
New ReleasesImprovements
🚀 New Features
Event Posts
Added event-post support: an event shared to a community feed is delivered as a post (postdataType event), resolves through EventRepository, and renders alongside regular posts. event.isOriginPublic is exposed for visibility handling.🐞 Bug Fixes
- Fixed locally-created chat messages being assigned the wrong segment and missing their channel id.
- Fixed a failed send incorrectly determining the next message segment.
- Fixed the sender’s own message not being marked read on some paths.
- Removed unused RTMP dependencies that broke 16 KB page-size alignment.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.24.4
Improvements
🐞 Bug Fixes
- Improved real-time (MQTT) connection resilience: a transient failure on the first connect no longer stops real-time, and logout / token expiry now stops a client still retrying its first connect.
- Fixed session handling so a failed token renewal is recoverable and the session stays alive through renewal.
- Fixed chat-list message previews: previews now persist in step with their channel rows and fall back to the channel’s current row when a snapshot is missing.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.24.3
Improvements
🐞 Bug Fixes
- Fixed channel unread tracking to mark read against the channel id rather than the sub-channel id.
- Fixed the local read position being lost when
membership.readToSegmentis stale. - Excluded left and deleted channels from the channel unread total.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.24.2
New ReleasesImprovements
🚀 New Features
Report User with Reason
Added the ability to report a user with a report type, behavior reason, and comment, plus report/unflag actions on the user list.Exclude Own Events
Added anexcludeOwnEvents parameter to event queries so the current user’s own events can be filtered out.Event Target Community Avatar
Added the community avatar to an event’s target community.✨ Improvements
- Migrated the MQTT client from protocol v3 to v5.
- Removed the transitive
AD_IDpermission from the FCM push module.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.24.0
New ReleasesImprovements
🚀 New Features
For You Feed
Added the personalized For You feed. Query it withAmitySocialClient.newFeedRepository().getForYouFeed() (a live collection), and the network setting via AmityCoreClient.getForYouFeedSetting(). When the feature is not enabled for the network, the collection surfaces the typed AmityForYouFeedDisabledError.Bidirectional Block Visibility
Added the reverse direction of the blocking model:getBlockingUsers() (live collection) and getAllBlockingUsers() (one-shot list) return the users who have blocked the current user. Blocking a user when already at the per-network cap now returns the typed MAX_BLOCKED_USERS_REACHED error.Chat Search
AddedsearchChannels and searchMessages to AmityChannelRepository for searching across channels and messages.Channel Archiving
AddedarchiveChannel, unarchiveChannel, and getArchivedChannelIds to AmityChannelRepository, backed by a new local table for reactive archive/unarchive updates.Typed Shareable Links
Added a typed shareable-link API usingAmitySharableContentType, so links can be generated for a content type without relying on raw pattern keys.Channel Notification Mode
AddednotificationMode support to the channel update API.✨ Improvements
- Improved chat message loading and reload performance.
🐞 Bug Fixes
- Fixed community member permissions not updating.
- Fixed group member additions not reflecting in the member list.
- Fixed nested room moderation not being parsed or persisted from the room payload.
- Fixed queued message jobs never failing while offline — they now fail immediately.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.23.0
New ReleasesImprovements
🚀 New Features
invalidateCache for Feed Queries
Added invalidateCache(true) option to AmityFeedRepository.getCommunityFeed() and AmityPostRepository.getPosts() queries. When set, the cache is cleared before the first page fetch so the live collection starts from fresh server data.Community Tag Filtering
Addedtags filter to getCommunities() queries. Pass a list of tags to narrow results to communities matching all specified tags.Visitor Daily Usage Limit
Added detection for the visitor daily read quota (100 req/day, error code400323). When a visitor exceeds this limit, the SDK detects the error in the global interceptor and emits an event via AmityCoreClient.getVisitorUsageLimitEvents(): Flowable<AmityVisitorUsageLimitEvent>.🐞 Bug Fixes
- Fixed event post local filtering by adding
eventIdto post objects. - Fixed SQLCipher incompatibility with Room 2.8.1 by upgrading SQLCipher from 4.6.1 to 4.9.0.
- Fixed malformed XML in community and global post list menu resource files.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.22.1
Improvements
Improvements
New ReleasesImprovements
🚀 New Features
Raised Compile and Target SDK to 36
BumpcompileSdkVersion and targetSdkVersion to 36 to support the latest Android platform APIs.🐞 Bug Fixes
- Fixed an MQTT reconnect loop that prevented the client from properly exiting the reconnection cycle.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.19.3
Improvements
Improvements
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
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.18.0
New Releases
🚀 New Features
Product Tagging in Posts
IntroduceAmityProduct and AmityProductTag models with product search API, enabling users to tag up to 20 products per post via text mentions and per-media tags. Supports creating and updating posts with product tags.Livestream Product Tagging
Introduce product management APIs for livestream(Room) post — tag, pin, and remove products across all broadcast phases.🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.17.1
New Releases
🚀 New Features
Get All Blocked Users
IntroducegetAllBlockedUsers() on AmityUserRepository — returns the full list of blocked users (up to 100) as a non-paginated, one-shot Single<List<AmityUser>> with a 5-minute TTL cache.Excluding Roles in Community Member Queries
AddexcludingRoles parameter to AmityCommunityMembershipQuery.Builder and AmityCommunityMemberSearch.Builder. Members holding any of the specified roles are excluded from the live collection result.Time-Bounded Post Pagination
AdduntilAt parameter to getPosts, getCommunityFeed, and getUserFeed query builders. When provided, the SDK stops fetching and collecting posts beyond the given datetime boundary.🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.16.0
New Releases
🚀 New Features
Authentication
Introduce an ability to login with a pre-fetchedaccessToken.Comment Count
Introduce a local calculated comment count based on incoming real-time events.Community Post Query by Tags
Introduce an ability to community posts with matching tags.Livestream Analytics
IntroduceAmityRoomAnalytics for the purpose of tracking watch minute.🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.15.0
New Releases
New Releases
🚀 New Features
Mixed Attachments Post
- Support
mixedstructure post where a post can contains multiple datatypes such as image, video, file, and audio.
Audio Content Support
- Support audio file upload.
- Introduce
audiodataType for post.
🚨 Compatibility Changes
Support 16 KB page sizes
- Kotlin version upgrade to 2.2.0
- Bumped minSDKVersion to 24
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.11.0
New Releases
New Releases
New Releases
New Releases
🚀 New Features
Hashtag
- Support adding hashtag to a post.
- Support post search by hashtag.
User feed
- Support new sources of posts on user feed.
feedSourcescan be selected on user feed query.
Post title
- Support optional
titleon post creation.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies
📘 API Reference — 7.7.0
New Releases
🚀 New Features
Clip Post
- Added
AmityFileRepository.uploadClip()— upload short video clips. - Added
AmityPostRepository.createClipPost()— create a post containing a clip. - Added
dataTypesparameter togetGlobalFeed()for filtering feed content types.
Livestream Chat & Reaction
- Added
createLiveChannel(streamId)— create a Live channel by Stream ID. - Added
createLiveReaction()— send live reactions during livestreams.
🧩 Compatibility
Android SDK
Android SDK
Dependencies
Dependencies