# deeplink_x 1.5.8

Type-safe Flutter deeplinks for WhatsApp, Telegram, Instagram, YouTube, Google Maps, Waze and app stores, with automatic store and web fallback.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add deeplink_x
```
Published: 2026-10-20T08:08:57.562809Z
Expected archive SHA-256: 7fa40aba16a15d21bbf21da3b8f0bcabde94764bf1cddfa46803fff35b6c9422

Available in cache; verification: upstream_checksum
## Direct dependencies
- deeplink_x_android: ^1.0.0
- deeplink_x_ios: ^0.1.0
- deeplink_x_linux: ^0.1.0
- deeplink_x_macos: ^0.2.0
- deeplink_x_platform_interface: ^0.1.0
- deeplink_x_web: ^0.1.0
- deeplink_x_windows: ^0.1.0
- flutter: map[sdk:flutter]

## Package README (untrusted upstream documentation)
# DeeplinkX

[![pub package](https://img.shields.io/pub/v/deeplink_x.svg)](https://pub.dev/packages/deeplink_x)
[![Coverage Status](https://coveralls.io/repos/github/DeepLinkX/DeeplinkX/badge.svg)](https://coveralls.io/github/DeepLinkX/DeeplinkX)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Platform](https://img.shields.io/badge/Platform-iOS%20%7C%20Android%20%7C%20macOS%20%7C%20Windows%20%7C%20Linux%20%7C%20Web-blue.svg)](https://flutter.dev)
[![GitHub Stars](https://img.shields.io/github/stars/DeepLinkX/DeeplinkX?style=social)](https://github.com/DeepLinkX/DeeplinkX/stargazers)

<p align="center">
  <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/deeplink_x_logo.jpg" width="180" alt="DeeplinkX Logo">
</p>

<p align="center">
  <strong>Type-safe deeplinks into external apps — with automatic store &amp; web fallback, on every Flutter platform.</strong>
</p>

<p align="center">
  <a href="https://deeplinkx.github.io/DeeplinkX/">🌐 Live Demo</a> &nbsp;·&nbsp;
  <a href="#android-demo-apks">📱 Android Demo APKs</a> &nbsp;·&nbsp;
  <a href="https://pub.dev/documentation/deeplink_x/latest/">📖 API Reference</a> &nbsp;·&nbsp;
  <a href="https://github.com/DeepLinkX/DeeplinkX/issues/new?template=new_app_request.yml">➕ Request an App</a>
</p>

DeeplinkX is a Flutter plugin for launching typed external deeplinks — it launches deeplinks into **other** apps from your Flutter app. Open a chat in **WhatsApp**, a profile in **Telegram** or **Instagram**, a video on **YouTube**, or a location in **Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet, Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, or Neshan** with turn-by-turn directions — with one strongly-typed call. When the target app isn't installed, it automatically falls back to the right app store, then to a web URL. No URL strings to maintain, no `Platform.isAndroid` branches to write.

> **What does the X stand for?** *External.* DeeplinkX is built for launching links **out** to other apps — not for handling incoming links into your own. For inbound links, use `app_links` or `go_router`.

## Why DeeplinkX

- **Typed API** — every supported app and action is a Dart call; the package owns the URL schemes, not you.
- **Smart fallback** — installed → open the app; not installed → open its store; no store → open the web URL.
- **Installation check** — ask `isAppInstalled()` before you launch.
- **Cross-platform store redirect** — point users at a store listing (your app, a promoted app, an ad CTA) and DeeplinkX picks the right store for the device.
- **Maps & navigation** — open a location, search a place, or launch turn-by-turn directions in Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet (Android), Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, or Neshan; list your preferred apps and DeeplinkX opens the first installed one, falling back to the web map otherwise.
- **One package, every platform** — iOS, Android, macOS, Windows, Linux, and Web.

Out of the box: **42 apps**, including **25 navigation providers (including one unpublished draft)** (ChatGPT, Netflix, Temu, Snapchat, CapCut, Facebook, Instagram, LinkedIn, WhatsApp, Telegram, Twitter, Threads, YouTube, TikTok, Pinterest, Zoom, Slack, Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Waze, Apple Maps, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet, TomTom GO Expert, Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, Neshan), and **7 stores** (iOS App Store, Mac App Store, Microsoft Store, Google Play, Huawei AppGallery, Cafe Bazaar, Myket). TomTom GO Expert navigation links are experimental and unverified; this local draft is not release-ready.

## Install

```bash
flutter pub add deeplink_x
```

```dart
import 'package:deeplink_x/deeplink_x.dart';
```

Requires Dart `>=3.1.0` and Flutter `>=3.13.0`.

## Quick Start

Open a Telegram profile, and fall back to the App Store / Play Store if Telegram isn't installed:

```dart
final deeplinkX = DeeplinkX();

await deeplinkX.launchAction(
  Telegram.openProfile(username: 'username', fallbackToStore: true),
);
```

On iOS, declare the schemes you query in `ios/Runner/Info.plist` (each app's [doc page](#documentation) lists its exact values):

```xml
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>tg</string>
    <string>itms-apps</string>
</array>
```

On Android, add package and intent visibility declarations directly under
`<manifest>`, alongside `<application>`, in
`android/app/src/main/AndroidManifest.xml`:

```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <package android:name="org.telegram.messenger" />
        <package android:name="com.android.vending" />
        <package android:name="com.huawei.appmarket" />

        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
    </queries>

    <application ...>
        <!-- ... -->
    </application>
</manifest>
```

This placement follows Android's
[package visibility guidance](https://developer.android.com/training/package-visibility/declaring).

That's the whole flow — DeeplinkX resolves the platform, checks installation, and handles the fallback.

## Demo

Try the [live web demo](https://deeplinkx.github.io/DeeplinkX/), download an Android demo APK below, or run the example on a real device for the full experience — installation checks need a native platform.

### Android Demo APKs

Choose the APK matching your device. ARM64 is the right choice for most modern Android phones and tablets.

| Architecture | Recommended for | Download |
|---|---|---|
| ARM64 (`arm64-v8a`) | Modern Android phones and tablets | [Download ARM64 APK](https://github.com/DeepLinkX/DeeplinkX/releases/latest/download/deeplink-x-demo-arm64-v8a.apk) |
| ARMv7 (`armeabi-v7a`) | Older 32-bit Android devices | [Download ARMv7 APK](https://github.com/DeepLinkX/DeeplinkX/releases/latest/download/deeplink-x-demo-armeabi-v7a.apk) |
| x86_64 | Compatible Android emulators and Chromebooks | [Download x86_64 APK](https://github.com/DeepLinkX/DeeplinkX/releases/latest/download/deeplink-x-demo-x86_64.apk) |

When opening a downloaded APK, Android may ask you to allow your browser or file manager to install unknown apps. Grant that permission only for the application you used to download the APK, then disable it again if you no longer need it.

Alongside the individual app and store detail screens, the example includes real-world flows for app updates, automatic store and map selection, support links, ratings, sharing, installation checks, meetings and communities, promoted app CTAs, and fallback-policy exploration.

<table>
  <tr>
    <td align="center">
      <strong>Instagram Profile</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/01_instagram_open_profile.gif" alt="Instagram profile deeplink demo" width="200">
    </td>
    <td align="center">
      <strong>Telegram Profile</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/02_telegram_open_profile.gif" alt="Telegram profile deeplink demo" width="200">
    </td>
    <td align="center">
      <strong>Facebook App</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/03_facebook_open_app.gif" alt="Facebook app deeplink demo" width="200">
    </td>
  </tr>
  <tr>
    <td align="center">
      <strong>YouTube Video</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/04_youtube_open_video.gif" alt="YouTube video deeplink demo" width="200">
    </td>
    <td align="center">
      <strong>Facebook Web Fallback</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/05_facebook_open_web_profile.gif" alt="Facebook web fallback deeplink demo" width="200">
    </td>
    <td align="center">
      <strong>iOS App Store Page</strong><br>
      <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/previews/06_ios_app_store_open_page.gif" alt="iOS App Store deeplink demo" width="200">
    </td>
  </tr>
</table>

## How it works

Every launch follows the same three-tier strategy, in order:

<p align="center">
  <img src="https://github.com/DeeplinkX/DeeplinkX/raw/master/images/how_it_works.png" width="760" alt="DeeplinkX three-tier fallback flow: try the native deeplink, then the app store, then the web URL">
</p>

1. **Native deeplink** — opens the app directly via a custom URL scheme, App Link, or Android Intent when it's installed.
2. **Store fallback** — if `fallbackToStore: true` and the app is absent, redirects to the correct store for the current platform.
3. **Web fallback** — otherwise opens the action's web URL, when one exists.

Pass `disableFallback: true` to any launch method to attempt **only** the native path (skip ② and ③). Every launch method returns `Future<bool>` — see [Return values](#return-values).

> **Note:** with `fallbackToStore: true`, if a vendor changes or removes a custom scheme, DeeplinkX redirects to the **store** rather than the web URL. Set `fallbackToStore: false` when you always want the web page as the fallback.

**Why custom schemes instead of universal links?** Under the hood, DeeplinkX opens apps with iOS custom URL schemes, Android Intents, and Android/iOS App Links — the same launch mechanics you'd otherwise hand-roll with `url_launcher` — rather than plain HTTPS universal links, because they:

- **Launch directly, no browser flash** — no redirect flicker before the app opens.
- **Skip the "Open with…" dialog on Android** — Intents target the exact package.
- **Allow a real installation check** — universal links return `true` even when the app is missing (the browser would handle them), which breaks fallback logic; a scheme/package check does not.
- **Stay resilient** — every scheme is paired with a web fallback, so a deprecated scheme still lands the user somewhere useful.

## Use cases

### Open a screen inside an app

Deep-link to a specific screen; fall back to the store if the app is missing:

```dart
final deeplinkX = DeeplinkX();

await deeplinkX.launchAction(
  Telegram.openProfile(username: 'flutter', fallbackToStore: true),
);

await deeplinkX.launchAction(
  YouTube.openVideo(videoId: 'dQw4w9WgXcQ', fallbackToStore: true),
);

await deeplinkX.launchAction(
  WhatsApp.chat(phoneNumber: '1234567890', fallbackToStore: true),
);

await deeplinkX.launchAction(
  WhatsApp.chatByUsername(username: 'example_user', message: 'Hello!', fallbackToStore: true),
);
```

### Open another app from Flutter

Launch a supported app without targeting a screen — no raw URLs, no `Platform.isAndroid` checks:

```dart
await deeplinkX.launchApp(
  Instagram.open(fallbackToStore: true),
);
```

The same call shape works to open WhatsApp, Telegram, or any other [supported app](#supported-apps-and-actions) from your Flutter app.

### Check whether an app is installed

Check whether WhatsApp, Telegram, Google Maps, LinkedIn, or another supported app is installed before you launch it:

```dart
final isInstalled = await deeplinkX.isAppInstalled(LinkedIn());

if (isInstalled) {
  await deeplinkX.launchAction(
    LinkedIn.openProfile(profileId: 'johndoe'),
  );
}
```

### Send users to a store listing

Send users to the right store page for any app you configure — your own app's install/update flow, a promoted app, or an ad CTA. Declare each platform's listing once; DeeplinkX opens the one matching the device. No `Platform.isAndroid` checks.

```dart
await deeplinkX.redirectToStore(
  storeActions: [
    IOSAppStore.openAppPage(appId: 'TARGET_APP_ID', appName: 'target-app'),
    MacAppStore.openAppPage(appId: 'TARGET_APP_ID', appName: 'target-app'),
    PlayStore.openAppPage(packageName: 'com.target.app'),
    MicrosoftStore.openAppPage(productId: 'YOUR_PRODUCT_ID'),
    HuaweiAppGalleryStore.openAppPage(
      packageName: 'com.target.app',
      appId: 'YOUR_HUAWEI_APP_ID',
    ),
    CafeBazaarStore.openAppPage(packageName: 'com.target.app'),
    MyketStore.openAppPage(packageName: 'com.target.app'),
  ],
);
```

For promoted apps or ad CTAs, pass tracking parameters on stores that support them:

```dart
await deeplinkX.redirectToStore(
  storeActions: [
    IOSAppStore.openAppPage(
      appId: 'TARGET_APP_ID',
      appName: 'target-app',
      campaignToken: 'spring_sale',
      providerToken: 'partner_network',
      affiliateToken: 'affiliate_123',
      uniqueOrigin: 'home_banner',
    ),
    PlayStore.openAppPage(
      packageName: 'com.target.app',
      referrer: 'utm_source=deeplink_x&utm_medium=ad&utm_campaign=spring_sale',
    ),
    HuaweiAppGalleryStore.openAppPage(
      packageName: 'com.target.app',
      appId: 'YOUR_HUAWEI_APP_ID',
      referrer: 'utm_source=deeplink_x&utm_medium=ad&utm_campaign=spring_sale',
    ),
  ],
);
```

### Open a map, search a place, or get directions

Launch **Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet (Android), Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, or Neshan** for supported map actions — **view** a location, **search** a place, get **directions** (by address), or get **directions with coordinates** — on supported platforms, including web and desktop where available. For each, list the maps apps you prefer in priority order; DeeplinkX opens the first installed one and falls back to the web map if none are present. CoPilot URL launch requires the provider's Truck license. TomTom GO Fleet intents are Android-only and require an eligible fleet-managed app setup. NAVER Map actions require your Android application ID and iOS bundle ID; Tencent Maps actions require a developer key. Need another provider? [Request it](https://github.com/DeepLinkX/DeeplinkX/issues/new?template=new_app_request.yml) — map support is actively expanding.

```dart
const origin = Coordinate(latitude: 37.5665, longitude: 126.9780);
const destination = Coordinate(latitude: 37.5209436, longitude: 127.1230074);
const naverLaunchParams = NaverMapLaunchParams(
  androidAppName: 'com.example.myapp',
  iosAppName: 'com.example.myApp',
);
const tencentMapsKey = 'YOUR_TENCENT_MAPS_KEY';

// View a location
await deeplinkX.launchMapViewAction(
  actions: [
    GoogleMaps.view(coordinate: origin),
    Amap.view(coordinate: origin),
    BaiduMaps.view(coordinate: origin),
    NaverMap.view(coordinate: origin, launchParams: naverLaunchParams),
    AppleMaps.view(coordinate: origin),
    TwoGis.view(coordinate: origin),
    Waze.view(coordinate: origin),
    Sygic.view(coordinate: origin),
    SygicTruck.view(coordinate: origin),
    Copilot.view(coordinate: origin),
    TomTomGoFleet.view(coordinate: origin),
    TomTomGoExpert.view(coordinate: origin), // Unverified; unpublished draft only.
    Moovit.view(coordinate: origin),
    AirNavigationPro.view(coordinate: origin),
    Mappls.view(coordinate: origin),
    MapyCz.view(coordinate: origin),
    TMap.view(coordinate: origin),
    KakaoMap.view(coordinate: origin),
    HereWeGo.view(coordinate: origin),
    Citymapper.view(coordinate: origin), // Opens directions to the point, not a marker-only map.
    OsmAnd.view(coordinate: origin),
    Neshan.view(coordinate: origin),
    YandexMaps.view(coordinate: origin),
    YandexNavigator.view(coordinate: origin),
    TencentMaps.view(coordinate: origin, referer: tencentMapsKey),
  ],
);

// Search for a place
await deeplinkX.launchMapSearchAction(
  actions: [
    GoogleMaps.search(query: 'Central Park'),
    Amap.search(query: 'Central Park'),
    BaiduMaps.search(query: 'Central Park'),
    NaverMap.search(query: 'Gangnam Station', launchParams: naverLaunchParams),
    AppleMaps.search(query: 'Central Park'),
    Waze.search(query: 'Central Park'),
    MapyCz.search(query: 'Central Park'),
    YandexMaps.search(query: 'Central Park'),
    YandexNavigator.search(query: 'Central Park'),
    TencentMaps.search(query: 'Central Park', referer: tencentMapsKey),
  ],
);

// Directions by address
await deeplinkX.launchMapDirectionsAction(
  actions: [
    GoogleMaps.directions(destination: 'Eiffel Tower, Paris'),
    Amap.directions(destination: 'Eiffel Tower, Paris'),
    BaiduMaps.directions(destination: 'Eiffel Tower, Paris'),
    AppleMaps.directions(destination: 'Eiffel Tower, Paris'),
    Waze.directions(destination: 'Eiffel Tower, Paris'),
  ],
);

// Directions by coordinates
await deeplinkX.launchMapDirectionsWithCoordsAction(
  actions: [
    GoogleMaps.directionsWithCoords(destination: destination),
    Amap.directionsWithCoords(destination: destination),
    BaiduMaps.directionsWithCoords(destination: destination),
    NaverMap.directionsWithCoords(
      destination: destination,
      launchParams: naverLaunchParams,
    ),
    AppleMaps.directionsWithCoords(destination: destination),
    TwoGis.directionsWithCoords(destination: destination),
    Waze.directionsWithCoords(destination: destination),
    Sygic.directionsWithCoords(destination: destination),
    SygicTruck.directionsWithCoords(destination: destination),
    Copilot.directionsWithCoords(destination: destination),
    TomTomGoFleet.directionsWithCoords(destination: destination),
    TomTomGoExpert.directionsWithCoords(destination: destination), // Unverified draft.
    Moovit.directionsWithCoords(destination: destination),
    AirNavigationPro.directionsWithCoords(destination: destination),
    Mappls.directionsWithCoords(destination: destination),
    MapyCz.directionsWithCoords(destination: destination),
    TMap.directionsWithCoords(destination: destination),
    KakaoMap.directionsWithCoords(destination: destination),
    HereWeGo.directionsWithCoords(destination: destination),
    Citymapper.directionsWithCoords(destination: destination),
    OsmAnd.directionsWithCoords(destination: destination),
    Neshan.directionsWithCoords(destination: destination),
    YandexMaps.directionsWithCoords(destination: destination),
    YandexNavigator.directionsWithCoords(destination: destination),
    TencentMaps.directionsWithCoords(
      destination: destination,
      referer: tencentMapsKey,
    ),
  ],
);
```

| Method                                | Supported apps                       |
| ------------------------------------- | ------------------------------------ |
| `launchMapViewAction`                 | Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet (Android), TomTom GO Expert (unverified draft), Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, Neshan |
| `launchMapSearchAction`               | Google Maps, Amap, Baidu Maps, NAVER Map, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Mapy.com             |
| `launchMapDirectionsAction`           | Google Maps, Amap, Baidu Maps, Apple Maps, Waze                        |
| `launchMapDirectionsWithCoordsAction` | Google Maps, Amap, Baidu Maps, NAVER Map, 2GIS, Tencent Maps, Yandex Maps, Yandex Navigator, Apple Maps, Waze, Sygic, Sygic Truck, CoPilot, TomTom GO Fleet (Android), TomTom GO Expert (unverified draft), Moovit, Air Navigation Pro, Mappls, Mapy.com, TMAP, KakaoMap, HERE WeGo, Citymapper, OsmAnd, Neshan |

## Supported apps and actions

OsmAnd uses package-targeted Android intents for the free app and HTTPS map links on iOS. Native interception and legacy iOS detection/opening remain device-unverified; its browser directions fallback may require choosing a start point. See [OsmAnd configuration and limitations](doc/apps/osmand.md).

Citymapper's `view()` opens directions to a point, not a marker-only map. Its native requests and HTTPS fallbacks follow the [official Citymapper directions contract](https://citymapper.com/news/2386/launch-citymapper-for-directions); see [Citymapper configuration and device-validation limits](doc/apps/citymapper.md).

HERE WeGo actions use the [official HERE share-link contract](https://docs.here.com/wego-pro/docs/request-format-dl); native link interception and the retained legacy iOS detection/opening scheme have not been device-validated. See [HERE WeGo configuration and limitations](doc/apps/here_wego.md).

| Category       | App               | Actions                                                                         |
| -------------- | ----------------- | ------------------------------------------------------------------------------- |
| **Stores**     | iOS App Store     | Open app page, rate app                                                          |
|                | Mac App Store     | Open app page, rate app                                                          |
|                | Microsoft Store   | Open app page, rate app                                                          |
|                | Google Play Store | Open app page                                                                   |
|                | Huawei AppGallery | Open app page                                                                   |
|                | Cafe Bazaar       | Open app page                                                                   |
|                | Myket             | Open app page, rate app                                                          |
| **Social**     | Telegram          | Open profile by username, open profile by phone number, send message            |
|                | Instagram         | Open profile by username                                                        |
|                | WhatsApp          | Chat with phone number or username, share text content                          |
|                | Facebook          | Open profile by ID, open profile by username, open page, open group, open event |
|                | YouTube           | Open video, open channel, open playlist, search                                 |
|                | Twitter           | Open profile by username, open tweet by ID, search                              |
|                | Threads           | Open profile by username, open post, open comments, create post, search, open topic tag |
|                | Pinterest         | Open profile by username, open pin, open board by ID, search                    |
|                | TikTok            | Open profile by username, open video, open tag                                  |
|                | Zoom              | Join meeting by ID                                                              |
|                | Slack             | Open team, open channel, open user                                              |
|                | LinkedIn          | Open profile page, open company page                                            |
|                | ChatGPT           | Open app, open shared conversation, open GPT                                    |
|                | Netflix           | Open app, open title, watch title                                               |
|                | Temu              | Open app, open link, search                                                     |
|                | Snapchat          | Open app, open profile by username                                              |
|                | CapCut            | Open app, open template link                                                    |
| **Navigation** | Google Maps       | View map, search location, directions, directions with coordinates              |
|                | Amap              | Open current location, view map, search, directions, directions with coordinates |
|                | Baidu Maps        | View map, search, nearby search, line, directions, coordinates, navigation      |
|                | NAVER Map         | View map, search, bus search, directions with coordinates, navigation, safe driving |
|                | Apple Maps        | View map, search location, directions, directions with coordinates              |
|                | 2GIS              | View map, directions with coordinates                                           |
|                | Waze              | View map, search, directions, directions with coordinates                       |
|                | Sygic             | View map, directions with coordinates                                           |
|                | Sygic Truck       | View map, directions with coordinates                                           |
|                | CoPilot           | View map, directions with coordinates                                           |
|                | TomTom GO Fleet   | View map, directions with coordinates (Android)                                |
|                | TomTom GO Expert (draft) | Open app, view map, coordinate directions (unverified); store/website fallbacks |
|                | Moovit            | View map, directions with coordinates                                           |
|                | Air Navigation Pro| View map, directions with coordinates                                           |
|                | Mappls            | View map, directions with coordinates                                           |
|                | Mapy.com          | View map, search, directions with coordinates                                   |
|                | TMAP              | View map, directions with coordinates                                           |
|                | KakaoMap          | View map, directions with coordinates                                           |
|                | HERE WeGo         | View map, directions with coordinates                                           |
|                | Citymapper        | View map (directions to a point), directions with coordinates                    |
|                | OsmAnd            | View map, directions with coordinates                                           |
|                | Neshan            | View map, directions with coordinates                                           |
|                | Yandex Maps       | Open map, view map, search, organization card, what is here, directions with coordinates, panorama |
|                | Yandex Navigator  | View map, search, directions with coordinates                                   |
|                | Tencent Maps      | View map, search, nearby search, directions with coordinates                    |

## Platform configuration

Some platforms require you to declare URL schemes or package visibility before the OS will allow installation checks.

| Platform | File                                       | Required? |
| -------- | ------------------------------------------ | --------- |
| iOS      | `ios/Runner/Info.plist`                    | Yes       |
| Android  | `android/app/src/main/AndroidManifest.xml` | Yes       |
| macOS    | `macos/Runner/Info.plist`                  | Yes       |
| Windows / Linux / Web | —                             | No config |

Each app's [doc page](#documentation) lists the exact schemes and package names. For example, Telegram + App Store on iOS:

```xml
<!-- ios/Runner/Info.plist -->
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>tg</string>
    <string>itms-apps</string>
</array>
```

…and Instagram on Android:

```xml
<!-- android/app/src/main/AndroidManifest.xml -->
<queries>
    <package android:name="com.instagram.android" />
</queries>
```

For 2GIS specifically, declare `<string>dgis</string>` on iOS and `<package android:name="ru.dublgis.dgismobile" />` on Android.

For Yandex Maps, add `<string>yandexmaps</string>` on iOS and
`<package android:name="ru.yandex.yandexmaps" />` on Android.

For Yandex Navigator, add `<string>yandexnavi</string>` on iOS,
`<package android:name="ru.yandex.yandexnavi" />` on Android, and an Android
`VIEW` intent query for the `yandexnavi` scheme.

For Tencent Maps, add `<string>qqmap</string>` on iOS,
`<package android:name="com.tencent.map" />` on Android, and an Android
`VIEW` intent query for the `qqmap` scheme.

For NAVER Map, add `<string>nmap</string>` on iOS,
`<package android:name="com.nhn.android.nmap" />` on Android, and an Android
`VIEW` intent query for the `nmap` scheme.

For Mapy.com, add `<string>szn-mapy</string>` on iOS and
`<package android:name="cz.seznam.mapy" />` on Android.

For TMAP, add `<string>tmap</string>` on iOS and
`<package android:name="com.skt.tmap.ku" />` on Android.

For KakaoMap, add `<string>kakaomap</string>` on iOS and
`<package android:name="net.daum.android.map" />` on Android.

For Sygic Truck, add `<package android:name="com.sygic.truck" />` on Android.
The proposed iOS integration shares regular Sygic's `com.sygic.aura` scheme;
see the [Sygic Truck validation limitations](doc/apps/sygic_truck.md#validation-status) before relying on it.

For CoPilot, add `<string>copilot</string>` on iOS and
`<package android:name="com.alk.copilot.mapviewer" />` on Android. URL launch requires
the provider's Truck license.

TomTom GO Fleet navigation intents are supported on Android only. Add
`<package android:name="com.tomtom.gplay.navapp.gofleet" />` to the Android manifest.
No iOS scheme or store action is configured.

TomTom GO Expert is the rebranded GO Navigation app. Add
`<package android:name="com.tomtom.gplay.navapp" />` on Android and open it with
`await DeeplinkX().launchApp(TomTomGoExpert.open(fallbackToStore: true));`.
Its official Android/iOS store listings and product website are configured as
fallbacks. The unpublished draft also proposes `view` and `directionsWithCoords`
actions with Android package-targeted intents and the iOS `tomtomgo` scheme.
Add `<string>tomtomgo</string>` to iOS `LSApplicationQueriesSchemes` for testing.
These native navigation contracts are unverified: passing serialization tests
does not establish runtime support. Do not publish this draft before validation.

## DeeplinkX vs `url_launcher`

`url_launcher` is a general-purpose URL opener. DeeplinkX is purpose-built for external app deeplinks:

|                                    | DeeplinkX                      | `url_launcher`                                     |
| ---------------------------------- | ------------------------------ | -------------------------------------------------- |
| **Typed API for popular apps**     | ✅ 42 apps, no URL maintenance | ❌ Raw URLs only                                   |
| **Automatic store / web fallback** | ✅ Built in                    | ❌ Manual implementation required                  |
| **Installation check**             | ✅ `isAppInstalled()`          | ⚠️ `canLaunchUrl()` — unreliable for HTTPS schemes |
| **Android Intent support**         | ✅ Advanced intent options     | ⚠️ Basic intent launching only                     |
| **macOS custom scheme check**      | ✅ Supported                   | ❌ Not supported                                   |
| **Map actions across apps**        | ✅ View / search / directions, first installed | ❌ Not available                       |
| **Store listing redirect**         | ✅ One call, all platforms     | ❌ Not available                                   |

Redirecting to a store page with `url_launcher` means detecting the platform, looking up each store's URL format, and handling Huawei edge cases — everywhere you need it. DeeplinkX does it in one `redirectToStore` call.

Compared to single-purpose alternatives, `external_app_launcher` opens an app or its store listing but has no typed map or social-app actions. DeeplinkX covers apps, maps, and stores from one typed API.

## Return values

Every launch method returns a `Future<bool>`:

- `launchAction`, `launchApp` — `true` if the app launched **or** a fallback (store/web) succeeded; `false` otherwise.
- `isAppInstalled` — `true` if the app is installed.
- `redirectToStore` — `true` if any matching store opened; `false` if no store matched the platform or none launched.
- `launchMap*Action` — `true` if any listed provider (or its fallback) launched.

DeeplinkX swallows platform errors internally and reports them through this boolean, so a launch never throws — branch on the result.

## Missing an app?

If DeeplinkX doesn't support the app, store, or navigation provider you need, open a [new app request](https://github.com/DeepLinkX/DeeplinkX/issues/new?template=new_app_request.yml) with the app name, target platforms, known schemes/App Link patterns, store links, and the actions you want.

## Documentation

The [roadmap](ROADMAP.md) lists existing apps and actions, pending app integrations, and planned features in implementation order.

Per-app pages (schemes, required config, fallback behavior) live in [`doc/apps`](https://github.com/DeeplinkX/DeeplinkX/tree/master/doc/apps). Full API reference: [pub.dev](https://pub.dev/documentation/deeplink_x/latest/).

**Stores:** [iOS App Store](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/ios_app_store.md) ·
[Mac App Store](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/mac_app_store.md) ·
[Microsoft Store](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/microsoft_store.md) ·
[Google Play](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/play_store.md) ·
[Huawei AppGallery](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/huawei_app_gallery_store.md) ·
[Cafe Bazaar](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/cafe_bazaar_store.md) ·
[Myket](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/stores/myket_store.md)

**Apps:** [ChatGPT](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/chatgpt.md) ·
[Netflix](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/netflix.md) ·
[Temu](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/temu.md) ·
[Snapchat](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/snapchat.md) ·
[CapCut](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/capcut.md) ·
[Facebook](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/facebook.md) ·
[Instagram](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/instagram.md) ·
[Telegram](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/telegram.md) ·
[WhatsApp](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/whatsapp.md) ·
[LinkedIn](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/linkedin.md) ·
[YouTube](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/youtube.md) ·
[Twitter](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/twitter.md) ·
[Threads](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/threads.md) ·
[Pinterest](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/pinterest.md) ·
[TikTok](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/tiktok.md) ·
[Zoom](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/zoom.md) ·
[Slack](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/slack.md) ·
[Google Maps](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/google_maps.md) ·
[Amap](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/amap.md) ·
[Baidu Maps](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/baidu_maps.md) ·
[NAVER Map](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/naver_map.md) ·
[2GIS](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/2gis.md) ·
[Waze](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/waze.md) ·
[Apple Maps](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/apple_maps.md) ·
[Sygic](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/sygic.md) ·
[Sygic Truck](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/sygic_truck.md) ·
[CoPilot](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/copilot.md) ·
[TomTom GO Fleet](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/tomtom_go_fleet.md) ·
[TomTom GO Expert](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/tomtom_go_expert.md) ·
[Moovit](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/moovit.md) ·
[Air Navigation Pro](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/air_navigation_pro.md) ·
[Mappls](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/mappls.md) ·
[Mapy.com](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/mapy_cz.md) ·
[TMAP](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/tmap.md) ·
[KakaoMap](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/kakao_map.md) ·
[HERE WeGo](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/here_wego.md) ·
[Citymapper](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/citymapper.md) ·
[OsmAnd](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/osmand.md) ·
[Neshan](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/neshan.md) ·
[Yandex Maps](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/yandex_maps.md) ·
[Yandex Navigator](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/yandex_navigator.md) ·
[Tencent Maps](https://github.com/DeeplinkX/DeeplinkX/blob/master/doc/apps/tencent_maps.md)

## Contributing

Contributions are welcome — fork, branch, and open a PR. Please check existing issues first. Found a rough edge or a gap? The [feedback form](https://github.com/DeepLinkX/DeeplinkX/issues/new?template=feedback.yml) directly shapes the API and docs.

## License

MIT — see [LICENSE](https://github.com/DeeplinkX/DeeplinkX/blob/master/LICENSE).

## Changelog
## 1.5.8

### Added

* Added `WhatsApp.chatByUsername` with optional prefilled messages, native username links, store and web fallbacks, documentation, tests, and a catalog example.

### Fixed

* Corrected the WhatsApp documentation's text-sharing examples to use `WhatsApp.shareText`.

## 1.5.7

### Added

* Added OsmAnd open app, view map, and directions with coordinates actions with package-targeted Android intents, official store/web fallbacks, documentation, tests, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.5.6

### Added

* Added Citymapper open app, view map (directions to a point), and directions with coordinates actions with package-targeted Android intents, official store/web fallbacks, documentation, tests, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.5.5

### Added

* Added HERE WeGo open app, view map, and directions with coordinates actions using the official HERE share-link contract, with documentation, tests, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.5.4

### Added

* Drafted TomTom GO Expert open app, view map, and directions with coordinates APIs with official Android/iOS store links, website fallback, documentation, catalog examples, and tests. Native iOS opening and navigation links are unverified; this integration is not ready for publication.

## 1.5.3

### Added

* Added Android TomTom GO Fleet open app, view map, and directions with coordinates actions, catalog examples, map-selector support, platform visibility, documentation, and tests.

## 1.5.2

### Added

* Added CoPilot open app, view map, and directions with coordinates actions, catalog examples, map-selector support, platform configuration, documentation, and tests.

## 1.5.1

### Added

* Added Sygic Truck open app, view map, and directions with coordinates actions, with catalog examples, map-selector support, platform configuration, documentation, and tests.

## 1.5.0

### Added

* Added KakaoMap with open app, view map, and directions with coordinates actions.
* Added KakaoMap documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.12

### Added

* Added TMAP app with the following actions:
  * Open app
  * View map
  * Directions with coordinates
* Added TMAP documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.11

### Added

* Added Mapy.com app with the following actions:
  * Open app
  * View map
  * Search
  * Directions with coordinates
* Added Mapy.com documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.10

### Added

* Added Mappls app with the following actions:
  * Open app
  * View map
  * Directions with coordinates
* Added Mappls documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.9

### Added

* Added Air Navigation Pro app with the following actions:
  * Open app
  * View map
  * Directions with coordinates
* Added Air Navigation Pro documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.8

### Added

* Added CapCut app with the following actions:
  * Open app
  * Open template link
* Added CapCut documentation, tests, public API coverage, catalog examples, and Android/iOS visibility configuration.

## 1.4.7

### Added

* Added Snapchat app with the following actions:
  * Open app
  * Open profile by username
* Added Snapchat documentation, tests, public API coverage, catalog examples, and Android/iOS visibility configuration.

## 1.4.6

### Added

* Added Temu app with the following actions:
  * Open app
  * Open Temu link
  * Search
* Added Temu documentation, tests, public API coverage, catalog examples, and Android/iOS visibility configuration.

## 1.4.5

### Added

* Added Netflix app with the following actions:
  * Open app
  * Open title
  * Watch title
* Added Netflix documentation, tests, public API coverage, catalog examples, and Android/iOS visibility configuration.

## 1.4.4

### Added

* Added ChatGPT app with the following actions:
  * Open app
  * Open shared conversation
  * Open GPT
* Added ChatGPT documentation, tests, public API coverage, catalog examples, and Android/iOS visibility configuration.

### Fixed

* Updated Google Maps view and search web fallbacks to the canonical Maps URL formats with the required `api=1` parameter.
* Documented and regression-tested destination-only and explicit-origin coordinate directions fallbacks, which already used the canonical `api=1` contract.

## 1.4.3

### Added

* Added NAVER Map app with the following actions:
  * Open app
  * View the main map or a named marker
  * Integrated map search and bus-number search
  * Directions with coordinates, optional origin, up to five waypoints, and driving, public-transit, walking, or bicycling modes
  * Turn-by-turn navigation with coordinates and optional waypoints
  * Safe-driving mode
* Added action-preserving NAVER web fallbacks for map and search actions, plus destination-marker fallbacks for route and navigation actions.
* Added NAVER Map documentation, tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.2

### Added

* Added Tencent Maps app with the following actions:
  * Open app with the official cross-platform download fallback
  * View map using a custom marker or coordinate reverse geocoding
  * Search with an optional city region
  * Nearby search using a coordinate or the current location
  * Directions with coordinates, optional origin, destination details, POI ID, up to 15 waypoints, and driving, transit, walking, or bicycling modes
* Added action-preserving Tencent Maps web fallbacks for view, search, nearby search, and supported route modes, plus a destination fallback for bicycling.
* Added Tencent Maps documentation, unit tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.1

### Added

* Added Yandex Navigator app with the following actions:
  * Open app
  * View map action with zoom, marker visibility, optional description, and launch identification parameters
  * Search action with optional launch identification parameters
  * Directions with coordinates action, including optional origin, waypoints, and launch identification parameters
* Added action-preserving Yandex Maps web fallbacks for view, search, and directions actions.
* Added Yandex Navigator documentation, unit tests, public API coverage, catalog examples, map-selector support, and Android/iOS visibility configuration.

## 1.4.0

### Added

* Added a cached, tag-based GitHub Actions workflow that signs and publishes architecture-specific Android demo APKs for ARM64, ARMv7, and x86_64.
* Added a filterable home gallery (use cases / apps / stores) and restyled the nine real-world use cases, the launch selector sheet, and the result snackbars to the new design system.
* Expanded the example app with nine real-world use cases for store and map selection, social support, ratings, sharing, installation checks, collaboration, promoted app CTAs, and fallback behavior.
* Added missing Sygic and Apple Maps visibility declarations required by the example's installation checks.

### Changed

* Redesigned the example app after the DeeplinkX design file: a mobile-first gallery with light/dark theming, bundled Instrument Sans typography, and a phone-frame presentation on wide viewports.
* Replaced the 29 hand-written example pages with a declarative action catalog and a single shared detail screen covering every public app, store, and action with real API labels, a store-fallback toggle, and a live installation indicator.

## 1.3.9

### Added

* Added verified Threads search and topic-tag actions with native Android/iOS links and web fallbacks.
* Added the audited app queries to the example iOS and Android projects and documented Telegram's Android package-visibility setup.

### Changed

* Audited Amap, Baidu Maps, 2GIS, Yandex Maps, Moovit, and Neshan URI contracts against current provider documentation and physical Android behavior.

### Fixed

* Prevented combined intent/app-link actions from retrying the same app link.
* Corrected provider-specific route modes, marker defaults, source/partner identifiers, validation, Android URI variants, and canonical web fallbacks.

## 1.3.8

### Added

* Added Yandex Maps app support:
  * Open app
  * Open map
  * View map
  * Search
  * Open organization card
  * Open "What's here?"
  * Directions with coordinates
  * Panorama
* Added Yandex Maps documentation, tests, public API coverage, README entries, and example app page

## 1.3.7

### Added

* Added 2GIS app with the following actions:
  * Open app
  * View map action
  * Directions with coordinates action, including optional origin and travel mode
* Added documentation for 2GIS deeplinks
* Added unit tests covering 2GIS actions, exports, and map action interfaces

### Changed

* Updated README map-action examples and supported app tables
* Updated the example app with a dedicated 2GIS page and asset

## 1.3.6

### Added

* Added Baidu Maps app with the following actions:
  * Open app
  * View map action
  * Search action
  * Nearby search action
  * Transit line action
  * Directions action
  * Directions with coordinates action
  * Native navigation action
* Added documentation for Baidu Maps deeplinks
* Added unit tests covering all Baidu Maps actions, exports, and map action interfaces

### Changed

* Updated README map-action examples and supported app tables
* Updated the example app with a dedicated Baidu Maps page and asset

## 1.3.5+2

### Added

* Added tag-based GitHub Actions publishing to pub.dev.

## 1.3.5+1

### Added

* Added a Pub Readiness GitHub Actions workflow that enforces a full Pana score and runs `flutter pub publish --dry-run`.

## 1.3.5

### Added

* Added Moovit app with the following actions:
  * Open app
  * View map action
  * Directions with coordinates action
* Added documentation for Moovit deeplinks
* Added unit tests covering all Moovit actions and exports

### Changed

* Updated the example app with a dedicated Moovit page and asset

## 1.3.4+1

### Added

* Added README wording for URL schemes, Android Intents, and App Links, plus install-check phrasing around `isAppInstalled()`.
* Added brief README comparisons with single-purpose alternatives.

### Changed

* Refined the package description and README wording for pub.dev keyword visibility (named WhatsApp, Telegram, Instagram, YouTube, Google Maps, and Waze explicitly).

## 1.3.4

### Added

* Added Amap app with the following actions:
  * Open app
  * My location action
  * View map action
  * Search action with optional bounds
  * Directions action
  * Directions with coordinates action with optional origin, waypoints, and travel modes
* Added documentation for Amap deeplinks
* Added unit tests covering all Amap actions and exports

### Changed

* Updated README map-action examples and supported app tables
* Updated the example app with a dedicated Amap page and asset

## 1.3.3

### Added

* Added Neshan app with the following actions:
  * Open app
  * View map
  * Directions with coordinates
* Added documentation for Neshan deeplinks.
* Added unit tests covering Neshan actions, exports, and map action interfaces.

### Changed

* Updated the example app with a dedicated Neshan page and asset.

## 1.3.2+1

### Changed

* Rewrote the README with a clearer structure and a fallback flow diagram.
* Improved maps discoverability in the package description and topics.

## 1.3.2

### Added

* Added Threads app support, requested by @hafizidev in issue #28:
  * Open app
  * Open profile action
  * Open post action
  * Open comments action
  * Create post action
* Added documentation for Threads deeplinks

### Changed

* Updated the example app with a Threads page and asset

## 1.3.1+1

### Breaking Changes

* Updated package metadata in `pubspec.yaml`, including homepage, documentation URL, topics, screenshots, and minimum Flutter SDK.

### Added

* Added a promoted app/ad CTA `redirectToStore` example with supported tracking and referrer parameters.

### Changed

* Refined README and API guidance for store redirects, clarifying that `redirectToStore` routes users to a configured target app's platform-specific store listing for installs, updates, promotions, or ad landing flows.
* Improved map provider fallback documentation to better explain declaring one navigation action and letting DeeplinkX launch the first installed provider.
* Updated README tables and examples for clearer supported action, platform configuration, documentation, and `url_launcher` comparison sections.

## 1.3.1

### Added

* Added GitHub issue forms for user feedback and new app requests

### Changed

* Restructured README for better first-read flow:
  * Restored table of contents
  * Moved feature overview before demo content
  * Added supported stores and apps to the feature summary
  * Updated quick start with an iOS Telegram profile example and required `Info.plist` schemes
  * Expanded core concepts, recipes, platform configuration, and the `url_launcher` comparison
  * Added a dedicated new app request callout

## 1.3.0

### Added

* Added map action abstractions for navigation providers:
  * `MapAppAction`
  * `MapViewAction`
  * `MapSearchAction`
  * `MapDirectionsAction`
  * `MapDirectionsWithCoordsAction`
* Added typed map launch utilities to `DeeplinkX`:
  * `launchMapViewAction`
  * `launchMapSearchAction`
  * `launchMapDirectionsAction`
  * `launchMapDirectionsWithCoordsAction`
* Added tests for map abstractions, launch utilities, and public API coverage

### Changed

* Updated README examples and AGENTS navigation-app guidance

## 1.2.0

### Changed

* Bump dependency deeplink_x_macos version to 0.2.0 ([#Change](https://pub.dev/packages/deeplink_x_macos/changelog#020))
  * Added Swift Package Manager (SPM) support in macOS federated plugin
* Improved documentation and README
  * Added a table of contents and GIF demos to README
  * Updated snippets to use `fallbackToStore` and named arguments
  * Updated Telegram method names in docs (`openProfileByPhoneNumber`, `sendMessageByPhoneNumber`)
* Updated example app reliability and presentation
  * Prevent crashes on invalid numeric input in map pages
  * Updated Android and iOS example configuration and default inputs
  * Fixed Sygic icon asset and adjusted splash screen visuals
* Minor internal code readability improvements

### Fixed

* Fixed platform and store handling
  * Handle web platform explicitly in PlatformUtil
  * Make app store platform values readonly
* Fixed YouTube fallback behavior
  * Removed Microsoft Store fallback from YouTube store actions
  * Updated related tests and documentation

## 1.1.6

### Added

* Added Sygic GPS Navigation app with the following actions:
  * Open app
  * View map action
  * Directions with coordinates action (drive or walk)
* Added documentation for Sygic deeplinks
* Added unit tests covering all Sygic actions and exports

### Changed

* Updated the example app with a dedicated Sygic page and assets

## 1.1.5

### Added

* Added Apple Maps app with the following actions:
  * Open app
  * View map action
  * Search action
  * Directions action
  * Directions with coordinates action
* Added documentation for Apple Maps deeplinks
* Added tests for the Apple Maps integration

### Changed

* Updated example app with an Apple Maps tab

## 1.1.4

### Changed

* Bump dependency deeplink_x_android version to 1.0.0 ([#Change](https://pub.dev/packages/deeplink_x_android/changelog#100))

## 1.1.3+3

### Added

* Added Waze app with the following actions:
  * Open app
  * View map action
  * Search action — no web fallback
  * Directions action
  * Directions with coordinates action
* Added documentation for Waze deeplinks

### Changed

* Update coordinate model tests for coverage issue
* Updated example app with a Waze tab

## 1.1.3+2

### Fixed

* Fixed changelog format

## 1.1.3+1

### Added

* Added coordinate model tests for better reliability

## 1.1.3

### Added

* Added Waze app with the following actions:
  * Open app
  * View map action
  * Search action — no web fallback
  * Directions action
  * Directions with coordinates action
* Added documentation for Waze deeplinks

### Changed

* Updated example app with a Waze tab

## 1.1.2+1

### Changed

* Updated example project
  * Added splash screen with DeeplinkX logo
  * Added home screen with grid or list view of apps and stores
  * Splited main.dart to specific per app page
* Updated readme
  * Added DeeplinkX logo
  * Add demo link

## 1.1.2

### Added

* Added Google Maps app with following actions:
  * Open app
  * View map action
  * Search location action
  * Directions action
  * Directions with coordinates action
* Added documentation for Google Maps deeplinks

### Changed

* Updated example app with Google Maps tab

## 1.1.1

### Added

* Added Slack app with following actions:
  * Open app
  * Open Team Action
  * Open Channel Action
  * Open User Action
* Added documentation for Slack deeplinks

### Changed

* Updated example app with Slack tab

## 1.1.0

### Added

* Added Zoom app with following actions:
  * Open app
  * Join Meeting Action
* Added documentation for Zoom deeplinks

### Changed

* Now DeeplinkX is more reliable for 100% test coverage
* Updated example app with Zoom tab

### Fixed

* Bug Fixes

## 1.0.5

### Added

* Added TikTok app with following actions:
  * Open app
  * Open Profile Action
  * Open Video Action
  * Open Tag Action
* Added documentation for TikTok deeplinks

### Changed

* Updated example app with TikTok tab

## 1.0.4

### Added

* Added Pinterest app with following actions:
  * Open app
  * Open Profile Action
  * Open Pin Action
  * Open Board Action
  * Search action
* Added documentation for Pinterest deeplinks

### Changed

* Updated example app with Pinterest tab

## 1.0.3

### Added

* Added Twitter (X) app with following actions:
  * Open app
  * Open Profile Action
  * Open Tweet Action
  * Search action
* Added documentation for Twitter deeplinks

### Changed

* Updated example app with Twitter tab

## 1.0.2

### Added

* Added YouTube app with following actions:
  * Open app
  * Open video action
  * Open channel action
  * Open playlist action
  * Search action
* Added documentation for YouTube deeplinks

### Changed

* Updated example app with YouTube tab

## 1.0.1

### Added

* Added Facebook app with following actions:
  * Open app
  * Open profile by username action
  * Open profile by profile ID action
  * Open page action
  * Open group action
  * Open event action
* Added platform support for apps for checking if app is installed

### Fixed

* Fixed some bugs

## 1.0.0

### Breaking Changes

* Changed required permissions for Android:
  * Instead of adding intent filter query, we now use package query to check if app is installed
  * Checkout each app's documentation for required permissions

### Added

* First major release
* New methods:
  * Redirect To Store
  * Launch App
  * Is App Installed
* Added ability to ignore fallback to web or store when native app is not installed

### Changed

* More reliable deeplinks:
  * App Links
  * Universal Links
  * Android Intent call

## 0.1.3

### Changed

* Improved README
  * Used complete GitHub links instead of relative paths

## 0.1.2

### Added

* Added support for LinkedIn deeplinks:
  * Open profile
  * Open company page
* Added support for Huawei AppGallery Store deeplinks:
  * Open app page by app ID and package name
* Added support for Cafe Bazaar Android app store deeplinks:
  * Open Cafe Bazaar app
  * Open app page by package name
* Added support for Myket Android app store deeplinks:
  * Open Myket app
  * Open app page by package name
  * Rate app by package name
* Added can launch native deeplink method to check app installed and action can be launched
* Added support for Telegram deeplinks:
  * Open app
  * Start chat by phone number and pre-filled message
  * Share text content
* Added WASM support
* Added third party licenses in LICENSES

## 0.1.1

### Changed

* Improved readme

## 0.1.0

### Added

* New Feature:
  * Added fallback to supported stores option when desired app is not installed
* Added support for Mac App Store deeplinks:
  * Open Mac App Store
  * Open app page by app ID
  * Open app review page
* Added support for Microsoft Store deeplinks:
  * Open Microsoft Store
  * Open app page by app ID
  * Open app review page

## 0.0.3

### Added

* Added support for Google Play Store deeplinks:
  * Open Play Store
  * Open app page by app package name
  * Open app review page
* Added support for Huawei AppGallery deeplinks:
  * Open AppGallery
  * Open app page by app ID
  * Open app review page

## 0.0.2

### Added

* Added support for App Store deeplinks:
  * Open App Store
  * Open app page by app ID
  * Open app review page
  * Open app iMessage extension
* Added support for Telegram deeplinks:
  * Open app
  * Open profile by username
  * Open profile by phone number
  * Send message by username
  * Send message by phone number
* Added comprehensive documentation:
  * App-specific document structure
  * Links to official API documentation
  * URL schemes and web fallbacks
* Added platform-specific configuration guides:
  * LSApplicationQueriesSchemes for iOS
  * Android manifest query requirements

### Changed

* Improved example project:
  * Added Material 3 design
  * Enhanced UI/UX
  * Added URL scheme handling
* Updated dependencies and linting rules
* Improved code quality with stricter analysis options

### Fixed

* Fixed platform support information
* Fixed Android manifest requirements

## 0.0.1

### Added

Initial release of DeeplinkX with the following features:

* Added support for Instagram deeplinks:
  * Open app
  * Open profile
* Cross-platform support for iOS, Android, Web, and Desktop platforms
* Automatic fallback to web URLs when native apps are not available
* Type-safe API for creating deeplinks







 
