{
  "id": 151756,
  "title": "Opening Web Invite Links Directly in the App with Expo Router",
  "url": "https://urgent.news/2026/08/05/opening-web-invite-links-directly-in-the-app-with-expo-router",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-05T00:08:21.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/hirodeath/opening-web-invite-links-directly-in-the-app-with-expo-router-2mco"
  },
  "original_language": "en",
  "account": "In the article, the author explains how they utilize Expo Router in their club management app to seamlessly open invite links directly within the app or display a web page when the app is not installed. They create a dynamic route for the invite screen located at apps/mobile/src/app/invite/[orgId]/index.tsx. The screen gathers the orgId from the URL using useLocalSearchParams and employs the api.organization.getPublic.useQuery method to fetch the relevant data.\n\nTo handle app-specific URLs, the author configures a Custom Scheme (squadnote://) in the Expo config, allowing them to manage URLs like squadnote://invite/abc during development and authentication callbacks. However, they employ Universal Links as the primary entry point to securely associate web URLs with the app.\n\nFor iOS development, they set associated domains in app.config.ts, differentiating between production and development environments. They also serve apple-app-site-association from their web domain, which defines the appID and paths the app should open. In this case, they focus on the invite link path /invite/* for added specificity.\n\nOn the mobile app, they share the HTTPS URL along with the openExternalBrowser=1 parameter for LINE's in-app browser. When the app is installed on iOS devices, it opens the app via Universal Link; otherwise, it opens the web invite page. The author clarifies that openExternalBrowser=1 is a separate concern from the Universal Links configuration.\n\nThroughout their explanation, the author emphasizes the importance of verification steps to ensure proper functioning. They highlight the need for an installed app, Apple App Site Association (AASA), and a signed build for Universal Links to work correctly. They also recommend verifying different scenarios, including TestFlight builds, deleted apps, and both production and development domains. Finally, they point out that, despite the complexity of setting up the domain association, creating the invite screen within the app itself was relatively straightforward due to the matching paths and file structure provided by Expo Router.",
  "summary": "This article is an English translation of the original Japanese article. In my club management app, I use the following invite URL for both web and iOS app: https://squad-note.com/invite/{orgId} If the app is installed, Expo Router opens the invite screen in the app. If not, the web page displays. Using Universal Links lets me share a single URL rather than splitting it into web and app versions.…",
  "key_points": [
    "Expo Router used to open invite links directly in app or display web page",
    "Custom Scheme (squadnote://) configured for app-specific URLs",
    "Universal Links serve as primary entry point for secure web URL association"
  ],
  "editors_take": "This development streamlines user experience by allowing seamless in-app access to web invite links, while also underscoring the need for meticulous verification to ensure proper functionality across different environments and scenarios.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}