<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eighteen1 Studios</title>
    <description>The latest articles on DEV Community by Eighteen1 Studios (@eighteen1_studios).</description>
    <link>https://dev.to/eighteen1_studios</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4221815%2F97e78a3c-5e71-4f6a-bc43-d01219ded783.png</url>
      <title>DEV Community: Eighteen1 Studios</title>
      <link>https://dev.to/eighteen1_studios</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eighteen1_studios"/>
    <language>en</language>
    <item>
      <title>How to fix App Store and Play Store links in TikTok's in-app browser ("Action can't be completed")</title>
      <dc:creator>Eighteen1 Studios</dc:creator>
      <pubDate>Mon, 02 Nov 2026 08:01:35 +0000</pubDate>
      <link>https://dev.to/eighteen1_studios/how-to-fix-app-store-and-play-store-links-in-tiktoks-in-app-browser-action-cant-be-completed-56f</link>
      <guid>https://dev.to/eighteen1_studios/how-to-fix-app-store-and-play-store-links-in-tiktoks-in-app-browser-action-cant-be-completed-56f</guid>
      <description>&lt;p&gt;You've posted a video about your app, it's doing well, and you've put a store link in your bio. Clicks are coming in, but installs aren't. You tap the link yourself on your laptop and it works perfectly, so what's going on?&lt;/p&gt;

&lt;p&gt;Very often the answer is the &lt;strong&gt;in-app browser&lt;/strong&gt;. TikTok and Instagram don't open links in Safari or Chrome. They open them in their own built-in browser, and that browser doesn't always hand App Store or Google Play links over to the store app. On TikTok, users on iPhone often see a blunt &lt;strong&gt;"Action can't be completed"&lt;/strong&gt; message. Most of them won't try again.&lt;/p&gt;

&lt;p&gt;This post explains why it happens, how to test it properly, what you can fix yourself, and where the DIY fixes run out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it happens
&lt;/h2&gt;

&lt;p&gt;When you tap a link in TikTok or Instagram, the page loads inside a WebView controlled by the app. That's deliberate: it keeps people inside the app. It has a few side effects for app developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Store handoffs depend on the host app.&lt;/strong&gt; Opening the App Store or Play Store means leaving the WebView for another app. Whether that's allowed, and how, is up to the host app's WebView setup. Plain &lt;code&gt;https://apps.apple.com/...&lt;/code&gt; links, &lt;code&gt;itms-apps://&lt;/code&gt; schemes and redirects that end at a store URL don't always behave the same way as they would in Safari.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirect chains get treated differently.&lt;/strong&gt; Many link shorteners and link-in-bio pages redirect through one or more URLs before reaching the store. A chain that works in a normal browser can stall or fail inside an in-app browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Universal Links and App Links often don't fire.&lt;/strong&gt; iOS Universal Links and Android App Links are designed to open an &lt;em&gt;installed&lt;/em&gt; app from a link, and they generally aren't triggered from inside another app's WebView in the same way. And if the user hasn't installed your app yet, they don't help anyway.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behaviour changes without notice.&lt;/strong&gt; TikTok and Instagram update their apps often, and in-app browser behaviour can differ between versions, platforms and regions. Something that worked last month might not work today.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is the same for you either way: a user who was interested enough to tap never reaches your store page.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to test it properly
&lt;/h2&gt;

&lt;p&gt;The most common mistake is testing the link in a desktop browser, or by pasting it into Safari. That tells you nothing about the in-app browser. Test it where your users actually tap it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Put the link in your TikTok bio&lt;/strong&gt; (or a test account's bio) and tap it from the TikTok app on a real iPhone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat on a real Android phone.&lt;/strong&gt; The behaviour is often different.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do the same on Instagram:&lt;/strong&gt; bio link, story link sticker, and a link in a DM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with the app not installed&lt;/strong&gt;, because that's the case for new users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check after app updates.&lt;/strong&gt; Re-test every few weeks, or whenever installs drop without an obvious reason.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you see "Action can't be completed", a blank page, or a web version of the store page with a button that does nothing, you're losing installs.&lt;/p&gt;

&lt;h2&gt;
  
  
  DIY options (and their limits)
&lt;/h2&gt;

&lt;p&gt;There are a few things you can build yourself. They help, but none is a complete fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. A landing page with an "Open in browser" prompt
&lt;/h3&gt;

&lt;p&gt;Host a simple page on your own domain and link to that instead of the store. Detect the in-app browser from the user agent (TikTok and Instagram both identify themselves there) and show a message such as &lt;em&gt;"Tap ••• and choose Open in browser"&lt;/em&gt;, with an arrow pointing to the menu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; it adds friction, a lot of people won't follow the instructions, and user-agent strings change. You also need to keep the page fast, otherwise people bounce before it loads.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;intent://&lt;/code&gt; links on Android
&lt;/h3&gt;

&lt;p&gt;On Android you can try an &lt;code&gt;intent://&lt;/code&gt; URL that asks the system to open the Play Store, with a fallback URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;intent://details?id=com.example.app#Intent;scheme=market;package=com.android.vending;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.example.app;end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; support depends on how the host app's WebView handles intents, so it's not reliable across apps and versions. It does nothing for iPhone users.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Universal Links (iOS) and App Links (Android)
&lt;/h3&gt;

&lt;p&gt;These are worth setting up for your app anyway, because they let links open the installed app directly from Safari, Mail, Notes and so on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; they're for people who already have your app, and they're often not triggered from inside another app's in-app browser. They don't solve "get a new user to the store".&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Platform detection and smart redirects
&lt;/h3&gt;

&lt;p&gt;A small server-side script can check the user agent and send iPhone users to the App Store and Android users to Google Play, with a web page for desktop users. That's useful, because one link is easier to share than two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits:&lt;/strong&gt; you still have to handle the in-app browser case on top of it, keep it maintained, and add your own analytics if you want to know where clicks come from.&lt;/p&gt;

&lt;p&gt;Put together, a reasonably robust DIY setup is: your own domain, a fast landing page, platform detection, in-app browser detection with a fallback prompt, Android intent handling, and click tracking. It's doable, but it's yet another thing to maintain alongside your actual app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-link option
&lt;/h2&gt;

&lt;p&gt;I ran into this with my own app's TikTok traffic, which is why I built &lt;a href="https://pleaseopen.me?ref=devto" rel="noopener noreferrer"&gt;PleaseOpen.me&lt;/a&gt;. You get one link that's built to escape TikTok and Instagram in-app browsers and send people to the right store: the App Store on iPhone and Google Play on Android. It fixes the "Action can't be completed" problem without you maintaining any of the above.&lt;/p&gt;

&lt;p&gt;Each link also comes with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a simple &lt;strong&gt;landing page&lt;/strong&gt; for your app&lt;/li&gt;
&lt;li&gt;free &lt;strong&gt;privacy policy and ads.txt hosting&lt;/strong&gt;, which is handy if your app doesn't have a website yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;click analytics&lt;/strong&gt; by platform, device and country, so you can compare TikTok, Instagram and X, or give each creator their own tagged link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It has handled over 50,000 link visits so far, and there's a free plan if you want to try it on your own bio link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Test your store link &lt;strong&gt;inside&lt;/strong&gt; TikTok and Instagram, on iPhone and Android, with the app not installed&lt;/li&gt;
&lt;li&gt;[ ] Avoid long redirect chains in your bio link&lt;/li&gt;
&lt;li&gt;[ ] Use one link that detects the platform rather than two separate store links&lt;/li&gt;
&lt;li&gt;[ ] Handle the in-app browser case, either with a fallback prompt or a link that escapes it&lt;/li&gt;
&lt;li&gt;[ ] Track clicks per platform and channel so you notice when something breaks&lt;/li&gt;
&lt;li&gt;[ ] Re-test after major TikTok and Instagram updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your clicks look healthy but installs don't, the in-app browser is the first thing to check. Five minutes of testing on a real phone can save a lot of lost installs.&lt;/p&gt;

&lt;p&gt;Have you found other in-app browser quirks with store links? Let me know in the comments, I'd like to hear what you've run into.&lt;/p&gt;

</description>
      <category>android</category>
      <category>ios</category>
      <category>mobile</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
