# Mappedin JS, React & React Native SDK v6.29.0

**URL:** <https://community.mappedin.com/t/mappedin-js-react-react-native-sdk-v6-29-0/606>\
**Category:** News & Announcements\
**Created:** [September 29, 2026, 5:56pm UTC](https://community.mappedin.com/t/mappedin-js-react-react-native-sdk-v6-29-0/606 "2026-09-29T17:56:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![msohm](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.mappedin.com/msohm/32/6_2.png) [@msohm](https://community.mappedin.com/u/msohm)\
**Post date:** [September 29, 2026, 5:56pm UTC](https://community.mappedin.com/t/mappedin-js-react-react-native-sdk-v6-29-0/606/1 "2026-09-29T17:56:01Z")

</div>

### **Features**

- Added stable names for the experimental `Path` rendering options on `Paths.add` and `Navigation.draw`. The previous `__EXPERIMENTAL_*` names remain as deprecated aliases. When an old name and its new name are both set, the new name is used.

```ts
const path = await mapView.Paths.add(directions.coordinates, {
    geometry: 'ribbon',
    smoothing: { tension: 0.15, cornerRadius: 0.5 },
    border: { enabled: true, color: 'darken' },
    endcapExtension: [0.5, 0.5],
    billboarding: 80,
    dash: { enabled: true, mode: 'width-scaling', size: 1.2, gapSize: 0.6 },
    xray: { opacity: 0.25, tint: 0.3, dithering: 2 },
});

```

- `geometry` replaces ` __EXPERIMENTAL_GEOMETRY`. `'tube'` is the default round path. `'ribbon'` draws a flat path. A dashed ribbon draws each dash as its own shape, and a dashed tube paints the dash pattern on one continuous path. `__ EXPERIMENTAL_DASH_STYLE` is removed.
- `dash` replaces `dashed` and `__EXPERIMENTAL_DASH_OPTIONS`. `dash.enabled` replaces `dashed`. `dash.cornerRadius` ranges from `0` (sharp) to `1` (fully rounded) and now defaults to `0`. The experimental discrete dash default was `1`. A `dash` object with only `enabled: true` uses width-scaled dashes (`size` `1.2`, `gapSize` `0.6`).
- `smoothing` replaces ` __EXPERIMENTAL_SMOOTHING_TENSION` and `__ EXPERIMENTAL_SMOOTHING_CORNER_RADIUS`.
- `xray` replaces `__EXPERIMENTAL_XRAY_STYLE` and `xrayOpacity`.
- `endcapExtension`, `billboarding`, and `border` replace the matching `__EXPERIMENTAL_*` options. They apply to ribbon geometry.
- Removed `__EXPERIMENTAL_PREVENT_SELF_OVERLAP`. Overlapping `Path`s can use `xray.tint` and `xray.dithering`.
- Added `connection` on navigation `pathOptions` and `inactivePathOptions`. It overrides the vertical connection segment of that path. Set it on `pathOptions` for the active connection and on `inactivePathOptions` for the inactive one. The previous ` __EXPERIMENTAL__ CONNECTION_*` flags remain as deprecated aliases, except ` __EXPERIMENTAL__ CONNECTION_BILLBOARDING`, which is removed. `__EXPERIMENTAL_JUNCTION_INSET` stays experimental. Connection segments use square end caps unless `connection.endcapExtension` is set.

```ts
await mapView.Navigation.draw(directions, {
    pathOptions: {
        color: '#FF0000',
        geometry: 'ribbon',
        connection: {
            geometry: 'ribbon',
            dash: { enabled: true },
        },
    },
});

```

- Added stable names for the experimental `getDirections` smoothing options. `method` replaces `__EXPERIMENTAL_METHOD` and accepts `'greedy-los'` (the default), `'rdp'`, or `'dp-optimal'`. `includeDoorBufferNodes` replaces `__EXPERIMENTAL_MUST_INCLUDE_DOOR_BUFFER_NODES` and `__EXPERIMENTAL_INCLUDE_DOOR_BUFFER_NODES`. The previous names remain as deprecated aliases, and the defaults are unchanged. `excludedConnections` is no longer experimental.

```ts
const directions = await mapView.getDirections(start, end, {
    smoothing: {
        enabled: true,
        method: 'dp-optimal',
        includeDoorBufferNodes: true,
        radius: 0.4,
    },
});

```

- Added `MapView.auto()`, which places labels for the map and renders `Annotation`s as icon `Label`s. The returned `markers` array is empty. `MapView. __EXPERIMENTAL__ auto()` still renders `Annotation`s as `Marker`s and logs a deprecation warning.

```ts
const { labels } = await mapView.auto();

```

- Added `fuzzy` and `prefix` to `Search.query()` and `Search.suggest()`. Each source (`places`, `enterpriseLocations`, and `enterpriseCategories` on `query`) can set its own values. `fuzzy` of `0` disables typo tolerance. A value greater than `0` and less than `1` is a fraction of the term length. A value of `1` or greater is an edit count. The default is `0.2`. `prefix` controls as-you-type matching and defaults to `true`. Omitting either option keeps the existing behaviour.

```ts
const results = await mapData.Search.query(term, {
    enterpriseLocations: { fuzzy: 0, prefix: false },
});

```

- Added experimental `__EXPERIMENTAL_CameraControlsMode` on `outdoorView` for `show3dMap`. `'native'` (the default) keeps the SDK pan, zoom, pinch, and rotate gestures. `'external'` hands those gestures to MapLibre. `'external'` responds only when outdoor view is enabled and the outdoor map loads. In `'external'` mode, `Camera.interactions` also updates MapLibre’s gesture handlers.

```ts
const mapView = await show3dMap(el, mapData, {
    outdoorView: {
        __EXPERIMENTAL_CameraControlsMode: 'external',
    },
});

```

- Added optional `opensMessage` and `closesMessage` strings on operation hours. `EnterpriseLocation.operationHours` includes them, and they follow the active language. `LocationProfile.openingHours.raw` includes them on Maker maps.

### **Performance**

- Improved `Label` memory use on maps with many labels, including icon-only labels.

### **Fixes**

- Fixed an issue where `MapData.checkForUpdates()` failed for a hydrated map that uses the EU gateway.
- Fixed an issue where a two-finger pinch stopped working when the second finger landed on a layer above the map.
- Fixed an issue where borders failed to render on polygons that contain a hole, and were missing on smooth outlines.
- Fixed an issue where map data failed to load when a `Node` referenced a neighbor that was missing from the map.
- Fixed an issue where the end of a Blue Dot tethered navigation path disappeared when the route looped back near the user.
- Fixed an issue where `Label`s with `maxLines` greater than `2` rendered only the first two lines.
