diff --git a/services/web/frontend/js/pages/ide.tsx b/services/web/frontend/js/pages/ide.tsx
index c456139973..37abd93008 100644
--- a/services/web/frontend/js/pages/ide.tsx
+++ b/services/web/frontend/js/pages/ide.tsx
@@ -4,3 +4,19 @@ import ReactDOM from 'react-dom'
import IdeRoot from '@/features/ide-react/components/ide-root'
ReactDOM.render(, document.getElementById('ide-root'))
+
+// work around Safari 15's incomplete support for dvh units
+// https://github.com/overleaf/internal/issues/18109
+try {
+ if (
+ document.body.parentElement &&
+ document.body.parentElement?.clientHeight < document.body.clientHeight
+ ) {
+ const rootElement = document.querySelector('#ide-root')
+ if (rootElement) {
+ rootElement.style.height = '100vh'
+ }
+ }
+} catch {
+ // ignore errors
+}