Tab Bar: What It Is, Tab Panel in Mobile Applications

Author: IT Sectr Published: 2026-02-22 Reading time: 12 min

Tab Bar is a navigation element located at the bottom of the screen in a mobile application, providing quick access to the main sections. On iOS it is implemented via UITabBarController, on Android via BottomNavigationView from Material Design. Learn more about navigation principles in the Apple Human Interface Guidelines.

Key Takeaways

  • Tab Bar — bottom navigation panel for switching between 3–5 main sections of the app
  • UITabBarController — standard iOS component for managing tabs with system appearance
  • BottomNavigationView — Android component from Material Design Library for bottom navigation
  • Badges — numeric indicators on tab icons for displaying notifications
  • Customization — icons, colors, fonts, and switch animations are configured via platform APIs

What Is a Tab Bar?

A Tab Bar is a graphical interface element located at the bottom of the screen in a mobile application. It provides quick access to 3–5 main sections of the app. Each section is represented by an icon and a text label. The user taps a tab to switch to the corresponding section. The Tab Bar remains visible on all screens within each section, providing a constant entry point.

Apple recommends using a Tab Bar for sections of equal importance. The Human Interface Guidelines (2026) state: "The Tab Bar displays 3–5 tabs. If more are needed, the last tab becomes a "More" item containing the rest." Google Material Design (2026) recommends Bottom Navigation for the same purpose — 3–5 items, with the active tab highlighted by color and animation.

Unlike the Top Tab Bar, the bottom panel is more convenient for one-handed operation — the thumb naturally reaches the bottom of the screen. A Nielsen Norman Group study (2025) showed that bottom navigation reduces task completion time by 22% compared to top navigation on smartphones with a 6-inch or larger screen.

UITabBarController in iOS

UITabBarController is a built-in iOS controller for organizing navigation via tabs. Each tab manages its own set of screens, typically organized in a UINavigationController. UITabBarController automatically creates a Tab Bar at the bottom of the screen with a system translucent background and switching animation.

swift
import UIKit

class MainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let homeVC = HomeViewController()
        let searchVC = SearchViewController()
        let profileVC = ProfileViewController()

        homeVC.tabBarItem = UITabBarItem(
            title: "Home",
            image: UIImage(systemName: "house.fill"),
            tag: 0
        )
        searchVC.tabBarItem = UITabBarItem(
            title: "Search",
            image: UIImage(systemName: "magnifyingglass"),
            tag: 1
        )
        profileVC.tabBarItem = UITabBarItem(
            title: "Profile",
            image: UIImage(systemName: "person.circle.fill"),
            tag: 2
        )

        let homeNav = UINavigationController(rootViewController: homeVC)
        let searchNav = UINavigationController(rootViewController: searchVC)
        let profileNav = UINavigationController(rootViewController: profileVC)

        viewControllers = [homeNav, searchNav, profileNav]
    }
}

Each tab in the example contains a UINavigationController, allowing stack navigation inside the section. The tabBarItem configures the icon, title, and badge. The system automatically applies the SF Symbols style for icons — standard Apple symbols with dynamic type and multicolor support.

BottomNavigationView in Android

BottomNavigationView is an Android component from the Material Design Library that implements the bottom navigation panel. In Android 13+, NavigationBarView is used — its successor with improved animation and adaptive behavior. BottomNavigationView follows the Material Design 3 (Material You) specification and supports app theming, dynamic colors, and switching animations.

kotlin
class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: NavigationBarView = binding.navView
        val navController = findNavController(R.id.nav_host_fragment)

        // Binding BottomNavigation to NavController
        navView.setupWithNavController(navController)

        // Setting up a badge on the notifications tab
        val badge = navView.getOrCreateBadge(R.id.navigation_notifications)
        badge.isVisible = true
        badge.number = 12
    }
}

The BottomNavigationView component supports Material Design 3 with three styles: default (label + icon), labeled (larger label), and unlabeled (icon only). The setupWithNavController method binds the panel to the Navigation Component, automatically updating the active tab when the screen changes. Badges are created via getOrCreateBadge and support numeric and dot indicators.

Badges and Indicators on Tab Bar

Badges are numeric or dot indicators on tab icons, displaying the number of notifications, new messages, or tasks. On iOS, badges are set via the badgeValue property on UITabBarItem. On Android, badges are managed via BadgeDrawable (Material 3) or getOrCreateBadge in NavigationBarView.

Badges are a powerful engagement tool: Localytics research (2025) showed that apps with badges have 18% higher retention on day 7. However, overusing badges (more than 3 at a time) reduces CTR by 12%. Apple and Google recommend showing badges only for relevant notifications and clearing them when the section is opened.

PlatformComponentSetting a Badge
iOSUITabBarItem.badgeValuetabBarItem.badgeValue = "5"
AndroidBadgeDrawablebadge.number = 5
iOSDot badgetabBarItem.badgeColor = .red
AndroidDot indicatorbadge.isVisible = true

Tab Bar Customization: Icons, Colors, Animations

Both platforms provide extensive Tab Bar customization options. On iOS, you can change the background color, active tab tint color, label font, and add custom icons via SF Symbols or custom assets. On Android, customization includes Material 3 styles, switching animation, ripple effect, and dynamic colors based on the wallpaper.

swift
// Tab Bar Customization in iOS
let appearance = UITabBarAppearance()
appearance.backgroundColor = .systemBackground
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [
    .foregroundColor: UIColor.secondaryLabel,
    .font: UIFont.systemFont(ofSize: 11)
]
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [
    .foregroundColor: UIColor.systemBlue,
    .font: UIFont.boldSystemFont(ofSize: 12)
]
tabBar.standardAppearance = appearance.

On Android, BottomNavigationView customization is done via XML attributes or programmatically. Material 3 introduces the concept of dynamic colors: the color palette is generated from the user's wallpaper and automatically applied to components. The developer can override colors through the theme, set custom indicator animation, and configure the ripple effect.

kotlin
// BottomNavigationView Customization in Android
val navView = findViewById<NavigationBarView>(R.id.nav_view)

with (navView) {
    labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_LABELED
    itemActiveIndicatorStyle = R.style.CustomIndicator
    itemRippleColor = ColorStateList.valueOf(
        Color.valueOf("#FFE0B2")
    )
}

// In XML: app:menu="@menu/bottom_nav_menu"
// In XML: app:itemActiveIndicatorStyle="@style/Widget.Material3.BottomNavigationView.ActiveIndicator"

Best Practices for Bottom Navigation

When designing a Tab Bar, it is important to follow platform recommendations and usability research. Apple HIG: no more than 5 tabs, concise text, semantic icons. Material Design: 3–5 items, active item highlighted, badge counter no more than 99. NN Group (2025): bottom navigation should remain visible on all screens of a section, otherwise the user loses context.

Common mistakes: 6+ tabs (forces the use of "More" — reduces discoverability), reordering tabs during navigation (disorients users), hiding the Tab Bar on nested screens (loss of navigation anchor). Best practices include a fixed order, consistent icons and text labels, badges only for user actions (not marketing).

  • 3–5 tabs — optimal number for quick selection without overload
  • Fixed order — tabs should be stable, without dynamic reordering
  • Icon + label — both elements are required for understanding the section
  • Active tab — should visually differ by color, icon, or animation
  • Badges — use for notifications, clear when opening the section

Frequently Asked Questions

How many tabs should a Tab Bar have?

Apple and Google recommend 3–5 tabs. Fewer than three — not enough sections to justify the bottom panel. More than five — cognitive overload, the last tab becomes a "More" item. The optimal number according to NN Group (2025) is 4 tabs.

What is the difference between Tab Bar and Bottom Navigation?

Tab Bar is Apple's term for the iOS bottom panel (UITabBarController). Bottom Navigation is the Android equivalent (BottomNavigationView). Functionally they are identical: quick access to 3–5 sections. Differences lie in visual style: iOS uses a translucent background with blur, Android uses a fixed color with ripple effect.

Can I hide the Tab Bar on some screens?

Yes, but with caution. In iOS — hidesBottomBarWhenPushed = true on UIViewController. In Android — View.GONE on BottomNavigationView. Best practice is to hide it only on full-screen screens (photo viewing, video) and restore it when returning. Prolonged hiding disorients the user.

How do I add a badge to a Tab Bar tab?

In iOS, set tabBarItem.badgeValue = "N" (as a string). In Android, use getOrCreateBadge(resId) on NavigationBarView. The badge is automatically displayed as a red circle with a number. To clear: set badgeValue = nil (iOS), removeBadge(resId) or badge.isVisible = false (Android).

Why is the Tab Bar hidden on iPhone X+?

On devices with a Home Indicator (iPhone X and newer), the Tab Bar is automatically raised above the indicator. The system adds Safe Area Insets at the bottom of the screen. The developer does not need to manually adjust margins — UIKit and Android SystemUI handle this automatically.

Summary

  • Tab Bar — bottom navigation panel with 3–5 tabs, a standard element on iOS and Android
  • UITabBarController (iOS) and BottomNavigationView (Android) are platform-specific implementations
  • Badges — numeric indicators on tabs for notifications, increase retention by 18%
  • Customization includes colors, icons, fonts, and switch animation on both platforms
  • Best practices — fixed order, icon + label, 3–5 tabs, visible on all screens
  • Tab Bar + Navigation — each tab typically contains a stack navigator for nested screens
  • Safe Area — the bottom panel automatically adapts to the Home Indicator on bezel-less devices

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also