From c853181cf1debb754ef550cbf4384844f2b83c8f Mon Sep 17 00:00:00 2001 From: Amjad Alsharafi <26300843+Amjad50@users.noreply.github.com> Date: Thu, 9 Apr 2026 08:53:26 +0800 Subject: [PATCH 1/3] fix(deep-link): filter out web links instead of app links in deep link domains This fixes a bug where on ios, deeplinks just don't work because the final Info.plist file doesn't have them. And also used a better id for CFBundleURLName Fixes regression from 28048039496e84b46847c008416d341f1349e30e --- plugins/deep-link/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/deep-link/build.rs b/plugins/deep-link/build.rs index f308ffe5f0..01c4f53a4b 100644 --- a/plugins/deep-link/build.rs +++ b/plugins/deep-link/build.rs @@ -139,7 +139,7 @@ fn main() { let deep_link_domains = config .mobile .iter() - .filter(|domain| !domain.is_app_link()) + .filter(|domain| !domain.is_web_link()) .collect::>(); if deep_link_domains.is_empty() { @@ -173,7 +173,7 @@ fn main() { ); dict.insert( "CFBundleURLName".into(), - domain.scheme[0].clone().into(), + format!("$(PRODUCT_BUNDLE_IDENTIFIER).{}", domain.scheme[0]).into(), ); plist::Value::Dictionary(dict) }) From fb0f2f29d993a26bc0eeec55273aa0bcfd35a47c Mon Sep 17 00:00:00 2001 From: Amjad Alsharafi <26300843+Amjad50@users.noreply.github.com> Date: Fri, 1 May 2026 10:23:26 +0800 Subject: [PATCH 2/3] feat(deep-link): add `webcredentials:` for iOS entitlements file --- plugins/deep-link/build.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/deep-link/build.rs b/plugins/deep-link/build.rs index 01c4f53a4b..9dfe21b797 100644 --- a/plugins/deep-link/build.rs +++ b/plugins/deep-link/build.rs @@ -128,7 +128,13 @@ fn main() { .iter() .filter(|d| d.is_app_link()) .filter_map(|d| d.host.as_ref()) - .map(|host| format!("applinks:{}", host).into()) + .flat_map(|host| { + [ + format!("applinks:{}", host), + format!("webcredentials:{}", host), + ] + }) + .map(Into::into) .collect::>() .into(), ); @@ -173,7 +179,8 @@ fn main() { ); dict.insert( "CFBundleURLName".into(), - format!("$(PRODUCT_BUNDLE_IDENTIFIER).{}", domain.scheme[0]).into(), + format!("$(PRODUCT_BUNDLE_IDENTIFIER).{}", domain.scheme[0]) + .into(), ); plist::Value::Dictionary(dict) }) From 39e9db23be33925669c3c314cee90dd93c314a35 Mon Sep 17 00:00:00 2001 From: Amjad Alsharafi <26300843+Amjad50@users.noreply.github.com> Date: Fri, 1 May 2026 10:24:20 +0800 Subject: [PATCH 3/3] chore: added changelog for deep-link patch --- .changes/fix-deep-link-ios-url-types.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changes/fix-deep-link-ios-url-types.md diff --git a/.changes/fix-deep-link-ios-url-types.md b/.changes/fix-deep-link-ios-url-types.md new file mode 100644 index 0000000000..14da4aa943 --- /dev/null +++ b/.changes/fix-deep-link-ios-url-types.md @@ -0,0 +1,10 @@ +--- +"deep-link": patch +--- + +Fixed an iOS regression where deep link URL types were generated from app links instead of custom URL schemes, which could prevent custom schemes from being registered correctly. + +Also updated the generated iOS `CFBundleURLName` to use `$(PRODUCT_BUNDLE_IDENTIFIER).{scheme}`. + +And added handling for `webcredentials:` in iOS entitlements +