Testing deep links on iOS is critical before launching your app or marketing campaign. A broken deep link can cost you users, conversions, and credibility. Here's how to test iOS deep links efficiently using multiple methods.
1. Testing Universal Links with Safari
The most straightforward way to test iOS Universal Links is through Safari:
Paste your deep link URL directly into Safari's address bar
Tap "Go" to navigate to the link
If configured correctly, iOS will prompt you to open the app or automatically launch it
Important: Long-pressing a link will NOT trigger Universal Links. You must tap normally or type the URL in the address bar
Common pitfall: Clicking links from Notes app or other Apple apps may not work. Always test from Safari or third-party apps like Messages, Mail, or Slack.
2. Testing with Apple's AASA Validator
Before device testing, verify your Apple App Site Association (AASA) file:
Visit Apple's AASA Validator Tool
Enter your domain name
Confirm the validator can access and parse your
apple-app-site-associationfileCheck that your app IDs and paths are correctly configured
This catches configuration errors before wasting time on device testing.
3. Command Line Testing with Terminal
For developers who prefer command-line tools, use curl to verify your AASA file is accessible:
curl -v https://yourdomain.com/.well-known/apple-app-site-associationor
curl -v https://yourdomain.com/apple-app-site-associationCheck that:
The HTTP response is 200 (not 301/302 redirect)
Content-Type is
application/jsonorapplication/pkcs7-mimeThe file returns valid JSON without errors
You can also open the url in a browser to test if everything looks good
4. Testing with Xcode and Simulator
While iOS Simulator has limitations, you can still test basic deep linking logic:
Open Terminal and use
xcrun simctl openurl booted "your-deep-link-url"This launches your app if the URL scheme is registered
Note: Universal Links don't work reliably in Simulator. Use physical devices for production testing
5. Physical Device Testing (Most Reliable)
Always test on real iOS devices before going live:
Fresh install: Delete the app, reinstall from TestFlight or App Store
Clear cache: After installation, wait 10-15 seconds for iOS to download the AASA file
Test in airplane mode: Once AASA is cached, test offline to ensure proper behavior
Test across iOS versions: Behavior can differ between iOS 14, 15, 16, and 17+
Test app-not-installed scenario: Uninstall your app and click the link to verify fallback behavior
6. Testing Deferred Deep Links
Deferred deep links require additional testing because they preserve context after app installation:
Uninstall your app completely
Click your deep link (user should be redirected to App Store)
Install the app from App Store
Launch the app for the first time
Verify the app navigates to the correct content screen based on the original link
This tests the full user journey for new users. Learn more about implementing deferred deep links in our iOS deferred deep linking guide.
7. Testing with Third-Party Messaging Apps
Real-world users click links from various sources. Test your deep links in:
WhatsApp, Telegram, Signal
iMessage and SMS
Email clients (Gmail, Outlook, Apple Mail)
Social media apps (Instagram, Facebook, Twitter/X)
Slack and other workplace tools
Some apps have in-app browsers that affect Universal Link behavior.
8. Testing Analytics and Attribution
Don't just test if the link opens verify that your analytics capture the event:
Click your deep link and check if analytics platforms register the click
Confirm device type, OS version, and location data are tracked
Verify conversion tracking if the link leads to a purchase or signup
Smler's link-level analytics provides real-time visibility into geographic location, device type, browser, and performance metrics.
9. Debugging Failed Universal Links
If your Universal Links aren't working, check these common issues:
AASA file not accessible: Must be served over HTTPS without redirects
Missing entitlements: Verify
com.apple.developer.associated-domainsin XcodeIncorrect domain format: Use
applinks:yourdomain.comnothttps://yourdomain.comCDN caching: iOS caches AASA files; changes may take hours to propagate
Cross-domain redirects: Universal Links break if your link redirects to a different domain
10. Automated Testing with XCUITest
For continuous integration, automate deep link testing with XCUITest:
func testDeepLink() { let safari = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari") safari.launch() // Navigate to deep link URL // Assert app launches and navigates correctly }This ensures regression testing as your app evolves.
Best Practices for iOS Deep Link Testing
Test early and often: Don't wait until launch week to test deep links
Document test cases: Create a checklist covering all link types and scenarios
Test edge cases: What happens with malformed URLs or missing parameters?
Monitor post-launch: Use analytics to identify broken links in production
Version compatibility: Test on the oldest iOS version you support
Deep Linking Made Affordable with Smler
Testing is only half the battle you need a reliable deep linking infrastructure that doesn't break the bank. Smler offers the most affordable deep linking solution on the market:
15,000 free links per month to get started without any commitment
$5 for 100,000 links industry-leading pricing that's 10x cheaper than competitors
Full support for iOS Universal Links and Android App Links
Built-in deferred deep linking with automatic fallback handling
Real-time analytics to track every click, device, and conversion
Custom branded domains for maximum trust and click-through rates
Whether you're a startup testing your first deep link or an enterprise managing millions of clicks, Smler scales with your needs. Check out our pricing plans and start testing your deep links today with our generous free tier.
For a complete implementation guide, visit our deep linking documentation or learn how to generate deferred deep links in Smler.
Published with LeafPad