Repository navigation
Description
Issue Description
I have an app using nested page routing outlets, and the ActionBar on the first tab of the nested page router outlet will appear under the status bar. The other tabs works as expected.
This only happens on iOS 14.x.
It happened after moving from @nativescript-community/ui-material-bottom-navigation to @nativescript-community/ui-material-bottomnavigationbar. However, it also happens when I remove the usage of the ui-material-bottomnavigationbar as well, and just use a custom tab bar, so it's probably not really linked to that.
There's a similar issue reported here: nativescript-community/ui-material-components#308
I've tried to set padding-/marginTop to force it down, without luck.
This is how it (correctly) looks on iOS 12, 15 and 16.

Reproduction
This is from another, simpler app, but same issue.
app.component
<page-router-outlet></page-router-outlet>
const routes: Routes = [
{
path: "",
redirectTo: "tabs/default",
pathMatch: "full",
},
{
path: "tabs",
loadChildren: () =>
import("./features/tabs/tabs.module").then((m) => m.TabsModule),
},
];
tabs.component
<GridLayout rows="* auto">
<GridLayout row="0" [hidden]="selectedTabIndex !== 0">
<page-router-outlet name="charactersTab"></page-router-outlet>
</GridLayout>
<GridLayout row="0" [hidden]="selectedTabIndex !== 1">
<page-router-outlet name="seriesTab"></page-router-outlet>
</GridLayout>
<BottomNavigationBar row="1" class="bottom-navigation-bar"
(tabSelected)="tabSelected($event)"
(tabReselected)="tabReselected($event)"
>
<BottomNavigationTab title="Characters">
</BottomNavigationTab>
<BottomNavigationTab title="Series">
</BottomNavigationTab>
</BottomNavigationBar>
</GridLayout>
const routes: Routes = [
{
path: "default",
component: TabsComponent,
children: [
{
path: "characters",
outlet: "charactersTab",
component: NSEmptyOutletComponent,
loadChildren: () =>
import("~/features/character-list/character-list.module").then(
(m) => m.CharacterListModule
),
},
{
path: "series",
outlet: "seriesTab",
component: NSEmptyOutletComponent,
loadChildren: () =>
import("~/features/series-list/series-list.module").then(
(m) => m.SeriesListModule
),
},
],
},
];
characters-list
<ActionBar title="Characters"></ActionBar>
<GridLayout rows="auto, *">
...
</GridLayout>
series-list
<ActionBar title="Series"></ActionBar>
<GridLayout rows="auto, *">
...
</GridLayout>
iPhone X iOS 14
Relevant log output (if applicable)
No response
Environment
OS: macOS 12.6
CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
Shell: /bin/zsh
node: 16.16.0
npm: 8.11.0
nativescript: 8.3.3
# android
java: 11.0.16
ndk: Not Found
apis: 23, 30, 31, 32
build_tools: 30.0.3, 31.0.0, 33.0.0
system_images:
- android-23 | Google APIs ARM EABI v7a
- android-23 | Google APIs Intel x86 Atom
- android-23 | Google APIs Intel x86 Atom_64
- android-24 | Google APIs Intel x86 Atom
- android-30 | Google APIs Intel x86 Atom
- android-30 | Google APIs Intel x86 Atom_64
- android-30 | Google Play Intel x86 Atom
- android-31 | Google APIs Intel x86 Atom_64
- android-31 | Google Play Intel x86 Atom_64
# ios
xcode: 14.0.1/14A400
cocoapods: 1.11.2
python: 2.7.18
python3: 3.9.13
ruby: 2.7.6
platforms:
- DriverKit 21.4
- iOS 16.0
- macOS 12.3
- tvOS 16.0
- watchOS 9.0Dependencies
"dependencies": {
"@angular/animations": "~14.1.0",
"@angular/common": "~14.1.0",
"@angular/compiler": "~14.1.0",
"@angular/core": "~14.1.0",
"@angular/forms": "~14.1.0",
"@angular/platform-browser": "~14.1.0",
"@angular/platform-browser-dynamic": "~14.1.0",
"@angular/router": "~14.1.0",
"@nativescript-community/ui-collectionview": "^4.0.0",
"@nativescript-community/ui-material-bottomnavigationbar": "^7.0.0",
"@nativescript-community/ui-material-bottom-navigation": "^7.0.0",
"@nativescript-community/ui-material-tabs": "^7.0.0",
"@nativescript/angular": "^14.2.5",
"@nativescript/core": "~8.3.1",
"@nativescript/theme": "~3.0.2",
"crypto-js": "^4.1.1",
"rxjs": "~7.5.0",
"zone.js": "~0.11.5"
},
"devDependencies": {
"@angular-devkit/build-angular": "~14.1.0",
"@angular/compiler-cli": "~14.1.0",
"@nativescript/android": "~8.3.1",
"@nativescript/ios": "~8.3.3",
"@nativescript/types": "~8.3.1",
"@nativescript/webpack": "^5.0.8",
"@ngtools/webpack": "~14.1.0",
"prettier": "2.7.1",
"typescript": "~4.7.4"
}Please accept these terms
- I have searched the existing issues as well as StackOverflow and this has not been posted before
- This is a bug report
- I agree to follow this project's Code of Conduct













Activity
CatchABus commentedon Oct 27, 2022
Does this exact same problem occur if you also use
TabViewcomponent? If not, I think the problem is on the plugin side and you should report it on the plugin repo.fpaaske commentedon Oct 27, 2022
As I mentioned, this also happens if I replace the plugin with a custom tab, e.g. GridLayout with buttons for tabs.
CatchABus commentedon Oct 27, 2022
I see.
There is a chance this is a simulator problem. I never noticed this problem on device with iOS 14.
fpaaske commentedon Oct 27, 2022
Unfortunately, no. I've tested this on real device with iOS 14, and the problem is the same as on the simulator.
Oddly enough, switching from
page-router-outletto regularrouter-outletseems to solve the problem. But I'm not sure about what other consequences I might face later on with them.I'll see if I can share a repository illustrating the problem.
fix: switch to router-outlet
fpaaske commentedon Oct 27, 2022
@CatchABus I've uploaded a repo for you to check. To reproduce the issue, replace the router-outlet in
src/features/tabs/tabs.component.htmlwith page-router-outlet, run on iOS 14.x, and navigate inside the first tab.Unfortunately, there's a little pre-work required to get it up and running, but I hope it's not too bad, and worth it in the end 😄
boris01 commentedon Oct 28, 2022
Hi @fpaaske
I think that this is because of the NSEmtpyOutletComponent.
The page-router-outlet should be wrapped with GridLayout in the NSEmptyOutletComponent.
When I updated your project with the changes below it worked.
Add this one to your project and insert it to the declarations in the app.module:
And then change this:
to:
fpaaske commentedon Oct 29, 2022
Thanks, @boris01! This solves the issue, but I'm a bit surprised that this is necessary.
This raises a few questions (not sure who can answer);
Finally, what do I lose, in my case, with router-outlet vs page-router-outlet?
boris01 commentedon Oct 29, 2022
@fpaaske for a question about router-outlet vs page-router-outlet you can look here:
https://v7.docs.nativescript.org/angular/core-concepts/angular-navigation
As for the other questions, I would like to receive the answers as well.
I found this solution after reading this issue:
NativeScript/nativescript-angular#2116
fix: misaligned actionbar for iOS 14
NathanWalker commentedon Oct 23, 2026
Addressed by #10134 (reset additional safe-area insets when they're zero), and the wrapper workaround above also resolves it. iOS 14 is no longer a supported target. Please open a new issue with a repro if the ActionBar sits under the status bar on current iOS versions.