You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug: v7 => v8 Ion-split-pane + another ion-menu doesn’t work anymore #30591
We currently use Ionic v7 on our app and wanted to upgrade to v8, but we are facing an issue with the ion-split-pane and ion-menu, it worked fine on v7 but doesn’t work anymore on v8.
Our app use a ion-split-pane to display the main navigation menu on the left and the page on the other part of the ion-split-pane. And we chose to open another menu on the right side inside the ion-split-pane to perform some actions as create a new order, but the ion-menu on the right doesn't work on v8 while it works on v7.
I too just noticed this after upgrading from v7 to v8. Is there a workaround for this?
FYI - the menus work perfectly in small screen mode. It only stops working when the split pane side menu is automatically set to visible.
Verified on 9.0.8. Since v8, ion-menu treats any menu anywhere inside an ion-split-pane as one of the split pane's side panes, not only its direct children. Your second menu lives inside the page rendered by ion-router-outlet, so while the split pane is visible it is laid out as a hidden pane and menuController.open('second-menu') does nothing. On small screens the split pane is collapsed, which is why it works there.
Workaround, verified on 9.0.8: move the second menu out of ion-split-pane so it sits beside it, and point its content-id at the router outlet. The page can keep calling menuController.open('second-menu') unchanged.
<template>
<ion-split-panewhen="xs"content-id="main-content"style="--side-max-width: 200px">
<ion-menuid="main-menu"content-id="main-content">
<ion-header>
<ion-toolbar>
<ion-title>Menu Content</ion-title>
</ion-toolbar>
</ion-header>
<ion-contentclass="ion-padding">This is the menu content.</ion-content>
</ion-menu>
<ion-router-outletid="main-content" />
</ion-split-pane>
<ion-menumenu-id="second-menu"side="end"type="overlay"content-id="main-content">
<ion-header>
<ion-toolbar>
<ion-title>Second Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-contentclass="ion-padding">This is the second menu content.</ion-content>
</ion-menu>
</template>
<script setup lang="ts">
import { IonContent, IonHeader, IonMenu, IonRouterOutlet, IonSplitPane, IonTitle, IonToolbar } from'@ionic/vue';
</script>
The earlier workaround that sets when={false} and adds the visibility classes by hand does open the second menu, but it leaves the main menu in overlay mode: menuController.open() still treats it as a closed menu and "opens" it while it is already on screen. The layout above avoids that.
Activity
tbarrosocalaosoft commentedon Sep 12, 2025
Same here, any workaround?
tbarrosocalaosoft commentedon Sep 12, 2025
Bug from #28801.
lydongray commentedon Sep 19, 2025
I too just noticed this after upgrading from v7 to v8. Is there a workaround for this?
FYI - the menus work perfectly in small screen mode. It only stops working when the split pane side menu is automatically set to visible.
lydongray commentedon Sep 19, 2025
I need this fixed right now so here's a dirty hack I came up with:
I created this little
useMediaQueryhook that will watch the size of the screen and react accordingly.Make the split pane never display the menu and programmatically add
split-pane-visibleclass when we hit the desired breakpoint.We also need to do a simlar thing with the split panes
IonMenu. Add themenu-pane-visibleclass programmatically.I also have menu buttons about the app that are there to open the main menu of the split pane. We need to hide this button on large screens.
This is a little clunky but I need a solution and don't have any time to waste on this.
thetaPC commentedon Oct 15, 2026
Thanks for the report, and sorry for the delay.
Verified on 9.0.8. Since v8,
ion-menutreats any menu anywhere inside anion-split-paneas one of the split pane's side panes, not only its direct children. Your second menu lives inside the page rendered byion-router-outlet, so while the split pane is visible it is laid out as a hidden pane andmenuController.open('second-menu')does nothing. On small screens the split pane is collapsed, which is why it works there.Workaround, verified on 9.0.8: move the second menu out of
ion-split-paneso it sits beside it, and point itscontent-idat the router outlet. The page can keep callingmenuController.open('second-menu')unchanged.The earlier workaround that sets
when={false}and adds the visibility classes by hand does open the second menu, but it leaves the main menu in overlay mode:menuController.open()still treats it as a closed menu and "opens" it while it is already on screen. The layout above avoids that.Tracked as a bug in
core.fix(menu): allow menus inside split pane main content to open (ionic-…