Buttons opening formula-generated URLs should not warn users on mobile

Here is a published doc with 4 buttons:

The buttons all link out to the same published form.

When I just hard code the URL, they work fine.

But when I involve a formula in the calculation of the URL, on iOS Safari and iOS Chrome (Android untested), they first pop up this warning message before allowing users to proceed:


(“Open Link? Are you sure you want to follow the link to coda.io?”)

Is this by design? Bug? It’s confusing my users.

3 Likes

Support is looking into it

“This is the desired behavior. So, closing ticket”

I’ve asked them to say a bit more here :laughing:

Am I missing something? Is there a situation where you would like to see this warning?

Hello @Nick_HE ,

On chrome (Windows 10) there is no warning.
On Android (Coda App) I get no warning.
On Android Chrome I get no warning.

I tried the various links, obviously I get no further than ‘You need persmission…’, but the google links work as expected (showing the pages without warnings).

Greetings,
Joost

1 Like

Thanks for the Android check @joost_mineur

Then it definitely seems weird that the “desired behavior” would be separate treatment on iOS…

This could be enforced by iOS to alert/protect users from spammy apps that surreptitiously send them to malware sites; this theory would explain why it is ‘desired’ :: conforming to iOS spec.

Hmm yeah, maybe if they’re trying to reuse code across iOS app & iOS mobile browser? (Cause in theory in browser you can do whatever you feel like)

Hello @Nick_HE

So @Johg_Ananda is on the right track. This is actually to work around some limitations the browser enforces on opening URLs. Browsers today have some built in mechanisms to prevent undesired pop-ups, and this is our way of working around that.

To go into a bit more detail:
Most browsers today have some form “Block opening any URL that is not in response to a user action”. The heuristics between browsers vary slightly, which is why you see the difference between them.

  • On Chrome/Firefox (includes Android): If a url is opened later than ~500ms after button click event, it is blocked
  • On Safari (desktop and iOS, which includes “Chrome”, since all browsers on iOS are required to use WebKit underneath): If the url is not opened in direct response to the button click event, it is blocked.

So going back to Coda buttons. Ones that you’ve setup with static urls we are able to detect, so when you click the button we immediately open the URL, which will work for both heuristics above. However, buttons that have a formula have to run through our formula engine which is asynchronous. In this case, the formula is fast enough that the url can still open on most browsers, however in Safari based browsers, that delay is too long.

This dialog lets us open the URL in direct response to a button click, since at this point we have the results of the formula and can open the moment the user clicks ‘Open’ in the dialog.

5 Likes

Thanks @Steve!

That’s a tricky one I guess. My mind goes to pre-calculating the URL somewhere else, but I imagine Safari would interpret even a reference to an outside cell / canvas formula as a calculation.

I guess in future you could consider pre-calculating button URLs on iOS - could introduce some sluggishness on page load / scrolling to reveal new rows, depending on calculation complexity. But I guess that would require those being stored in the table schema for button columns which is a non-trivial change.

In the meantime, the best workaround I’ve found is using formulas to generate plain ol’ links instead of buttons.