Personal productivityOriginal Reddit post

[OS] Run and Install Chrome extensions in Safari

Full contextOriginal content · Reddit

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

01Demand tags
Personal productivityContentWeb appUnsolved

Collected discussion

25 collected

25collected48reported on Reddit
u/Magicelk235OPReply

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

u/GroggInTheCosmosReply

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

u/Magicelk235OPReply

if you are a developer and prefer cli you can always use the cli version for free https://github.com/magicelk235/Viaduct-CLI

u/Magicelk235OPReply

that’s the xcode feature, most of the time it will fail on missing apis, the viaduct engine is free and open source

u/NeuralNoodle42

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

u/Magicelk235OPReply

look, the engine isn’t perfect, any extension that doesn’t work report me and i’ll update the engine and fix it

u/monotious

I have two Macs - will I need to buy two licenses? How does it work with "On Other Devices" under Safari Extensions settings?

u/Magicelk235OPReply

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.

u/ser_melipharo

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

u/Magicelk235OPReply

i personally don’t like orion browser, it just feels off for me, probably because i’m used to safari

u/mdumtshaliReply

Reason I use Chrome is extension support, but the draw on battery life sucks. Is Orion as efficient as Safari?

u/Lomsey66

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!

u/Magicelk235OPReply

firstly thanks for the feedback, i will add clear instructions in the next version, sorry for the inconvenience

u/impROS01

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?

u/Magicelk235OPReply

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.

u/harry-harrison-79

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.

u/CaptainMarder

I used the new safari ai extensions in os27 to make few I wanted. They’re very basic but Work well enough.