[OS] Run and Install Chrome extensions in Safari
problem: extensions in safari cost annual money to create because of that most extensions from chrome are missing. on top of that, safari works differently with different apis than chrome. because the lack of extensions in safari people use chrome instead which isn't designed for macOS like safari. on top of that even if you try creating an extension it will fade after ~week with a free apple account, I made a system that renews and updates your extensions for you. I created Viaduct for people who want to run chrome extensions but their main browser is safari or people who use chrome for the extensions. apple has a similar feature for developers that convert chrome extensions to safari extensions but apple's version doesn't handle missing apis, meaning more complex extensions will break and won't work, Viaduct has an open source engine called viaduct cli that creates solutions for those missing apis so even complex extensions can work. The app is free for testing 2 extensions without extensions renews and updates The paid version is 19$ with unlimited extensions auto renews and updates The cli version is free and open source for everyone but without GUI and without auto renews and updates. Use code "3LABNWV" for -10% Download the App here: https://magicelklabs.com/viaduct Download the CLI here: https://github.com/magicelk235/Viaduct-CLI about me: Linkedin: https://www.linkedin.com/in/magicelk235 Github: https://github.com/magicelk235 Personal Mail: yehonatan.2350@gmail.com App Source: https://github.com/magicelk235/Viaduct-app Website: https://magicelklabs.com Support Mail: support@magicelklabs.com
已收集讨论
How does this work under the hood?
the engine is a static transformer plus a compat shim , viaduct runs once you point it at a chrome extension, it rewrites the source and packages it as a safari web extension, It's not sitting in the runtime
I only have 4 or 5 that don't really have a native safari equivalent. I'll look at your project more closely at some stage. Thanks for the feedback
Price to high also with discount.
if you are a developer and prefer cli you can always use the cli version for free https://github.com/magicelk235/Viaduct-CLI
这条评论已在来源处删除。
that’s the xcode feature, most of the time it will fail on missing apis, the viaduct engine is free and open source
So the application is doing a static rewrite of the extension source rather than running a shim at runtime? curious how that holds up with extensions that lean heavily on background service workers
look, the engine isn’t perfect, any extension that doesn’t work report me and i’ll update the engine and fix it
I have two Macs - will I need to buy two licenses? How does it work with "On Other Devices" under Safari Extensions settings?
no there’s no need for two license only one The settings sync if you have share across devices on, but you still have to reconvert on the other Mac.
Btw as free alternative it’s already solved by Orion browser , which is native WebKit, supports both Safari, Chrome and Firefox extensions out of the box and has both iOS and desktop version
i personally don’t like orion browser, it just feels off for me, probably because i’m used to safari
Reason I use Chrome is extension support, but the draw on battery life sucks. Is Orion as efficient as Safari?
not work with ChatGPT Chrome.
thanks for telling me, i’ll fix it
it should work now
24h long sale to 10$ instead of 19$ use code vxz9ld8
How can you give zero instructions? I'd pay twice as much if you'd bothered providing step-by-step instructions! Just wasted a whole hour "Please install Xcode" (after doing so). Incredibly frustrating!
firstly thanks for the feedback, i will add clear instructions in the next version, sorry for the inconvenience
open-sourcing the CLI while charging for the GUI + auto-renewal is a smart split. the week-long expiry on free apple accounts is the real pain nobody realizes until their extensions silently die. how does the static rewrite handle chrome.storage and message passing?
For chrome.storage, the rewrite just shims it over to localStorage or IndexedDB. It wraps everything in promises so the existing async signatures don't break, and sync simply aliases to local Message passing depends on the bundle. If the extension collapses into a single file, sendMessage just becomes a direct function call or a basic event emitter. If the content script and UI actually need to stay separated, it falls back to window.postMessage and tacks on a correlation ID to match the replies back to the right requests.
the part i would want very clearly documented is the compatibility boundary . converting/signing is one thing, but the messy failures usually come from extension APIs Safari does not expose or permission flows that behave differently. a public tested extensions list with works / partial / broken would probably answer half the trust questions before people install it.
I used the new safari ai extensions in os27 to make few I wanted. They’re very basic but Work well enough.
hope it works fine