# Migrate to 3.1.9

Last updated:

<!-- -->

October 18, 2026

<!-- -->

\| 2 minutes read

<br />

<br />

This guide outlines the breaking changes introduced in SDK version 3.1.9. Required updates may vary depending on your use case.

Additionally, new features and bugfixes have been introduced and are **not** documented here. For a comprehensive list of changes, please refer to the changelog.

This release removes a previously deprecated method and extends several enums with new values. Most projects only need updates if they relied on the removed `getRoadInfoImg` method or use exhaustive `switch` statements over the affected enums. iOS rendering has also moved to Metal, which may require visual re-testing.

## The *getRoadInfoImg* method has been removed from the *NavigationInstruction* class[​](#the-getroadinfoimg-method-has-been-removed-from-the-navigationinstruction-class "Direct link to the-getroadinfoimg-method-has-been-removed-from-the-navigationinstruction-class")

The `getRoadInfoImg` method, deprecated in 3.1.8, has been removed. Use the `getRoadInfoImgByType` method instead, which avoids the need to deallocate `RoadInfo` objects and provides significant performance improvements when receiving frequent position updates.

Before:

```dart
RoadInfoImg image = instruction.getRoadInfoImg(instruction.currentRoadInformation);

```

After:

```dart
RoadInfoImg image = instruction.getRoadInfoImgByType(RoadInfoType.currentRoadInformation);

```

Use the following `RoadInfoType` values to retrieve the corresponding `RoadInfoImg`:

* `currentRoadInformation` for `currentRoadInformation`
* `nextRoadInformation` for `nextRoadInformation`
* `nextNextRoadInformation` for `nextNextRoadInformation`

## The *shadow* value has been added to the *HighlightOptions* and *RouteRenderOptions* enums[​](#the-shadow-value-has-been-added-to-the-highlightoptions-and-routerenderoptions-enums "Direct link to the-shadow-value-has-been-added-to-the-highlightoptions-and-routerenderoptions-enums")

The `shadow` value was added to the `HighlightOptions` and `RouteRenderOptions` enums. If you use either enum in an exhaustive `switch` statement, add a case for the new `shadow` value.

Always use the enum value names instead of hardcoding the numeric ids to ensure compatibility with future changes.

## The *restrictionsUpdated* value has been added to the *NavigationInstructionUpdateEvents* enum[​](#the-restrictionsupdated-value-has-been-added-to-the-navigationinstructionupdateevents-enum "Direct link to the-restrictionsupdated-value-has-been-added-to-the-navigationinstructionupdateevents-enum")

The `restrictionsUpdated` value was added to the `NavigationInstructionUpdateEvents` enum, signaling that the active route restrictions have changed during navigation. If you use this enum in an exhaustive `switch` statement, add a case for the new `restrictionsUpdated` value.

This value is emitted when the new `onRestrictionsUpdated` callback of the `startNavigation` and `startSimulation` methods reports updated restrictions, allowing you to react to changes exposed through the `currentRestrictions` property of the `NavigationInstruction` class.

## iOS now uses Metal rendering[​](#ios-now-uses-metal-rendering "Direct link to iOS now uses Metal rendering")

On iOS, the SDK now renders the map using Metal instead of the previous backend. No code changes are required, but we recommend re-testing map appearance and rendering performance on iOS devices to confirm your application behaves as expected.
