Hello,
I am in the process of converting a Web Extension to a Safari Extension. I need to use browser.downloads.onCreated.addListener in my extension but the browser.downloads API is not supported yet.
Do I have another way to do that?
Safari
RSS for tagSafari is the web browser developed by Apple and built into all Apple devices.
Posts under Safari tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
All of my third party extensions have blue icons now, in Safari 14.0. It looks pretty awful.
Is there a way to keep the monochrome colors or a way for us, as developers, to provide a different kind of icon to sustain the monochrome colors for our extensions?
I am assuming the blue color denotes something, like the extension being "active". I wasn't able to find documentation on this change nor any related api doc.
Hi, i want to do show the "Are you sure you want to leave this page?" in iOS Safari.
How can I do that?
On desktop browsers, I use this snippet (ReactJS):
window.addEventListener('beforeunload', onUnload)
And the implementation:
useUnload((e) => {
		e.preventDefault() // Required for Firefox
		e.returnValue = ''
		delete e.returnValue
	})
Thanks!
I'm trying to record my screen (canvas) on iPad safari with the new experiential media recorder support.
I got the mediaRecorder object and it triggers the start event but the issue is whenever mediaRecored record blob it will not trigger the stop event.
It is working fine of MAC Safari but on iPad Safari I'm getting this issue.
Is there any ways to get the stop event so mediaRecorder fire ondataavailable method after stop on iPad Safari?
On iOS 14 you can pick another default browser than Safari. If you use another browser, that browser will ask the user to change their default browser.
I have installed quite a few browsers (Chrome, Firefox, Edge, Opera, Brave...) and have set each of them as my default one.
Problem comes when I try to open a Universal Link (which was working just fine when Safari was the default browser), which seems to just not work. With Safari as default browser, the Universal Link would work, and the corresponding native app was getting opened. However, with any other browser different from Safari set as default, the feature is broken and the Universal Link doesn't open the native app.
Has anyone experienced anything similar?
Why might this happen and how might this be solved?
Any help is very much welcomed
Hi folks,
We're building a Safari web extension and experiencing an issue to see it among extensions in Safari after installing the container app to /Applications and launching it.
The app and extension is notarized and signed with Developer ID
After an extensive investigation, we found the following log records in the Console app (the extension ID is redacted):
Computing the code signing dictionary failed for extension with identifier com.youcompany.safariext Blocking extension with identifier: com.youcompany.safariext
To debug the issue, we've created a HelloWorld-like extension generated by Xcode 12.2 beta 4 (http s://sharedartifacts.s3.eu-central-1.amazonaws.com/safariext.app.zip contains a signed app bundle)
It also is under the same code signing issue.
According to https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/resolving_common_notarization_issues, we've run a few checks to verify:
code signature
➜	Desktop codesign -vvv --deep --strict ./safariext.app					
...-prepared:/Users/nikolay/Desktop/safariext.app/Contents/PlugIns/safariext Extension.appex
...-validated:/Users/nikolay/Desktop/safariext.app/Contents/PlugIns/safariext Extension.appex
...
./safariext.app: valid on disk
./safariext.app: satisfies its Designated Requirement
signing certificate
➜	Desktop spctl -vvv --assess --type exec ./safariext.app		
./safariext.app: accepted
source=Notarized Developer ID
origin=Developer ID
secure timestamp
...
Timestamp=25 Nov 2020 at 22:23:54
...
We seemed to have all checks good, the extension can be installed only if Safari is allowed to run unsigned extensions.
Could anyone assist to debug/resolve this issue?
Thanks
Hi all,
As of a few days ago, I can no longer capture the console logs from my iPhone onto macOS. Is anyone else experiencing the same issue?
Is there a way to offer a one click installation of a PWA or prompt the user to install it in Safari on iOS?
Hitting Share then Add to home page is pretty clunky for the user and means having to provide instructions within the app on how to install from Safari.
My understanding is that the iOS service worker does not support background sync or a periodic sync. ( if this is not true please point me to the documentation that describes the support of these features... )
High level use case.
My users of my app will be filling out forms during the day while off line ( out of cell phone coverage )... then at the end of the day they will travel back into coverage at which point the WEB app would automatically send those POSTS without User interaction. How would you accomplish this on an iOS device... ( key is without having to relaunch the app )
thank you
When using the command open in the terminal, there seems to be this weird issue/behavior where if run to open a specific application (in this case Safari) where my current default browser is Chrome, the following command would open up in both Safari and my default browser.
open -a /Application/Safari.app/ https://www.google.com
Opening up a different browser, such as Firefox does not have this issue. In that case, only the specified application does run as expected.
open -a /Application/Firefox.app/ https://www.google.com
open -a Firefox https://www.google.com
Is this a bug or a desired effect?
(Tested macOS 11.4)
Currently in iOS Safari and Chrome, when you share a link via the share button, the link that gets copied is the canonical URL. The site that I am working on has a different website listed as the canonical URL (it's a requirement that can't be changed). Is it possible to force iOS Safari and Chrome so copy my website's original URL, instead of the canonical URL?
My canonical urls are included in my site via the following tag:
<link rel="canonical" href="www.example.com">
After upgrading to macOS Monterey, Safari keeps showing authentication prompts for the on-premises Azure DevOps instance.
Interesting that I can keep pressing the cancel button on the login form, and it works.
In other browsers (Microsoft Edge, Chrome), all works fine -- I enter login/password one time and it never asks me again.
In the browser tab, I see that the /connect request got stuck, but I don't know how to troubleshoot it further. Any suggestions?
Environment information:
macOS version: 12.0.1
Safari version: 15.1
Azure DevOps Server 2020 Update 1.1
Hi,
I'm using MediaRecorder for screen recording of canvas , along with audio.
simplified code to implement screen recorder
//intialise stream
const canvas = document.querySelector('.main-canvas');
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
for (let track of canvas.captureStream().getTracks()) {
stream.addTrack(track);
}
recorder = new MediaRecorder(stream);
chunks = [];
recorder.ondataavailable = ({ data }) => {
if (data) chunks.push(data);
};
recorder.start();
recorder.onstop = () => {
const videoBlob = new Blob(chunks, {
type: 'video/mp4'
});
chunks = []
//stop mic access after use
try{
for (let track of stream.getTracks()) {
track?.stop();
}
}catch(e){}
return videoBlob;
}
so when i call recorder.stop() , the recorder.onstop method is not getting called sometimes randomly.
And also in case when recorder.onstop is not called , recorder.ondataavailable is not called even a single time,So it returns empty Blob output.
This only occurs in iOS 15 device's , it occurs randomly 40% of the times.
Is there any workaround for this, or what is cause of this issue?
Thanks in advance
Greetings to all fellow front-end coders.
I have quite a headache because of Apple's autoplay policy. As you've probably experienced, you can't autoplay a video / audio element with sound without user interaction.
(I'm referring to this)
I'm currently trying to create my own music web application that will support playlists. I work with the Next.js framework and use react-player as player. Since it does not natively support playlists, I created a two-player pendulum system, where one plays the current sound file and the other loads the next. Then their roles change.
Everything works great in all browsers, except those on iOS, because this player uses autoplay to start playing.
I've been worried about this for several days. I've already thought about letting an Apple product users press play button every time a song changes as a punishment, but of course it's not a good solution.
I think a lot of you have encountered this and you have certainly found a solution. Please help me :(
Hi there - I am trying to port over Chrome extension over to Safari Web extension. Looks like Safari has a very aggressive permissions flow which isn't a great user experience but I get the privacy benefits.
I am trying to move some of my permissions like <all_urls> or tabs as optional permissions and build a flow where I can request the user for them in hopes that i can educate them as to why I need them similar to how Chrome/FF have it.
However when i use browser.permissions.request - i always end up getting true without invoking the prompt. The prompt seems to come up regardless when i start visiting a website.
Can someone help with this? Sounds more like a defect in Safari.
Whenever I'm on this site on Safari and I log in, after a little while pages will load very very slow or not at all and reeplies to posts will fail over and over. In general this website becomes unusable under safari and upon restarting (i can't just log out because that won't work either) Safari, everything works again.
This affects the documentation pages too, not just the forums. So I'll quit, log in, try to put in my post as fast as possible before I can't anymore.
I usually copy and paste my post before hitting submit incase my time has ran out.
Seeing an issue where document.cookie is returning an expired cookie. This cookie is correctly not sent in requests and is not displayed in the web inspector (Storage -> Cookies). Problem persists until safari is restarted.
Affects the following user agents...
Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Mobile/15E148 Safari/604.1
Mozilla/5.0 (iPhone; CPU iPhone OS 15_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Mobile/15E148 Safari/604.1
Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Flipboard/4.2.140
Mozilla/5.0 (iPad; CPU OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/99.0.4844.59 Mobile/15E148 Safari/604.1
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
Mozilla/5.0 (iPhone; CPU iPhone OS 15_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/99.0.4844.59 Mobile/15E148 Safari/604.1
Mozilla/5.0 (iPhone; CPU iPhone OS 14_8_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1
Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari/604.1 [Pinterest/iOS]
Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1
Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/19D52 [FBAN/FBIOS;FBDV/iPhone11,8;FBMD/iPhone;FBSN/iOS;FBSV/15.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5]
Was not able to reproduce on Safari 15.0 on OSX 10.15.7. Does not occur in desktop chrome or firefox. Seems OSX and IOS specific.
Edit: the more I look at this it appears to be a webkit bug.
I'm using manifest v3 and working on a Safari extension. When I try to run a function within activeTab. I can not get the proper return from the the function.
For example:
browser.scripting.executeScript({
target:{tabId:tab.id},
func:()=>'test',
}).then(result=>{
console.log('result',result)
})
Here the result is always null. Is it a bug?
Nothing wrong with permission settings because if I use files instead of func, the return value works properly.
Safari: Version 16.1 (18614.2.3.1.1)
macOS 13.0 Beta
Xcode: Version 14.0 beta 5
Thanks
I'm currently developing a React (non Native) PWA. It runs perfectly fine on Safari but if I add it to the home screen to run it on standalone mode the performance is much worse. I've had this issue on the iOS 16 betas and now on the official release too.
If I go into Settings > Safari > Clear History and Website Data the performance improves but only for a while.
Any ideas what could be causing this?
I'm porting a Chrome extension to Safari. All works well besides the auth flow, which uses SameSite=Strict cookies.
On Chrome, such cookies are easily set and work as expected, but not on Safari.
Now, as I understand, technically, requests from chrome-extension:// and safari-web-extension:// origins are cross-site in relation to the server, which makes me think that on Chrome, the SameSite=Strict attribute is simply ignored as an exception for extensions. With that said, the backend team wants to keep the attribute for security reasons and so removing it or replacing it with SameSite=None isn't an option.
Is this an intended behavior of Safari or a bug? Is there a way to get around this without changing the attribute?