Share Link API (DeepLinks) not opening app [Mac]

Whenever I paste a DeepLink’s URL into my browser, it doesn’t open the game wether or not I already have the Roblox app open.
Video:

If you need logs or anything else, please let me know!

1 Like

Hello There! I hope you’re doing well.
Thank you for taking the time to submit this issue and for reading our message.

To help us move forward, we’d appreciate your support with a few questions:

  • Is this issue still occurring on your device?
  • If so, could you please send us a log?

Don’t worry — we’ve got you covered!
You can find step-by-step instructions on how to generate and send the log How to post a Bug Report - Bug Reports - Developer Forum | Roblox

Following these steps will help us better understand the issue and work on a solution more efficiently.

Thank you again for your cooperation!

This is not Mac specific, but on Windows as well! I don’t think you can get logs because the website is meant to initiate the client which it doesn’t… I believe the issue is that it redirects too fast before it can initiate the client

Hiya!

How’s it goin? Sorry for the late response.

I believe this issue might have been fixed in an earlier change.

I have manually tested the following cases using the link from the video (Roblox), and in all cases I was successfully able to reach the experience. I attempted the following:

  • On a Mac device with Roblox closed, paste the link in Safari and click blue play button to launch experience in Roblox
  • On a Mac device with Roblox open, paste the link in Safari and click blue play button to launch experience in Roblox
  • On a Windows device with Roblox open, paste the link in Chrome and click blue play button to launch experience in Roblox
  • On a Windows device with Roblox closed, paste the link in Chrome and click blue play button to launch experience in Roblox

If this issue persists, could you please provide some supplementary information?

  • The deeplink you’re attempting to access and how/where you obtained it.
  • Detailed instructions for steps to reproduce.
  • Whether you have Roblox installed
  • Whether you are logged in on Roblox

A video like what you had before would also be greatly appreciated :smiley:, if it has indeed been fixed, I’d appreciate if you can confirm.

Much appreciated!

1 Like

This appears to still not be working.
The deeplink: Roblox

(Yes I have Roblox installed/logged into the same account on the web & in app)

Where it is generated:

  1. The client prompts the server to generate a deeplink
Code
local HttpService = game:GetService("HttpService")
local SocialService = game:GetService("SocialService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local Functions = ReplicatedStorage.Functions
local Modules = ReplicatedStorage.Modules
local Remotes = ReplicatedStorage.Remotes

local CustomFunctions = require(Modules.Functions)
local SupabaseAPI = require(script.Parent.ServerMain.SupabaseAPI)
local deepLinkDebounce = false

Functions.GetDeeplink.OnServerInvoke = function(player: Player, id: string, replyId: string?)
	if deepLinkDebounce then return false, "Please wait!" end
	deepLinkDebounce = true
	task.delay(1, function()
		deepLinkDebounce = false
	end)
	if typeof(id) ~= "string" then return false, "id not a string!" end
	if not CustomFunctions.isUUID(id) then return false, "id is not a UUID!" end
	if replyId ~= nil and typeof(replyId) ~= "string" then return false, "replyId is not a string!" end
	if replyId and not CustomFunctions.isUUID(replyId) then return false, "replyId is not a UUID!" end
	
	local isValid = SupabaseAPI.isThreadAndReplyValid(id, replyId)
	if not isValid then return false, "404 Not Found!" end
	
	local data = {
		t = `{id}{replyId and `/{replyId}` or ''}`
	}
	
	local launchData = HttpService:JSONEncode(data)
	
	local LinkSharingOptions = {
		ExpirationSeconds = 84600,
		PreviewTitle = data.topic_name or "Topic in Forums",
		PreviewDescription = data.reply_description or "",
		LaunchData = launchData,
	}
	
	local success, result = pcall(function()
		return SocialService:PromptLinkSharingAsync(player, LinkSharingOptions)
	end)

	if not success or result ~= Enum.PromptLinkSharingResult.Success then
		return false, "Couldn't generate link!"
	end
	
	Remotes.CreateTopNotification:FireClient(player, "rbxassetid://123370411116384", "Link copied to clipboard!")
	
	return true, "Generated link!"
end

Reproduction steps:

  1. Paste the link into Safari.
  2. Wait for the game page to load.
    2a. It shows the “Roblox is now loading. Geat ready!” text but it doesn’t actually have the app open ← this is the main problem
  3. When I click on the play button on the experience page to force the app to open, the JoinData/LaunchData is empty (which defeats the purpose of the deeplink)

(It doesn’t launch the app wether it is already open or not btw)

Server output after manually clicking the experience join button:
Screenshot 2025-12-11 at 10.48.33 PM

What I expect: I expect the app to open when I type in the deeplink and I expect there to be JoinData

It is late right now so I don’t have time to create a video, but I can do so tomorrow if you still need one.

Hmm… This is a bit of a pickle…

This is what happens when I follow your instructions:

If I’m understanding correctly, you’re experiencing 2 problems:

  1. The app is not immediately opening after pasting the link into Safari (and pressing enter).
  2. When you click on the blue play button, you’re not being directed to the"[Testing] Forums" experience, rather you’re simply landing on the home page of the Roblox Application.

For #1 - App not immediately opening

I think we’re both gonna be disappointed here; after doing some googling, it appears that Safari has a stricter app launch policy, requiring explicit user interaction (taps/clicks) to launch external applications for security reasons (something about preventing auto-launch of malicious links).

I pasting the link into my Chrome browser, and I was able to be successfully, immediately directed to a app launch prompt, which I may permit to open Roblox.

I suggest you try it with a handful of different browsers (Chrome, firefox etc…) and see what the result is.

For #2 - null launch data
There is an explicit difference in behaviour between our devices: In my case, the [testing] Forms experience launches successfully after hitting the blue play button, and in your case it yields this output:

Data "[]"
t: null

Which presumably means a redirect failure.

I have a few hypotheses:

  • Safari version discrepancy (I’m on Version 26.0.1 (20622.1.22.118.4)). You can find this by opening Safari → clicking Safari on the top-left → select “About Safari” on the dropdown menu
  • Safari security settings difference (Settings → Websites → Pop-up Windows | Downloads: should be set to “Allow”)
  • Some sort of Roblox versioning issue, especially if you’re on a modified client or an older client (I’m on Version 0.702.0.7020622). You can find this by opening the Roblox app → clicking “more” on the left toolbar → Scrolling down and clicking “About” → Clicking “App information” and reading from the top.

If changing your Safari security settings don’t fix this issue, and your versions are different from mine, please provide your version numbers, maybe we can figure out what’s causing the issues you’re facing :melting_face:

*fingers crossed*

Cheers!

My Safari version: 26.1 21622.2.11.11.9
My Roblox version: 0.702.0.7020622 (same as you)

I tested the same link on Google Chrome, and unlike Safari, it opened the Roblox application. Unfortunately, the join data was still blank, and it didn’t open up a topic in my game.

So yeah, I agree it’s something with Safari.

However, how does the Share Link give the game your launch data because it doesn’t seem to send it? When I type in the link, it redirects me to https://www.roblox.com/games/80656326595696/Forums. I only know of LaunchData being passed in the URL as a parameter.

Example: https://www.roblox.com/games/start?launchData=%7B%22t%22%3A%22d362dda8-c1ab-4942-9654-8efa603a40c3%2F8043bbdf-5782-45dd-93bf-61d9dd144e45%22%7D&placeId=80656326595696 (these UUIDs are the IDs of topics/posts in my game)

I changed my Safari settings temporarily to allow popups, but it didn’t make a difference in launching the app.

I also whitelisted you to the game (so you don’t get kicked) and generated a fresh link in case the old one expired https://www.roblox.com/share?v=v2&code=0bgofrtkoz4yk5

Gotcha! Seems we’re getting somewhere :happy3:

(thanks for white-listing me btw, this lets me debug your issue a little further without resorting to armchair-hypothesizing)

Given that the Roblox redirect is working in your Chrome browser, I imagine we can comfortably conclude that “#1 - App not immediately opening” is resolved? It’s unfortunate we can’t get around the Safari overly-protective-don’t-immediately-open-app behaviour, but c’est la vie :melting_face:

To answer your question “how does the Share Link give the game your launch data…”

I’m not a lua expert, but basically when you call the SocialService:PromptLinkSharingAsync API (documentation here), the script will call the Roblox backend prompting us to generate a unique share link with timeout (in this case 84600 seconds) which would store the launchData as metadata on our end. You are correct in observing that the Share Link itself doesn’t hold any of the launch data.

Once the user clicks the Share Link and Roblox opens the experience, the experience code will make a request, and the response is stored into the player context which can then be retrieved using Player:GetJoinData() (documentation here), it will obtain the launchData associated with this unique share link code allowing you to parse it from the json and use it as you like.

Basically, you hand us the launch data when you create the share link, and we hold onto it until you (or some player) needs it back by giving us the Share Link code and being like “Hey! I’d like whatever launch data you have for me please :smiley:

If you want a deeper understanding of these APIs and specific behaviours outside of my ability, feel free to voice it and I’ll pull in the big guns (poke the owners of Sharing) to try help us both understand what’s going on.

In terms of join data being blank
This is what happens when I perform the flow of:

  1. Generate deeplink from one of your sharing buttons in the experience
  2. Leave the [testing] Forums experience
  3. Paste the link into a WORKING browser (Chrome)
  4. Thereby opening Roblox, and specifically the comment I copied the link from

As you can see in the video below, it’s successfully directing me to the comment for which I acquired the link from (I think)

As far as I can tell, it’s behaving correctly on my end, so if it’s broken for you that leads me to suspect one thing: Is it possible that your local version’s launch data handling code for the experience is broken and the deployed version (which I’m fiddling with right now) is working?

Either that or I’m misunderstanding the intended behaviour :stuck_out_tongue:

If that’s the case, can you give me a step-by-step runthrough of how you want to interact with the link/Roblox/experience and what is the expected resulting behaviour? Perhaps highlight where it breaks off from my video (or even better, record one yourself) would be nice.

If we did manage to resolve this once and for all then even better :joy_cat:

Let’s hope we got if this time!

Yeah I tried it on my own and the link works on Chrome.

It think it is just Safari

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.