JustZix vs Tampermonkey / Greasemonkey — what differs, what wins, when to pick which
Tampermonkey is synonymous with "userscripts" for 15 years now. When someone says "I'm injecting JS into a page", they're probably thinking Tampermonkey by default. JustZix does everything Tampermonkey does, plus userstyles (like Stylus), plus a UI layer that userscripts don't have. This post shows where we differ.
Feature comparison
| Feature | Tampermonkey | Greasemonkey | JustZix |
|---|---|---|---|
| JS injection on URL match | ✓ (@match in header) | ✓ (@include) | ✓ (scope.url) |
| CSS injection | ~ (via GM_addStyle) | ~ (via GM_addStyle) | ✓ (dedicated CSS rule) |
| Live editor in the tab | ✗ | ✗ | ✓ (CSS pane + JS pane) |
| REPL in the tab | ✗ | ✗ | ✓ (JS Console) |
| Action bar with UI buttons | ~ (GM_registerMenuCommand — in extension popup) | ~ | ✓ (6 action types visible on page) |
| Share via URL | ~ (export to .user.js) | ~ (export) | ✓ (TTL link 1-48h) |
| Sync across devices | ✓ (Tampermonkey Cloud — paid) | ✗ | ✓ (chrome.storage.sync, free) |
| Open source | ~ (free version, but Tampermonkey is closed-source) | ✓ (Greasemonkey GPL) | ✓ (MIT) |
| @require external scripts | ✓ | ✓ | ~ (fetch in JS rule) |
| GM_xmlhttpRequest (CORS bypass) | ✓ | ✓ | ~ (native fetch, limited by CORS) |
| Scripts marketplace | greasyfork.org | greasyfork.org | n/a (TTL share links) |
Where Tampermonkey wins
- @require + external libs — userscripts can import jQuery, Lodash via URL. JustZix requires inline code or fetching in a JS rule.
- GM_xmlhttpRequest — bypass CORS for cross-domain API calls. JustZix uses native fetch — limited by the page's CORS.
- greasyfork.org marketplace — thousands of public userscripts. JustZix has no central registry (intentionally — TTL share).
- Existing userscript collection — if you have 50 installed userscripts, migration is work. JustZix doesn't import .user.js (but you can copy-paste the body into a JS rule).
Where JustZix wins
- In-tab UI layer — action bars with BUTTON/SLIDER/TOGGLE3 visible on the page. Tampermonkey only has GM_registerMenuCommand in the extension popup (invisible until you click the toolbar icon).
- CSS + JS in one rule — userstyle + userscript together, scope=same. Tampermonkey requires a separate Stylus.
- Live editor in the tab — CSS pane / JS pane to iterate without F5.
- Output Console in the tab — debug without DevTools, dedicated
JUSTZIX.logchannel. - Snap dashboard — bars + panes arrange into groups. Tampermonkey has no persistent UI outside the popup.
Migrating 3 typical userscripts to JustZix
Script 1: "Auto-skip cookie banners"
Tampermonkey userscript:
// ==UserScript==
// @name Cookie skip
// @match *://*/*
// @run-at document-end
// ==/UserScript==
(function() {
const obs = new MutationObserver(() => {
const accept = [...document.querySelectorAll('button')]
.find(b => /accept all/i.test(b.textContent));
if (accept) { accept.click(); obs.disconnect(); }
});
obs.observe(document.body, {childList: true, subtree: true});
})();
JustZix migration:
- New folder "Auto-actions"
- New rule "Cookie skip", scope:
*://*/* - JS tab: paste the function body (NO IIFE wrapper, NO userscript header)
- Run-at: JustZix defaults to "document-end" — matches
- Save
Script 2: "GitHub: copy SHA"
Tampermonkey userscript adds a "Copy SHA" button next to commit hashes. JustZix:
- Rule scope:
https://github.com/* - JS rule: same code observing commit hash elements
- Plus: instead of creating a DOM button, use a BUTTON action "📋 SHA" in the JustZix action bar — visually consistent with other actions
Script 3: "Reddit hide ads"
Tampermonkey userscript hides .promoted elements. JustZix:
- CSS rule (not JS!) — cleaner, faster:
.promoted, [data-promoted="true"] { display: none !important; } - Bonus: add a TOGGLE3 "Mode" (Default / Hide ads / Hide ads+sponsored) with 3 states' CSS variables
CSS-first patterns are often simpler than a JS observer.
Migration pitfalls
- GM_* APIs are different. Tampermonkey: GM_setValue, GM_getValue, GM_xmlhttpRequest, GM_notification. JustZix:
chrome.storage.local/sync, nativefetch,JUSTZIX.logas the log channel. - @require has no equivalent. Userscripts can import jQuery via URL. In JustZix you paste inline (~10KB minified) or
fetch + new Function(CSP risk). - Tampermonkey Cloud Sync is paid. JustZix chrome.storage.sync is free but limited 100KB. Above → chrome.storage.local (no sync). In practice: 50-100 rules.
- greasyfork.org has scripts JustZix doesn't. If you depend on a specific greasyfork userscript — migration is spread out (copy body, adapt GM_* calls). Realistically: 50% of userscripts are <100 lines, ~5 min migration.
What's next
- Migrating from Stylish/Stylus — counterpart for userstyles
- Mini-IDE in a tab — what JustZix adds beyond userscripts
- window.JZ + JUSTZIX — JustZix's equivalent of GM_* API
Install JustZix — Tampermonkey can live in parallel. Test 2 weeks, see which one stays.
Rate this post
No ratings yet — be the first.