Likely due to some WebKit rendering changes and I have noticed trends for dropping support for older devices (such as the engine for this forum itself).
I have found a hack using Codescript Toolkit:
Script needs saved as a .ts file and loaded on startup:
import { App, Notice, Platform } from 'obsidian';
export async function invoke(app: App): Promise<void> {
/* ===== MOBILE GUARD ===== */
if (!Platform.isMobile) {
return;
}
// Create and inject style element
const styleId = 'ios-15-8-menu-fix';
let styleEl = document.getElementById(styleId) as HTMLStyleElement;
if (!styleEl) {
styleEl = document.createElement('style');
styleEl.id = styleId;
document.head.appendChild(styleEl);
}
// Function to update styles based on current theme
function updateStyles() {
styleEl.textContent = `
/* iOS Menu Translucency Override */
.popover,
.menu,
.context-menu,
.suggestion-container,
.modal-container .modal,
.tooltip,
.prompt {
background: var(--background-primary) !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
opacity: 1 !important;
}
/* Kill pseudo-element overlays */
.popover::before,
.popover::after,
.menu::before,
.menu::after,
.context-menu::before,
.context-menu::after,
.suggestion-container::before,
.suggestion-container::after,
.modal::before,
.modal::after {
content: none !important;
display: none !important;
background: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
/* Force GPU acceleration to prevent iOS rendering bugs */
.popover,
.menu,
.context-menu,
.suggestion-container {
transform: translate3d(0, 0, 0) !important;
-webkit-transform: translate3d(0, 0, 0) !important;
}
/* Override any Obsidian variable-based translucency */
.popover,
.menu,
.context-menu {
--background-modifier-cover: var(--background-primary) !important;
--background-translucent: var(--background-primary) !important;
}
`;
}
// Initial application
updateStyles();
// Watch for theme changes
const themeObserver = new MutationObserver((mutations) => {
for (const mutation of mutations) {
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
updateStyles();
}
}
});
themeObserver.observe(document.body, {
attributes: true,
attributeFilter: ['class']
});
// Watch for new menus being added (reapply if needed)
const menuObserver = new MutationObserver(() => {
// Force a style recalculation when new menus appear
const menus = document.querySelectorAll('.popover, .menu, .context-menu');
menus.forEach((menu: HTMLElement) => {
// Force repaint
menu.style.display = 'none';
menu.offsetHeight; // Trigger reflow
menu.style.display = '';
});
});
menuObserver.observe(document.body, {
childList: true,
subtree: true
});
// Cleanup function
(window as any)._ios15MenuFixCleanup = () => {
themeObserver.disconnect();
menuObserver.disconnect();
styleEl?.remove();
};
new Notice('📱 Menu transparency fix active');
}
Installation tips in that thread. I didn’t test it thoroughly, due to my not using this device anymore.
Be aware that due to the same webkit lib issues, you’ll need to install an earlier version of said plugin for mobile (which you’ll have to remember not to update or edit the manifest.json to stop this from happening). This one:
P.S: I edited the title of the thread to better reflect problem.