Back to skills
SkillHub ClubBuild MobileMobileFrontendBackend

deep-linking

Provides configuration examples for implementing deep linking in Expo/React Native apps, covering URL schemes, Universal Links (iOS), and App Links (Android). Includes code snippets for app.json setup, server configuration files, and testing commands.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
5
Hot score
82
Updated
March 20, 2026
Overall rating
A7.8
Composite score
5.2
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install timequity-plugins-deep-linking
exporeact-nativedeep-linkingapp-linksuniversal-links

Repository

timequity/plugins

Skill path: craft-coder/mobile/deep-linking

Provides configuration examples for implementing deep linking in Expo/React Native apps, covering URL schemes, Universal Links (iOS), and App Links (Android). Includes code snippets for app.json setup, server configuration files, and testing commands.

Open repository

Best for

Primary workflow: Build Mobile.

Technical facets: Mobile, Frontend, Backend, Testing.

Target audience: React Native/Expo developers implementing deep linking for mobile apps.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: timequity.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install deep-linking into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/timequity/plugins before adding deep-linking to shared team environments
  • Use deep-linking for mobile workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: deep-linking
description: Universal Links, App Links, and URL scheme configuration.
---

# Deep Linking

## URL Schemes

```json
// app.json
{
  "expo": {
    "scheme": "myapp"
  }
}
```

```typescript
// Handle myapp://path
import * as Linking from 'expo-linking';

const url = Linking.createURL('path/to/screen', {
  queryParams: { id: '123' },
});
// myapp://path/to/screen?id=123
```

## Universal Links (iOS)

```json
// app.json
{
  "expo": {
    "ios": {
      "associatedDomains": ["applinks:example.com"]
    }
  }
}
```

```json
// /.well-known/apple-app-site-association
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAM_ID.com.example.app",
        "paths": ["/product/*", "/user/*"]
      }
    ]
  }
}
```

## App Links (Android)

```json
// app.json
{
  "expo": {
    "android": {
      "intentFilters": [
        {
          "action": "VIEW",
          "autoVerify": true,
          "data": [
            {
              "scheme": "https",
              "host": "example.com",
              "pathPrefix": "/product"
            }
          ],
          "category": ["BROWSABLE", "DEFAULT"]
        }
      ]
    }
  }
}
```

```json
// /.well-known/assetlinks.json
[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.app",
    "sha256_cert_fingerprints": ["..."]
  }
}]
```

## Expo Router

```typescript
// app/_layout.tsx
export default function Layout() {
  return (
    <Stack>
      <Stack.Screen name="product/[id]" />
    </Stack>
  );
}

// app/product/[id].tsx
export default function ProductScreen() {
  const { id } = useLocalSearchParams();
  // https://example.com/product/123 -> id = "123"
}
```

## Testing

```bash
# iOS Simulator
xcrun simctl openurl booted "myapp://product/123"

# Android Emulator
adb shell am start -a android.intent.action.VIEW -d "myapp://product/123"
```
deep-linking | SkillHub