Restores X's legacy profile media grid while the original feature remains available.
// ==UserScript==
// @name X Media Grid Restore
// @namespace https://github.com/QuantumDeus/x-media-grid-restore
// @version 0.1.0
// @description Restores X's legacy profile media grid while the original feature remains available.
// @author QuantumDeus
// @license MIT
// @homepageURL https://github.com/QuantumDeus/x-media-grid-restore
// @supportURL https://github.com/QuantumDeus/x-media-grid-restore/issues
// @match https://x.com/*
// @run-at document-start
// @sandbox raw
// @grant none
// @noframes
// ==/UserScript==
(() => {
"use strict";
const FLAG_NAMES = [
"responsive_web_profile_redesign_enabled",
"rweb_media_carousel_enabled"
];
function disableMediaRedesign(state) {
const featureSwitch = state?.featureSwitch;
const configs = [
featureSwitch?.defaultConfig,
featureSwitch?.user?.config
];
for (const config of configs) {
if (!config) continue;
for (const flagName of FLAG_NAMES) {
const flag = config[flagName];
if (flag && typeof flag === "object") {
flag.value = false;
}
}
}
return state;
}
let initialState;
try {
const existingDescriptor = Object.getOwnPropertyDescriptor(
window,
"__INITIAL_STATE__"
);
if (existingDescriptor && "value" in existingDescriptor) {
initialState = disableMediaRedesign(existingDescriptor.value);
}
Object.defineProperty(window, "__INITIAL_STATE__", {
configurable: true,
enumerable: true,
get() {
return initialState;
},
set(value) {
initialState = disableMediaRedesign(value);
}
});
Object.defineProperty(window, "__X_MEDIA_GRID_RESTORE__", {
configurable: false,
enumerable: false,
value: Object.freeze({ version: "0.1.0", userscript: true }),
writable: false
});
} catch {
// Fail closed: leave X untouched if its bootstrap object cannot be patched.
}
})();