> ## Documentation Index
> Fetch the complete documentation index at: https://developer.suki.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile SDK Changelog

> Mobile SDK product updates and announcements

Suki's Mobile SDK versioning policy is based on the semantic versioning standard. For example, in version 1.2.3, 1 is the major version, 2 is the minor version, and 3 is the patch version.

When we release a new Mobile SDK version for new features or bug fixes, we increment one of these three version components depending on the type of change introduced.

<Update label="v2.7.0" description="July 2026" tag="LATEST" tags={["New Features", "Enhancements"]}>
  ### New features

  * **Ambient interoperability**: The Mobile SDK now interoperates with other Suki products that support ambient workflows. Pass `SukiAmbientConstant.kEmrEncounterId` when calling `createSession` to associate the session with an EMR encounter. This lets the Mobile SDK, Ambient APIs, and Web SDK contribute to and access the same clinical note for a patient visit.

    If `createSession` returns `remoteSessionConflict(blockingSessionId:)`, another Suki product already has an active ambient session for the same encounter. Call `cancelRemoteAmbientSession` or `endSessionRemotely` with the returned `blockingSessionId`, then retry `createSession`.

    Listen for the `SessionEvent.sessionTerminatedByPeer` event (`.cancelled` or `.ended`) to detect when another Suki product ends the shared session. Update your UI to reflect the session state, but do not call the local `end()`, `cancel()`, or `clear()` methods.

  * **Shared note read APIs**: The Mobile SDK also adds APIs to list and read shared note content stored on the device.

    Use `listEncounterNotes(emrEncounterId:)` to retrieve `compositionId` values. Then pass the `compositionId` as the `noteId` when calling:

    * `getNoteContext(noteId:)`
    * `getNoteContent(noteId:)`
    * `getNoteStructuredData(noteId:)`

    Use `encounterContent(encounterId:)` with the Session Group ID as `encounterId`. Do not pass the EMR encounter id.

  ### Enhancements

  * **Create session response identifiers**: On a successful online `createSession`, the response now includes:

    * `sessionId` (maps to Ambient API `ambient_session_id`)
    * <Badge color="green" size="sm">Optional</Badge> `compositionId` (maps to Ambient API `composition_id`)

  <Note>
    When `createSession` is performed offline, the response does not include a `compositionId`.

    Keep the following identifiers separate:

    * `sessionId` in the `createSession` response identifies the current ambient session. It maps to Ambient API `ambient_session_id`. It is not the Session Group ID.
    * `encounter_id` is the Session Group ID. Pass this value as `SukiAmbientConstant.kSessionId` when resuming or joining a shared note.
    * `compositionId` identifies the shared clinical note. It is not the Session Group ID.
  </Note>

  * **Create session error behavior**: `FAILED_PRECONDITION` and `INVALID_ARGUMENT` errors now return a `SukiStatus` response. The SDK no longer falls back to creating an offline session for these errors.

  * **Bearer ProviderInfo**: Pass the provider id using `SukiAmbientConstant.kId` during initialization. The SDK includes `provider_id` in the authentication and registration requests when it is not present in the JWT.

  Learn more in [Ambient interoperability](/mobile-sdk/ambient-guides/ambient-interoperability) and [Create ambient session](/mobile-sdk/ambient-guides/create-session).
</Update>

<Update label="v2.6.0" description="April 2026" tags={["Enhancements"]}>
  ### Enhancements

  <Warning>
    **Configuration required**

    You can provide Medication orders context through **Orders info** only after Suki enables the **`enable_generated_orders`** feature flag for your organization.

    To participate in the alpha rollout, contact Suki to request access.
  </Warning>

  * **Orders info**: Added support to provide **optional** orders info context parameter while creating an ambient session using the `SukiAmbientConstant.kOrdersInfo` key in the iOS SDK.

    **Required:** If you provide `SukiAmbientConstant.kOrdersInfo`, each medication order must include the following payload keys:

    * `drug_name`: The medication name
    * `medication_code`: The medication code
    * `strength`: The medication strength
    * `format`: The medication format
    * `route`: The medication route
    * `linked_diagnosis_codes`: The medication diagnosis codes
    * `metadata`: The medication metadata

    **Optional:** Everything else in the medical order object (for example dosage, how often to take it, timing, status, dates, instructions, how much was dispensed, refills).

  * **EMR info**: Added support to provide **optional** EMR info context parameter while creating an ambient session using the `SukiAmbientConstant.kEmrInfo` key in the iOS SDK.
      <Note>
        If you provide `SukiAmbientConstant.kEmrInfo`, you must provide the `SukiAmbientConstant.kTargetEmr` key with a string identifier for the target EMR.
      </Note>
</Update>

<Update label="v2.5.0" description="Dec 2025" tags={["Enhancements", "API Changes"]}>
  ### Enhancements

  * **Enhanced visit context**: Added support for visit-related metadata parameters in the `setSessionContext` method, including visit type, encounter type, provider role, reason for visit, and chief complaint. These parameters provide additional context to improve note generation accuracy and clinical relevance.

  ### API changes

  * Extended `setSessionContext` method to accept new optional visit context parameters:
    * `visitType`: Enum values include "New Patient / Intake", "Established patient", "Wellness", "ED"
    * `encounterType`: Enum values include "ambulatory", "inpatient", "ED"
    * `providerRole`: Enum values include "Primary/Attending", "Consulting"
    * `reasonForVisit`: String parameter with a maximum of 255 characters
    * `chiefComplaint`: String parameter with a maximum of 255 characters
  * All new parameters are **optional**; existing flows continue to work without these parameters
  * Free text fields (`reasonForVisit` and `chiefComplaint`) enforce a 255-character limit
</Update>

<Update label="v2.4.0" description="Oct 2025" tags={["New Features", "Enhancements"]}>
  ### New features

  * **User feedback collection**: Added `submitFeedback(_:for:onCompletion:)` method to collect user feedback on AI-generated content, helping you gather insights on note quality and user satisfaction.

  * **Audio buffer monitoring**: Added `audioBufferFilled(withPercentage: Double)` case to the session delegate to notify you when the audio buffer reaches a certain fill percentage. This helps you display connection status indicators in your UI.

  ### Enhancements

  * **Improved offline handling**: Offline mode now includes a 15-second buffer to handle temporary connection problems. This gives you more time to show connection status notifications in your UI before the session fully transitions to offline mode.

  * **Enhanced getting started guide**: Improved the getting started guide with a workflow diagram to help you understand the process of using the Suki Mobile SDK.
</Update>

<Update label="v2.3.0" description="Jul 2025" tags={["New Features", "Enhancements"]}>
  ### New features

  * **Personalization preferences**: Added `setPersonalizationPreferences(_:completionHandler:)` method to configure clinical note generation preferences. Customize verbosity levels and note section styles to match your clinical documentation needs.

  ### Enhancements

  * **Note customization options**: Configure verbosity levels (concise, balanced, detailed) and note section styles (narrative or bulleted) for supported LOINC sections including History of Present Illness, Assessment, Plan, and Assessment & Plan.

  ### API changes

  * New `setPersonalizationPreferences(_:completionHandler:)` method for configuring note generation preferences
  * Preferences are persisted and automatically applied to all future note generations
</Update>

<Update label="v2.2.1" description="Jul 2025" tags={["New Features", "API Changes"]}>
  ### New features

  * **Diagnosis context support**: Added `SukiAmbientConstant.kDiagnosisInfo` parameter to `setSessionContext` for structured diagnosis context, improving note accuracy by providing relevant diagnosis information.

  * **Structured data retrieval**: Introduced `getStructuredData(for:onCompletion:)` method to retrieve structured output data and diagnoses from completed sessions, enabling better integration with EHR systems.

  ### API changes

  * Extended `setSessionContext` with diagnosis information support
  * New `getStructuredData` method for accessing structured session output
  * Supports ICD-10, IMO, and SNOMED code types
</Update>

<Update label="v2.2.0" description="June 2025" tags={["New Features", "Enhancements", "API Changes"]}>
  ### New features

  * **Session context method**: Introduced `setSessionContext(with:onCompletion:)` method for setting patient, provider context, and LOINC codes after session creation, providing more flexibility in when you provide context information.

  ### Enhancements

  * **Improved session workflow**: Separated patient, provider, and section context from `createSession` to a dedicated `setSessionContext` method, making the session creation process more streamlined.

  * **Enhanced LOINC integration**: Enhanced section generation using LOINC codes with automatic clinical section creation. LOINC codes alone are sufficient: the SDK automatically generates appropriate clinical sections.

  ### API changes

  * `createSession` method now focuses solely on session initialization
  * Patient, provider, and section context should be set using `setSessionContext`
  * LOINC codes alone are sufficient: SDK automatically generates appropriate clinical sections
</Update>

<Update label="v2.1.0" description="May 2025" tags={["New Features", "Enhancements", "Bug Fixes"]}>
  ### New features

  * **Audio buffering**: Implemented audio buffering to reduce the number of offline sessions caused by brief internet interruptions, improving session continuity during temporary network issues.

  * **Multilingual support**: Added `SukiAmbientConstant.kIsMultilingual` parameter to session creation for multilingual processing support, enabling accurate note generation for conversations in multiple languages.

  ### Enhancements

  * **Background recording handling**: Added proper error handling when attempting to start recording while the app is backgrounded, providing clearer error messages and preventing unexpected behavior.

  ### Bug fixes

  * Fixed "No record exists for offline upload" failure category identified through note failure tracing dashboard
  * Improved session recovery reliability during network transitions
</Update>
