diff --git a/dist/commonjs/index.js b/dist/commonjs/index.js
index e3bdcf702702392e9a06c981545f659ee7c5970e..d88ae6b2dc5b4cf1970cb693f58a926bd12a8f45 100644
--- a/dist/commonjs/index.js
+++ b/dist/commonjs/index.js
@@ -757,30 +757,14 @@ function updateLayout(context, dragEvent) {
             panelAfter.onCollapseChange.current(false);
         }
     }
-    const panelBeforeIsAboutToCollapse = panelBefore.currentValue.value.eq(getUnitPixelValue(context, panelBefore.min));
-    // If the panel was expanded and now is at it's min size, collapse it
-    if (!dragEvent.disregardCollapseBuffer &&
-        panelBefore.collapsible &&
-        panelBeforeIsAboutToCollapse) {
-        if (panelBefore.onCollapseChange?.current &&
-            panelBefore.collapseIsControlled &&
-            !dragEvent.controlled &&
-            !dragEvent.isVirtual) {
-            panelBefore.onCollapseChange.current(true);
-            return { dragOvershoot: newDragOvershoot };
-        }
-        // Make it collapsed
-        panelBefore.collapsed = true;
-        panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize);
-        // Add the extra space created to the before panel
-        panelAfterNewValue = panelAfter.currentValue.value.add(panelBeforePreviousValue.minus(panelBeforeNewValue));
-        if (panelBefore.onCollapseChange?.current &&
-            !panelBefore.collapseIsControlled &&
-            !dragEvent.controlled &&
-            !dragEvent.isVirtual) {
-            panelBefore.onCollapseChange.current(true);
-        }
-    }
+    // Drag-to-collapse is disabled in this fork: every consumer of the
+    // library uses controlled `collapsed` props and triggers collapse
+    // explicitly (close button, ESC, URL change, etc.). The original auto-
+    // collapse-on-drag logic that lived here would notify the parent when a
+    // collapsible panel reached its min during a drag — keeping it for our
+    // (controlled-only) case caused state-machine deadlocks when handlers
+    // were no-ops, so the block is removed entirely. Panels just clamp at
+    // `min` during drag now.
     panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue };
     panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue };
     const leftoverSpace = new big_js_1.default(getGroupSize(context)).minus(newItems.reduce((acc, b) => acc.add(isPanelData(b) ? b.currentValue.value : b.size.value), new big_js_1.default(0)));
@@ -940,7 +924,12 @@ function setCookie(name, jsonData) {
 function getDeltaForEvent(context, event) {
     const panel = getPanelWithId(context, event.panelId);
     if (event.type === "expandPanel") {
-        return new big_js_1.default(panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)).minus(panel.currentValue.value);
+        // Fall back to `default` before `min` so the first-ever expand of a
+        // panel that started life collapsed lands at its configured default
+        // size rather than getting stuck at `min`.
+        const defaultPx = panel.default ? getUnitPixelValue(context, panel.default) : undefined;
+        const target = panel.sizeBeforeCollapse ?? defaultPx ?? getUnitPixelValue(context, panel.min);
+        return new big_js_1.default(target).minus(panel.currentValue.value);
     }
     const collapsedSize = getUnitPixelValue(context, panel.collapsedSize);
     return panel.currentValue.value.minus(collapsedSize);
diff --git a/dist/esm/index.js b/dist/esm/index.js
index f8fddd70c0f1aaed29f2fb0ca0d8093d8ce66335..d1dae8beb1447afca47b91e796b8279135f50c36 100644
--- a/dist/esm/index.js
+++ b/dist/esm/index.js
@@ -728,30 +728,14 @@ function updateLayout(context, dragEvent) {
             panelAfter.onCollapseChange.current(false);
         }
     }
-    const panelBeforeIsAboutToCollapse = panelBefore.currentValue.value.eq(getUnitPixelValue(context, panelBefore.min));
-    // If the panel was expanded and now is at it's min size, collapse it
-    if (!dragEvent.disregardCollapseBuffer &&
-        panelBefore.collapsible &&
-        panelBeforeIsAboutToCollapse) {
-        if (panelBefore.onCollapseChange?.current &&
-            panelBefore.collapseIsControlled &&
-            !dragEvent.controlled &&
-            !dragEvent.isVirtual) {
-            panelBefore.onCollapseChange.current(true);
-            return { dragOvershoot: newDragOvershoot };
-        }
-        // Make it collapsed
-        panelBefore.collapsed = true;
-        panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize);
-        // Add the extra space created to the before panel
-        panelAfterNewValue = panelAfter.currentValue.value.add(panelBeforePreviousValue.minus(panelBeforeNewValue));
-        if (panelBefore.onCollapseChange?.current &&
-            !panelBefore.collapseIsControlled &&
-            !dragEvent.controlled &&
-            !dragEvent.isVirtual) {
-            panelBefore.onCollapseChange.current(true);
-        }
-    }
+    // Drag-to-collapse is disabled in this fork: every consumer of the
+    // library uses controlled `collapsed` props and triggers collapse
+    // explicitly (close button, ESC, URL change, etc.). The original auto-
+    // collapse-on-drag logic that lived here would notify the parent when a
+    // collapsible panel reached its min during a drag — keeping it for our
+    // (controlled-only) case caused state-machine deadlocks when handlers
+    // were no-ops, so the block is removed entirely. Panels just clamp at
+    // `min` during drag now.
     panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue };
     panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue };
     const leftoverSpace = new Big(getGroupSize(context)).minus(newItems.reduce((acc, b) => acc.add(isPanelData(b) ? b.currentValue.value : b.size.value), new Big(0)));
@@ -911,7 +895,12 @@ function setCookie(name, jsonData) {
 function getDeltaForEvent(context, event) {
     const panel = getPanelWithId(context, event.panelId);
     if (event.type === "expandPanel") {
-        return new Big(panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)).minus(panel.currentValue.value);
+        // Fall back to `default` before `min` so the first-ever expand of a
+        // panel that started life collapsed lands at its configured default
+        // size rather than getting stuck at `min`.
+        const defaultPx = panel.default ? getUnitPixelValue(context, panel.default) : undefined;
+        const target = panel.sizeBeforeCollapse ?? defaultPx ?? getUnitPixelValue(context, panel.min);
+        return new Big(target).minus(panel.currentValue.value);
     }
     const collapsedSize = getUnitPixelValue(context, panel.collapsedSize);
     return panel.currentValue.value.minus(collapsedSize);
