Close Menu
geekfence.comgeekfence.com
    What's Hot

    Google’s “Fixed” Pixel 9 & 10 Battery Bug Is Still Broken for Some People – Tech Advisor

    July 30, 2026

    Scotland and First-Person Screams Are Silent Hill: Townfall’s New Direction of Intimate Horror

    July 30, 2026

    The first 30 days of agentic AI governance: A practical checklist

    July 30, 2026
    Facebook X (Twitter) Instagram
    • About Us
    • Contact Us
    Facebook Instagram
    geekfence.comgeekfence.com
    • Home
    • UK Tech News
    • AI
    • Big Data
    • Cyber Security
      • Cloud Computing
      • iOS Development
    • IoT
    • Mobile
    • Software
      • Software Development
      • Software Engineering
    • Technology
      • Green Technology
      • Nanotechnology
    • Telecom
    geekfence.comgeekfence.com
    Home»iOS Development»ios – How-To wrap Native Tabs with a custom Header?
    iOS Development

    ios – How-To wrap Native Tabs with a custom Header?

    AdminBy AdminFebruary 21, 2026No Comments2 Mins Read8 Views
    Facebook Twitter Pinterest LinkedIn Telegram Tumblr Email
    ios – How-To wrap Native Tabs with a custom Header?
    Share
    Facebook Twitter LinkedIn Pinterest Email


    I’m using Expo SDK 54.

    In iOS when I use expo-router/unstable-native-tabes we cant wrap with another component.

    AppHeader should to go the page top. This breaks in iOS 26.

    How can we put this on every page top?

    import { useEffect } from 'react'
    import { Platform } from 'react-native'
    import { useAuth } from '@/context/AuthContext'
    import { useRouter, Stack, usePathname } from 'expo-router'
    import { NativeTabs, Icon, Label, Badge } from 'expo-router/unstable-native-tabs'
    import MaterialIcons from '@expo/vector-icons/MaterialIcons'
    import DashboardLayout from '@/components/layouts/DashboardLayout'
    import AppHeader from '@/components/ui/header'
    
    export default function ProtectedLayout() {
        const pathname = usePathname()
        const router = useRouter()
        const { isAuthenticated, isLoading } = useAuth()
    
        const isPublicStaticPage = pathname === '/privacy' || pathname === '/terms'
        const isAndroid = Platform.OS === 'android'
        const isIOS = Platform.OS === 'ios'
    
        useEffect(() => {
            if (!isLoading && !isAuthenticated && !isPublicStaticPage) {
                router.replace('/details')
            }
        }, [router, isAuthenticated, isLoading, isPublicStaticPage])
    
        if ((!isAuthenticated && !isPublicStaticPage) || isLoading) {
            return null
        }
    
        if (isPublicStaticPage && !isAuthenticated) {
            return 
        }
    
        if (isAndroid) {
            return (
                
                    
                
            )
        }
    
        if (isIOS) {
            return (
                
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                        3
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
    
                    
                        
                        }
                        />
                    
                
            )
        }
        return null;
    }
    



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Related Posts

    What’s New in Xcode 27

    July 30, 2026

    ios – iCloud Dashboard returns “Internal Error” when querying records across all containers

    July 27, 2026

    ios – How to resolve the “Failed to build cache” build error in Xcode on macOS running in Docker in the docurr/macos project?

    July 22, 2026

    ios – Do Critical Alert (Apple) sounds play one at a time, or can two overlap?

    July 17, 2026

    ios – Bizarre animation issue in SwiftUI

    July 12, 2026

    security – How and where mnemonic/private keys are generated/stored in IOS for mobile non-custodial wallet

    July 7, 2026
    Top Posts

    Understanding U-Net Architecture in Deep Learning

    November 25, 202567 Views

    The Next Paradigm in Efficient Inference Scaling – The Berkeley Artificial Intelligence Research Blog

    May 16, 202636 Views

    Hard-braking events as indicators of road segment crash risk

    January 14, 202634 Views
    Don't Miss

    Google’s “Fixed” Pixel 9 & 10 Battery Bug Is Still Broken for Some People – Tech Advisor

    July 30, 2026

    Google claims to have fixed the bug on Pixel 9 and Pixel 10 series phones…

    Scotland and First-Person Screams Are Silent Hill: Townfall’s New Direction of Intimate Horror

    July 30, 2026

    The first 30 days of agentic AI governance: A practical checklist

    July 30, 2026

    Lowering AWS KMS decrypt API costs in EMR Spark jobs

    July 30, 2026
    Stay In Touch
    • Facebook
    • Instagram
    About Us

    At GeekFence, we are a team of tech-enthusiasts, industry watchers and content creators who believe that technology isn’t just about gadgets—it’s about how innovation transforms our lives, work and society. We’ve come together to build a place where readers, thinkers and industry insiders can converge to explore what’s next in tech.

    Our Picks

    Google’s “Fixed” Pixel 9 & 10 Battery Bug Is Still Broken for Some People – Tech Advisor

    July 30, 2026

    Scotland and First-Person Screams Are Silent Hill: Townfall’s New Direction of Intimate Horror

    July 30, 2026

    Subscribe to Updates

    Please enable JavaScript in your browser to complete this form.
    Loading
    • About Us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • Terms and Conditions
    © 2026 Geekfence.All Rigt Reserved.

    Type above and press Enter to search. Press Esc to cancel.