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: In Android API 36, the safe-area is not respected. #30900
Hello! Thanks for your report. I actually have a PR up that addresses this here: #30889
Along with a dev build, if you'd like to try it. Please report any issues you find with the dev build or that solution there. Most of our team is OOO until the 5th, so it probably won't be in a patch release until the 7th at the earliest.
This is kind of a weird situation. Normally I'd close this as a duplicate, but the duplicate it's of is internal, and this was opened after the PR to fix it. So I guess I'll just update the PR to say it resolves this and it'll be closed when merged
I tried version 8.7.16-dev.11767019759.14b7f2fa and the same thing happens.
Yeah, I was getting back to looking at this this morning and realized I was wrong, sorry. My PR was intended to address an issue with iOS. I'm gonna look into this as part of that solution though, since it's all pretty related.
Hi, it seems to work fine with the example, but it doesn't work in my actual project and I haven't figured out why yet.
Edit:
I think it has to do with the fact that in many cases I have it programmatically with controllers in different componentsand presentingElement when loading them:
presentingElement: await this.modalController.getTop()
or presentingElement: this.ionRouterOutlet.parentOutlet?.nativeEl
Can you please provide a reproduction of your app's setup that wasn't working with the previous implementation? It's pretty rough trying to troubleshoot this blind
Thanks for the issue! This issue has been labeled as needs reproduction. This label is added to issues that need a code reproduction.
Please reproduce this issue in an Ionic starter application and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed.
If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue.
For a guide on how to create a good reproduction, see our Contributing Guide.
I'm having trouble finding the examples because I'm not sure what values they depend on. I'm trying to replicate what I have in my app to get them, but it doesn't always work, and I don't know why.
I've updated the example in tab 3 with a Kanban simulation.
And in my actual app, which I haven't been able to replicate (I'm trying in tab 2 of the example), in the footer, but only in the first tab, it's adding the class "safe-area-bottom" to ion-content.
Here's the structure in case it helps: body > app-root > ion-app > ion-router-outlet > app-dashboard > ion-tabs > div > ion-router-outlet > app-notes > ion-content
And a simple list where the footer looks wrong, and I don't know why. I've also tried to replicate it in the example without success.
Here's the structure in case it helps: body > app-root > ion-app > ion-router-outlet > app-dashboard > ion-tabs > div > ion-router-outlet > app-labels > ion-content
Ugh, it was hard to reproduce. I think it's a reactivity issue.
First, sorry for the messy code I'm using in the demo. I'm having a hard time figuring out why things are happening, and I'm just trying things out randomly.
I created a route called lists2 in the routes, at the same level as the tabs. In the tabs' HTML, I put an if statement that relies on a signal computed() function to check if the routes file contains the snapshot flag data: { tabs: true } to determine whether or not to display it.
Click on the link: Router List 2 and you'll see the error in the footer.
I think it's the cause of both the incorrect padding at the beginning and the missing padding in the list (as in the example).
There's so many edge cases in this one, sorry about how long it's taking
We make a good team 💪, it's always good to help the community. Updated demo :)
It seems that now in the lists, the padding extends further inwards.
I understand that these kinds of style issues are separate from this particular problem and represent new features.
There are some design aspects that I imagine you'll have to improve in the future, for example, the progress bar... should it be cropped or expanded from side to side?
Also, it's noticeable that the maps often extend to the edge. I imagine you'll have to add a new option to ion-content to define whether you want them edge-to-edge or with padding, depending on your specific use case, such as when it's laid flat on both sides or if, for example, it doesn't have a footer or header.
Hey! I'm actually going to pull back on a lot of these changes because this has sort of spiraled into a series of unrelated changes to the original PR. I'm going to focus my PR on dealing with popovers and modals and we'll have to come back around at a later time to look at the other issues. I think some of these changes will require a bit more investigation than should be done for the patch I'm currently working on, unfortunately. So with these changes, I'd expect a lot of your concerns around modals and popovers to be fixed, but the other changes around unsupported safe areas will be undone for now to prevent unexpected issues with components that are already trying to support safe areas.
Here's the current dev build:
8.7.17-dev.11768239180.18ee1069
I really appreciate you iterating on me with this and highlighting these issues. Sorry I wasn't able to get the other issues addressed at this time.
I've been testing everything again, with the latest version of everything, including @ionic/angular: 8.8.1, and it seems to work fine, except when it's a new route with an ion-header and an ion-content. 😬😬😬
Edit:
Okay... it wasn't the only place. I've seen another bug, two padding-bottom elements are being used in:
Activity
ShaneK commentedon Dec 31, 2025
Hello! Thanks for your report. I actually have a PR up that addresses this here:
#30889
Along with a dev build, if you'd like to try it. Please report any issues you find with the dev build or that solution there. Most of our team is OOO until the 5th, so it probably won't be in a patch release until the 7th at the earliest.
ShaneK commentedon Dec 31, 2025
This is kind of a weird situation. Normally I'd close this as a duplicate, but the duplicate it's of is internal, and this was opened after the PR to fix it. So I guess I'll just update the PR to say it resolves this and it'll be closed when merged
Marius-Romanus commentedon Dec 31, 2025
I tried version
8.7.16-dev.11767019759.14b7f2faand the same thing happens.Happy holidays!
ShaneK commentedon Dec 31, 2025
Yeah, I was getting back to looking at this this morning and realized I was wrong, sorry. My PR was intended to address an issue with iOS. I'm gonna look into this as part of that solution though, since it's all pretty related.
ShaneK commentedon Dec 31, 2025
@Marius-Romanus could you try my new dev buld,
8.7.16-dev.11767205737.13557925and see if that works for you?Marius-Romanus commentedon Jan 1, 2026
Hi, it seems to work fine with the example, but it doesn't work in my actual project and I haven't figured out why yet.
Edit:
I think it has to do with the fact that in many cases I have it programmatically with controllers in different componentsand presentingElement when loading them:
presentingElement: await this.modalController.getTop()or
presentingElement: this.ionRouterOutlet.parentOutlet?.nativeElShaneK commentedon Jan 2, 2026
Could you try with this dev build?
Marius-Romanus commentedon Jan 3, 2026
Hi, it seems that in this version
8.7.16-dev.11767365495.141917e9it doesn't display correctly at the top.And in my actual app, the bottom part still looks bad, and it jumps strangely between looking good and bad.
ShaneK commentedon Jan 5, 2026
Can you please provide a reproduction of your app's setup that wasn't working with the previous implementation? It's pretty rough trying to troubleshoot this blind
ionitron-bot commentedon Jan 5, 2026
Thanks for the issue! This issue has been labeled as
needs reproduction. This label is added to issues that need a code reproduction.Please reproduce this issue in an Ionic starter application and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed.
If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue.
For a guide on how to create a good reproduction, see our Contributing Guide.
15 remaining items
ShaneK commentedon Jan 7, 2026
Hey! I'm not seeing any way to reproduce any issues with the footer, I'm afraid I'm gonna need more information to go on.
Marius-Romanus commentedon Jan 8, 2026
I'm having trouble finding the examples because I'm not sure what values they depend on. I'm trying to replicate what I have in my app to get them, but it doesn't always work, and I don't know why.
I've updated the example in tab 3 with a Kanban simulation.
And in my actual app, which I haven't been able to replicate (I'm trying in tab 2 of the example), in the footer, but only in the first tab, it's adding the class "safe-area-bottom" to ion-content.
Here's the structure in case it helps:
body > app-root > ion-app > ion-router-outlet > app-dashboard > ion-tabs > div > ion-router-outlet > app-notes > ion-contentAnd a simple list where the footer looks wrong, and I don't know why. I've also tried to replicate it in the example without success.
Here's the structure in case it helps:
body > app-root > ion-app > ion-router-outlet > app-dashboard > ion-tabs > div > ion-router-outlet > app-labels > ion-contentShaneK commentedon Jan 8, 2026
Edit: Don't use the one I just posted, there's some tests flagging issues I need to look at real quick
ShaneK commentedon Jan 8, 2026
Okay, got all of that sorted! Please try again with this new dev build:
There's so many edge cases in this one, sorry about how long it's taking
Marius-Romanus commentedon Jan 9, 2026
Ugh, it was hard to reproduce. I think it's a reactivity issue.
First, sorry for the messy code I'm using in the demo. I'm having a hard time figuring out why things are happening, and I'm just trying things out randomly.
I created a route called
lists2in the routes, at the same level as the tabs. In the tabs' HTML, I put anifstatement that relies on asignal computed()function to check if theroutesfile contains the snapshot flagdata: { tabs: true }to determine whether or not to display it.Click on the link: Router List 2 and you'll see the error in the footer.
I think it's the cause of both the incorrect padding at the beginning and the missing padding in the list (as in the example).
We make a good team 💪, it's always good to help the community. Updated demo :)
ShaneK commentedon Jan 9, 2026
Hey! I see, looks like when tabs are hidden dynamically we need to re-check safe areas. I have a dev build here if you'd like to try it out:
Marius-Romanus commentedon Jan 9, 2026
Perfect! The only thing missing, I think, is adding the safe-area to the sides of ion-content when you lay the phone flat.
ShaneK commentedon Jan 9, 2026
Alright! I think this one should work. Here's the dev build:
Please let me know how it goes!
Marius-Romanus commentedon Jan 9, 2026
It seems that now in the lists, the padding extends further inwards.
I understand that these kinds of style issues are separate from this particular problem and represent new features.
There are some design aspects that I imagine you'll have to improve in the future, for example, the progress bar... should it be cropped or expanded from side to side?
Also, it's noticeable that the maps often extend to the edge. I imagine you'll have to add a new option to
ion-contentto define whether you want them edge-to-edge or with padding, depending on your specific use case, such as when it's laid flat on both sides or if, for example, it doesn't have a footer or header.ShaneK commentedon Jan 12, 2026
Hey! I'm actually going to pull back on a lot of these changes because this has sort of spiraled into a series of unrelated changes to the original PR. I'm going to focus my PR on dealing with popovers and modals and we'll have to come back around at a later time to look at the other issues. I think some of these changes will require a bit more investigation than should be done for the patch I'm currently working on, unfortunately. So with these changes, I'd expect a lot of your concerns around modals and popovers to be fixed, but the other changes around unsupported safe areas will be undone for now to prevent unexpected issues with components that are already trying to support safe areas.
Here's the current dev build:
I really appreciate you iterating on me with this and highlighting these issues. Sorry I wasn't able to get the other issues addressed at this time.
Marius-Romanus commentedon Jan 12, 2026
Okay, perfect, I'll wait for the patch then to update my app
Marius-Romanus commentedon Feb 17, 2026
Hi @ShaneK, is there any progress on this? Until it's working properly, we can't update to API 36.
ShaneK commentedon Feb 17, 2026
Hey! Last week I merged this PR, which should address the popover and modal issues:
#30949
Marius-Romanus commentedon Feb 17, 2026
And any progress on tabs and ion-content?
Marius-Romanus commentedon Mar 16, 2026
Hi again @ShaneK
I've been testing everything again, with the latest version of everything, including
@ionic/angular: 8.8.1, and it seems to work fine, except when it's a new route with an ion-header and an ion-content. 😬😬😬Edit:
Okay... it wasn't the only place. I've seen another bug, two padding-bottom elements are being used in:
and bottom is added here:
<div role="dialog" aria-modal="true" class="modal-wrapper ion-overlay-wrapper" part="content" style="height: calc(var(--height) - var(--ion-safe-area-bottom, 0px));padding-bottom: var(--ion-safe-area-bottom, 0px);"><slot></slot></div>