Skip to content

Releases: Salesforce-Async-Messaging/messaging-in-app-android

1.10.2

07 Jan 19:04
1.10.2
6468c47

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

This release implements comprehensive accessibility improvements for keyboard navigation across the Android SDK UI components. The changes introduce proper focus traversal handling, accessible focus indicators, and keyboard navigation enhancements for various UI elements including buttons, input fields, search panels, and pre-chat forms.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

API Changes

  • Added a new branding token smi_keyboard_focus for customizing the focus indicator color for keyboard navigation.

Bug Fixes

  • Accessibility - Fixed an accessibility bug where non-interactive elements had a Double Tap to Activate screen reader announcement.
  • Accessibility - Improved keyboard focus traversal and navigation in search, conversation options page, and pre-chat forms.
  • Accessibility - Focus indicator ripple now appears when using keyboard navigation.
  • Accessibility - Fixed focus handling in ActionButton components.
  • Accessibility - Added an accessible focus indicator to the search panel.
  • Accessibility - Logical grouping for search results.
  • Accessibility - Fixed an issue where the End Chat button in the conversation options page was inaccessible through keyboard navigation.

Known Issues

Notes

1.10.1

05 Nov 14:44
d6efff2

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

  • Added the ability to send context events to AgentForce Agents.

API Changes

  • Added an API to the ConversationClient for sending Context Events to an AgentForce Agent when sending a message. See: fun setSessionContext(sessionContext: EntryPayload.SessionContextPayload?)

Bug Fixes

Known Issues

Notes

Release 1.10.0 (#48)

28 Oct 17:27
7c9f2d2

Choose a tag to compare

Major Release: Messaging for In-App (Android)

This release delivers major updates to attachment tracking, user verification, session management, and interactive conversation features. These changes provide developers with more control, better real-time feedback, and enhanced flexibility for custom experiences.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

  • Added support for attachment upload status updates through MessageUpdated events, allowing real-time tracking of attachment uploads with states: Pending, Completed, and Error.

  • Added detailed error handling for attachment uploads with specific error types: StorageLimitExceeded, AttachmentTooLarge, AttachmentNotFound, AttachmentUploadNotEnabled, AttachmentUploadNotAllowed, and InternalServerError.

  • Added a new User Verification type UserVerificationType.Passthrough, which can be used with Salesforce OAuth authentication to provide a token to the Core SDK.

  • Added support for displaying the end user's queue position.

  • Added support for SessionStatusChanged events to track conversation session states (Active, Ended, Waiting, New, Consent, Inactive, Error, and Paused).

  • Added the ability to close conversations programmatically through the Core SDK.

  • Added ExperimentalConfiguration class to switch capabilities based on feature flags.

API Changes

  • Added EntryPayload.MessageUpdatedPayload to support asynchronous updates to messages, particularly for attachment upload status tracking.

  • Added AttachmentUploadResult sealed interface with three implementations: Completed, Pending, and Error to represent different states of attachment uploads.

  • Added UserVerificationType.Passthrough for providing a passthrough UserVerificationToken.

  • Added coreClient.salesforceAuthenticationRequestPath: String helper for assisting with making the request to core via the Salesforce Mobile SDK.

  • Added EntryPayload.SessionStatusChangedPayload to track session status changes.

  • Added allowedFileTypes property to the AttachmentConfiguration object to allow customizing file attachment handling and errors.

  • Added AllowedFileTypes object for customizing image, video, audio, text, and "other" file attachment types by file extension. (An empty list is considered disabled; customization affects displayed error messages and attachment menu items).

  • Added an API for manually closing the conversation. suspend fun closeConversation(conversationId: UUID): Result<Unit>

  • Added the conversation closed overrideable ViewComponent, which is displayed when the conversation has ended/closed @Composable fun ConversationClosed(content: @Composable () -> Unit): Unit

Bug Fixes

  • Fixes an issue where the last entry in the chat feed can miss sending a read acknowledgement. Affects the "read" status on the agent's chat feed as well as Conversation.unreadMessageCount.

  • Fixes a case where navigating from the options page to the chat feed could result in a permanent loading state.

  • Fixed a branding token bug by adding proper border styling to end chat confirmation dialog buttons.

  • Fixed the PDF rendering showing a transparent background, which mostly caused issues with some PDFs in dark mode.

  • Fixed a crash when rendering markdown formatted text: java.lang.IndexOutOfBoundsException: setSpan (x ... y) ends beyond length y

Known Issues

Notes

Dependency Updates:

  • OkHttp to version 5.2.1

  • Android Compose BOM to version 2025.10.00

  • Android Room to version 2.8.2

  • sqlCipher to version 4.11.0

1.9.2

02 Sep 11:19
341c729

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

This release focuses on bug fixes and improving the overall stability of the Messaging for In-App (Android) SDK.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

Bug Fixes

  • Fixes an issue where unknown sender role types may not be rendered in the UI.

Known Issues

Fixed an issue that caused NavEntries that were instantiated using single top to never go beyond CREATED in their Lifecycle.State. (I043ba, b/421095236)

1.9.1

08 Jul 11:44
4f4fc52

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

This release focuses on introducing new ASA features, refining the developer API for enhanced functionality, and improving the overall accessibility and stability of the Messaging for In-App (Android) SDK.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

  • Improved the animations when a streaming token invalidation occurs
  • Added labels to indicate when a streaming token invalidation occurs and when the resulting message has been "revised"
  • Made message bubbles take up the full width of the chat feed to better use the available real estate.

API Changes

  • Added the following branding tokens:
    • smi_message_search_highlight_border_agent - Highlighted border color for agent
    • smi_message_search_highlight_border_user - Highlighted border color for user
    • smi_message_search_input_bar - Search input bar color
    • smi_message_search_input_background - Search input bar background color
    • smi_message_search_input_placeholder - Search input bar placeholder color
    • smi_message_search_history_header - Message search history header color
    • smi_message_search_history_text - Message search history text color
    • smi_message_search_history_dismiss - Message search history dismiss color
    • smi_message_search_result_text - Message search result text color
    • smi_message_search_result_timestamp - Message search result timestamp color
    • smi_message_search_empty_header - Message search header when the empty state is shown
    • smi_message_search_empty_text - Message search text when the empty state is shown
    • smi_message_search_empty_icon - Message search icon when the empty state is shown
    • smi_message_search_avatar_icon_background - Message search avatar icon background
    • smi_message_search_avatar_icon_foreground - Message search avatar icon foreground
    • smi_message_search_url_text - Hyperlink text color in message search screen

Bug Fixes

  • Fixed an issue with displaying a SecureForm when an image is set
  • Fixed a proguard rule when using a configFile in minified builds
  • Fixed a crash that can occur when reconnecting to the SSE stream many times on the same coreClient instance

Known Issues

Notes

1.8.1

08 Jul 11:41
02cc8f5

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

Enhance the Messaging for In-App experience with the new Messaging for In-App features. Improve the user experience by auto-populating the pre-chat form fields, selecting the preferred browser type for opening rich links, and much more.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

API Changes

Bug Fixes

  • Fixed a crash that can occur when reconnecting to the SSE stream many times on the same coreClient instance

Known Issues

  • URI links are not automatically parsed from a block of plain text. This is a platform difference between iOS and Android. There are two main workarounds for this:
    1. Use an explicit link message type (richlink or webview messaging component)
    2. Use the new markdown support to provide the link [link](mydeeplink://path)

Notes

1.8.0

08 Jul 11:39
2b240cd

Choose a tag to compare

Major Release: Messaging for In-App (Android)

Enhance the Messaging for In-App experience with the new Messaging for In-App features. Improve the user experience by auto-populating the pre-chat form fields, selecting the preferred browser type for opening rich links, and much more.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

  • Added the ability to end the current session on a conversation.
  • Added displaying a configured fallback message when entering the conversation.
  • Added markdown support to inbound text messages.
  • Added a new UI experience for typing indicators.
  • Added an optional opt out flag for the agent experience of the new typing indicator UI to distinguish between humans and bots.
  • Added support for AgentForce bot progress updates to manage end user's expectation for loading response time.
  • Added support for sending and receiving several new file types including CSV, XML, TXT, WORD files and Excel spreadsheets.
  • Added support for streaming AgentForce text messages. Allows the end user to receive messages as they are being generated in real-time.

API Changes

  • Added conversationClient.endSession(). This call will end the session on the conversation.
  • Added the FallbackMessage configuration to the RemoteConfiguration object.
  • Added the Participant.roleType field of type ParticipantRoleType (Enum) to replace the Participant.role String?. Possible enum values are: Agent, Chatbot, EndUser, System, Unknown, Supervisor, Router;
  • Deprecated Participant.role. Use the roleType Enum instead.
  • Added a new configuration object UIConfiguration.agentConfiguration with an option to opt out of the new progress indicator experience for agents.

Bug Fixes

  • Fixed an issue where calling CoreClient.clearStorage() could lead to unexpected results if CoreClient.Factory.destroy() was not also called.
  • Fixed an issue where providing a limit of 0 on any conversation/conversation entry list API would return 0 results from the database. Providing a limit of 0 will query the database with a limit of -1 instead.
  • Fixed a crash when using deep links (custom scheme) in a enhanced link messaging component.
  • Fixed an issue where deep links were not rendering for some message types.
  • Fixed an issue where PDF pager background in dark mode was making the content hard to read.
  • Fixed an issue where re-registering for push notifications would have no affect until the app was restarted.

Known Issues

  • URI links are not automatically parsed from a block of plain text. This is a platform difference between iOS and Android. There are two main workarounds for this:
  1. Use an explicit link message type (richlink or webview messaging component)
  2. Use the new markdown support to provide the link [link](mydeeplink://path)

Notes

  • Updated Android Compose BOM to 2025.01.01 / 1.7.7 (strictly >= 1.7.0 < 1.8.0)

1.9.0

08 May 16:26
fa3094f

Choose a tag to compare

Major Release: Messaging for In-App (Android)

This release focuses on introducing new ASA features, refining the developer API for enhanced functionality, and improving the overall accessibility and stability of the Messaging for In-App (Android) SDK.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

New Features

  • Added edge-to-edge support for Android API 35+.
  • Added citation support for AgentForce text messages.
  • Added support for multi-agent conferencing.
  • Added language support for messaging components.
  • Added unread message counter to notification badge UI.
  • Added 423 error code handling for JWT renewal during org migration scenario.

API Changes

  • Deprecated conversationClient.sendPdf(pdf: File)
  • Deprecated conversationClient.sendImage(pdf: File)
  • Added conversationClient.sendFile(file: File, message: String?). This replaces the deprecated APIs and provides the ability to send
    a message along with an attachment.
  • Deprecated suspend fun CoreClient.delete(context: Context,conversationId: UUID,): Int
  • Added suspend fun coreClient.deleteConversation(conversationId: UUID): Int to replace the static method
  • Added conversation.unreadMessageCount to expose the number of messages that have not yet been read by the local participant.
  • Added CoreClient.createConversation( conversationId: UUID, remoteConfiguration: RemoteConfiguration? = null ): Result<Conversation>
  • Added CoreClient.registerDevice(context: Context, deviceToken: String): Result<Unit>

Bug Fixes

  • Accessibility - Missing programmatic heading: "Chat" heading text in the "Pre-Chat" screen.
  • Accessibility - Improperly announced label: "First Name" required input element in the "Pre-Chat" screen.
  • Accessibility - Imprecise error message: "Pre-Chat" screen.
  • Accessibility - Keyboard inaccessible: "terms and conditions" link in the "Pre-Chat" screen.
  • Accessibility - Error message not announced by AT: "First Name" and "Accept" required form control(s) in the "Pre-Chat" screen.
  • Accessibility - Form control not identified as required: label text for the "Accept" required checkbox in the "Pre-Chat" screen.
  • Accessibility - Missing label association: "Accept" checkbox in the "Pre-Chat" screen.
  • Accessibility - Added accessibility announcement for error on submit in the "Secure Form" screen.
  • Accessibility - Added clarification on required section label in the "Secure Form" screen.
  • Accessibility - Added clarification on input text label in the "Secure Form" screen.
  • Accessibility - Removed content description on submission receipt entry icon to avoid repeating text twice.
  • Accessibility - Missing programmatic heading on several screens.
  • Accessibility - Terms and conditions checkbox status not read out.
  • Accessibility - Carousel dot indicator missing accessibility label.
  • Accessibility - Incorrect focus order for secure forms submission.
  • Accessibility - Updated outbound message accessibility read out
  • Accessibility - Retain accessibility focus when navigating from the chat feed to the conversation options screen.
  • Accessibility - Announce search results as you type.
  • Accessibility - After selecting a recent search the focus should move to the search input.
  • Accessibility - Inaccessible scroll to bottom of chat feed button within the “Chat” screen.
  • Accessibility - Fixed an issue where the list picker buttons were focused out of order on the last message.
  • Accessibility - Sets the focus to the selected search result when returning to the chat feed.
  • Removed space next to input when UIConfiguration.attachmentConfiguration.endUserToAgent is set to false.
  • Fixed phone numbers and emails not rendering as clickable links in the chat feed.
  • Changes to attachment payload to support sending text with the entry.

Known Issues

If configuring the SDK using a configFile.json file, minified builds will throw an exception due to a missing proguard rule. You can add the following to you app's progaurd file to resolve the issue.

-keep class com.salesforce.android.smi.core.CoreConfiguration { *; }

Notes

  • Upgraded Kotlin language version to 2.0.21
  • Updated Android Compose BOM to 2025.04.01 / 1.8.0 (removed strict compose version requirement)
  • Upgraded compileSdk version to API 35 (required by Compose 1.8.0 dependency)

1.7.0

07 Oct 18:34
53b38d5

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

Enhance the Messaging for In-App experience with the new Messaging for In-App features. Improve the user experience by auto-populating the pre-chat form fields, selecting the preferred browser type for opening rich links, and much more.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

API Changes

  • UIClient.viewComponents Added a container for all of the customizable components in the UI.

  • ViewComponents Added an interface which provides a container for customizable UI components.

  • ViewComponents.ChatFeedEntry to allow the developer to define customizable views for each entry
    type.

    fun ChatFeedEntry(
       entry: ChatFeedEntry,
       content: @Composable () -> Unit
    ) {
       content()
    } 
    
  • CoreClient.realtimeConnectionState Added a Flow<ServerSentEvent.Connection>
    for monitoring the realtime connection state.

  • UIConfiguration.attachmentConfiguration Added an option to hide the attachment button in the UI.

  • UIConfiguration.transcriptConfiguration Added an option to hide the transcript download button
    in the UI.

  • CoreClient Added more options for querying conversations.

          limit: Int,
          olderThanConversation: Conversation? = null,
          conversationId: UUID? = null,
          forceRefresh: Boolean = false
      ): Result<List<Conversation>>
    
    fun conversationsFlow(
          limit: Int,
          olderThanConversation: Conversation? = null,
          conversationId: UUID? = null,
          forceRefresh: Boolean = false
      ): Flow<Result<List<Conversation>>>
    
    suspend fun conversations(
          limit: Int,
          sortedByActivityDescending: Boolean = true,
          olderThanConversation: Conversation? = null
      ): Result<List<Conversation>>
    
    fun conversationsFlow(
          limit: Int,
          sortedByActivityDescending: Boolean = true,
          olderThanConversation: Conversation? = null
      ): Flow<Result<List<Conversation>>>
    
  • Deprecated older APIs with limited query options:
    fun conversations(limit: Int): Flow<Result<List<Conversation>>> = conversations(limit, true)
    fun conversations(limit: Int, sortedByActivityDescending: Boolean = true): Flow<Result<List<Conversation>>>

  • ConversationClient Added more options for querying conversation entries.

    suspend fun conversationEntries(
          limit: Int = 100,
          timestamp: Long? = null,
          direction: QueryDirection = QueryDirection.Descending,
          forceRefresh: Boolean = false
      ): Result<List<ConversationEntry>>
    
    fun conversationEntriesFlow(
          limit: Int = 100,
          timestamp: Long? = null,
          direction: QueryDirection = QueryDirection.Descending,
          forceRefresh: Boolean = false
      ): Flow<Result<List<ConversationEntry>>>
    

Bug Fixes

  • Fixed an issue where attempting to send very large attachments could cause a crash if logging
    was set to Level.ALL.
  • Fixed an issue where estimated wait time was not being displayed on transfers.
  • Fixed an issue where chat messages could be missing when returning to the chat feed a long time
    after they were sent.
  • Accessibility - Fixed color contrast failure: "Search text" in the Conversation Options screen.
  • Accessibility - Fixed missing programmatic heading: “Chat” heading text in the “Pre-Chat” screen.
  • Accessibility - Fixed missing programmatic heading: “Conversation Options” text in the
    “Conversation Options” screen.
  • Accessibility - Fixed incorrectly provided keyboard focus order: Next button within "Secure Forms"
    screens.
  • Accessibility - Fixed newly received messages from the Agent in the "Chat" screen not being
    announced.
  • Accessibility - Fixes an issue where search input field is cut off for larger screen sizes.
  • Accessibility - Fixed missing content label description: User and Bot avatar images in the "
    Message Search" screen.
  • Accessibility - Fixed "Agent started typing" indicator message in the "Chat" screen not being
    announced.
  • Accessibility - Fixed incorrectly provided keyboard focus order: Hidden element in the “Chat”
    screen screen.
  • Accessibility - Fixed missing content label description: User and Bot avatar images in the "
    Message Search" screen.
  • Fixed an issue where the Configuration.remoteLocaleMap key lookup was case sensitive.
  • Fixed a crash on API 33 when loading the chat feed due to these google bugs:
  • https://issuetracker.google.com/issues/274185314
  • https://issuetracker.google.com/issues/242048899
  • Fixed an issue where the lastActivity ConversationEntry on the Conversation was not updating with
    the "Read" status.
  • Constrained Android Compose versions to prevent runtime exceptions. Currently requires Android
    Compose >= 1.7.0
  • Fixed an issue where the CoreClient.Factory was not recognizing configuration changes in minified
    builds.
  • Fixed an issue where the choice selection key was shown in the submission receipt instead of the
    selection for a choice list field.
  • Fixed an issue where failed messages could sometimes be stuck in a "Sending" state after
    re-opening the chat feed.
  • Templated Web URLs were not behaving properly when the templated parameters were passed directly in the URL. All templated parameters in a URL should now be replaced by the templated name rather than by the query param key. Also added the ability to template parts of the host in addition to the path and query params.

Known Issues

  • If targeting API 35+ you will need to add the following resource file to your app
    under res/values-v35/styles.xml:
    <style name="smi_theme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
    </style
  • This code was not included in the SDK because it would force all customers to upgrade to their
    targetSDK version to API 35.

Notes

  • Updated Android Compose BOM to 2024.09.00 / 1.7.0 (strictly >= 1.7.0 < 1.8.0)

1.6.2

21 Aug 20:53
b1b16fa

Choose a tag to compare

Patch Release: Messaging for In-App (Android)

Enhance the Messaging for In-App experience with the new Messaging for In-App features. Improve the user experience by auto-populating the pre-chat form fields, selecting the preferred browser type for opening rich links, and much more.

To learn more, see the Messaging for In-App Developer Guide.

This page covers the Android release notes. For iOS, see the iOS release notes.

Bug Fixes

API Changes

  • Added Configuration.remoteLocaleMap for resolving the custom label's language when requesting a
    [RemoteConfiguration].
  • Used to provide mapping from device locale to a specific language when retrieving localized copy for the current deployment. This
  • currently impacts only localized strings as part of the RemoteConfiguration response.
  • sample
  • If you want to avoid having to define region specific variants of custom labels, you can define a dictionary which maps locales to a language.
  • {
  • "en-CA": "en",
  • "fr-Fr": "fr",
  • "fr-CH": "fr",
  • "default:" "en"
  • }
  • The map above will resolve standard English for the Canadian region, and standard French for France and Switzerland.
  • Both the keys and values are case insensitive.
  • The default key can be used as a fallback in case any of the mapped languages are not properly resolved in the deployment setup.
  • see https://help.salesforce.com/s/articleView?id=sf.faq_getstart_what_languages_does.htm&type=5

See: Supported Salesforce Language Codes

Android Compose Support <= 1.6.x

Known Issues