Skip to main content
Preview members are a small set of members attached to a channel object for compact UI surfaces such as channel rows, headers, and avatar stacks. In the current public SDKs, direct channel-level preview members are exposed by TypeScript and iOS. Android and Flutter do not expose a direct previewMembers channel property, so use Query Channel Members and render the first few results when you need the same UI pattern.

Platform Surface

PlatformDirect preview member surfaceNotes
TypeScriptchannel.previewMembersPopulated on conversation and community channels from cached channel members, up to 4 members.
iOSchannel.previewMembersReturns up to 4 members for conversation and enabled community channel previews.
AndroidNot exposed on AmityChannelQuery channel members and render the first few results.
FlutterNot exposed on AmityChannelQuery channel members and render the first few results.

Parameters

OperationParameterRequiredDescription
Read preview memberschannelIdYesChannel ID to fetch before reading preview members.
Read preview memberspreviewMembersRead-onlyLightweight member list exposed on supported channel objects.
Fallback preview querychannelIdYesChannel ID whose members should be queried for preview rendering.
Fallback preview queryfilterNoMembership filter for the member query.
Fallback preview queryincludeDeletedNoWhether deleted users should be included in the fallback member query.
Fallback preview querysortByNoMember ordering for the fallback preview list.
Fallback preview querylimit / page sizeNoSmall page size for avatar stacks or compact participant previews.

Read Preview Members

Fetch or observe the channel first, then read the preview members from the returned channel object.
Android and Flutter do not expose a direct channel-level previewMembers property. Query channel members and render a small first page when you need avatar-stack style previews.
import { ChannelRepository } from '@amityco/ts-sdk';

const unsubscribe = ChannelRepository.getChannel(
  channelId,
  ({ data: channel, loading, error }) => {
    if (error) handleError(error);

    if (!loading && channel) {
      renderResults(channel.previewMembers);
    }
  },
);

unsubscribe();
var token: AmityNotificationToken?

token = channelRepository.getChannel(channelId).observe { liveObject, error in
    if let error {
        handleError(error)
        return
    }

    guard let channel = liveObject.snapshot else { return }

    let previewMembers = channel.previewMembers
    showSuccessMessage(previewMembers.count)
}

Fallback Preview Query

Use this approach on Android and Flutter, or anywhere you need filtering that the channel-level preview does not provide.
val disposable = AmityChatClient.newChannelRepository()
    .membership(channelId = channelId)
    .getMembers()
    .filter(filter = AmityChannelMembershipFilter.ALL)
    .includeDeleted(includeDeleted = false)
    .sortBy(sortOption = AmityChannelMembershipSortOption.LAST_CREATED)
    .build()
    .query()
    .subscribe(
        { members: PagingData<AmityChannelMember> -> showSuccessMessage(members) },
        { error -> handleGeneralError(error) },
    )
final controller = PagingController<AmityChannelMember>(
  pageFuture: (token) => AmityChatClient.newChannelRepository()
      .membership(channelId)
      .getMembers()
      .filter(AmityChannelMembershipFilter.ALL)
      .includeDeleted(false)
      .sortBy(AmityMembershipSortOption.LAST_CREATED)
      .getPagingData(token: token, limit: 4),
  pageSize: 4,
);

controller.fetchNextPage();

Get Channels

Load the channel object that carries preview members on supported platforms.

Query Members

Retrieve paginated members for full member lists and fallback previews.

Message Preview

Display latest-message previews beside member preview UI.

Query Channels

Build channel lists that use preview members in row layouts.