Skip to content

App Shells for Power Apps

An app shell is the frame around a screen: where the navigation sits, where your content goes, and what happens on a phone. Every shell here pastes onto an existing screen as a few containers, reads the screen size through Parent.Width, and carries a theme switch. Every shell needs a Components, Ultra, Team or Lifetime plan.

Pick a variant

ComponentPlanYAMLWhat it is forSettings you can change
Top Nav App ShellPaidClassic, ModernSmall internal tools with up to six sections, when a sidebar feels too heavyParts toggles, App name and logo icon, Tabs with label, icon and optional screen
Mobile App ShellPaidClassic, ModernFrontline apps used on a phone: inspections, timesheets, deliveriesParts toggles (header, app tile, theme switch, user, placeholder), App name and logo icon, up to five tabs
Portal App ShellPaidClassic, ModernSelf-service portals such as an IT request desk or an HR portal, with a centred column that never gets too wideParts toggles (plus page band), App name and logo icon, Subtitle and Primary action, Tabs
Split View App ShellPaidClassic, ModernHelpdesk, CRM, approvals desk or inbox: list on the left, detail on the rightParts toggles, App name and logo icon, List title and sample rows with title, subtitle and status, Rail icons
Sidebar App ShellPaidClassic, ModernDesktop-first admin tools and dashboards; bottom tab bar on phonesParts toggles (brand, theme switch, user, bottom tab bar, placeholder), App name and logo icon, Navigation items with label, icon, section switch and optional screen
Collapsible Sidebar App ShellPaidClassic, ModernDashboards where a wide table or chart needs the room: the sidebar folds to a 64 px icon railThe same as Sidebar App Shell

Paid means a Components, Ultra, Team or Lifetime plan (pricing). Classic and Modern are the two Power Apps control sets you can pick from the Copy YAML button. Open the category in the library: App Shells.

To copy a variant into Power Apps Studio, follow Getting Started.

After you paste

Click the screen in the Tree view and paste. The frame fills the screen; every size is a formula on the screen, so it fits phones, tablets and desktops. Put your own controls inside the content container and delete the placeholder labels. Paste the same shell on every screen, or build the app on one screen with containers that show and hide.

Each shell has its own global variables, named after the shell so two shells never fight. For the Sidebar App Shell they are gblShellNav (the number of the active item), gblShellPage (its label), gblShellDark (the theme switch), and for the collapsible one also gblRailShellRail. The other shells use TopShell, MobileShell, PortalShell and SplitShell as the stem. Names use your prefix settings.

Tapping a navigation item sets the number and the label. To show one page container at a time on a single screen:

// conHomePage, Visible
gblShellNav = 1

// conRequestsPage, Visible
gblShellNav = 2

To navigate to real screens instead, type the screen name into the Screen field of each item in Settings. The item then also runs Navigate(YourScreen). The screen must exist in the app before you paste, or Studio says the name is not recognized.

The theme switch flips the dark variable. Every surface color in the YAML is If(gblShellDark, dark, light), so the whole frame changes at once and your own controls can read the same variable. Switch the part off in Settings for plain colors in the preview theme.

// Your own control, Fill
If(gblShellDark, RGBA(21, 30, 48, 1), RGBA(255, 255, 255, 1))

Good to know

  • Below 768 px the sidebar or the tabs hide and a bottom tab bar with the first five items appears. The Mobile App Shell keeps the bottom bar at every size. Nothing to set in Power Apps for this, the formulas read Parent.Width.
  • The user footer and the avatars read User().FullName and User().Email. Nothing to connect.
  • The Split View App Shell keeps the selected row in gblSplitShellRow, a whole record. Its list is a gallery over a small sample table with a search filter; replace the Table in Items with your list and keep the columns title, subtitle and status, or rename them in the row labels.
  • The Portal App Shell's column is Min(960, Parent.Width - 48); change 960 once in the content container and the band labels.
  • Every shell has Classic and Modern YAML with the same layout.

Open the family in the library at App Shells. Related guides: Sidebars, Navigation Bars and Speed Dial.

App Shells for Power Apps | PowerLibs