App Store Review
safaiyeh/app-store-review-skill
Evaluates code against Apple's App Store Review Guidelines. An agent skill from safaiyeh/app-store-review-skill.
Reference for iOS 26 navigation bar, tab bar, toolbar, and Liquid Glass building blocks (UITab, scroll-edge effects, search placement, shared-background platter, UIButton glass configurations…
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install wix/react-native-navigation ios26-navigation --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/ios26-navigation .claude/skills/ios26-navigation && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .claude/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install wix/react-native-navigation ios26-navigation --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/ios26-navigation .agents/skills/ios26-navigation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .agents/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install wix/react-native-navigation ios26-navigation --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/ios26-navigation .cursor/skills/ios26-navigation && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .cursor/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/wix/react-native-navigation.git --path .cursor/skills/ios26-navigation--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install wix/react-native-navigation ios26-navigation --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/ios26-navigation .gemini/skills/ios26-navigation && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .gemini/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install wix/react-native-navigation ios26-navigationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/ios26-navigation .github/skills/ios26-navigation && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .github/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wix/react-native-navigation --skill ios26-navigation -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install wix/react-native-navigation ios26-navigation --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wix/react-native-navigation.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/ios26-navigation .opencode/skills/ios26-navigation && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ios26-navigation" agent skill from https://github.com/wix/react-native-navigation/tree/master/.cursor/skills/ios26-navigation into .opencode/skills/ios26-navigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ios26-navigation", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ios26-navigationReference for iOS 26 navigation bar, tab bar, toolbar, and Liquid Glass building blocks (UITab, scroll-edge effects, search placement, shared-background platter, UIButton glass configurations…
Ios26 Navigation is an agent skill from wix/react-native-navigation, published by the product's own GitHub organization. Reference for iOS 26 navigation bar, tab bar, toolbar, and Liquid Glass building blocks (UITab, scroll-edge effects, search placement, shared-background platter, UIButton glass configurations, UIGlassEffect / UIGlassContainerEffect, UINavigationItem.style navigator/browser/editor, UICornerConfiguration / concentric corners, UISheetPresentationController, SF Symbols 7) plus the internal view hierarchy of UIBarButtonItem and UIToolbar, and how react-native-navigation maps to all of it. Use when adding or fixing iOS…
Its SKILL.md is about 8.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering Cross-platform mobile apps. It works with iOS and React Native. The repository describes itself as: A complete native navigation solution for React Native. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1de39e0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developer.apple.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ios26 Navigation loads about 8.3k tokens when it runs. Until then it costs about 191 tokens; SKILL.md has 3,104 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from wix/react-native-navigation at commit 1de39e0, republished under its MIT licence (© wix). 3,104 words, ~8,346 tokens.
.claude/skills/ios26-navigation/SKILL.md (or your agent's skills folder).Use this skill any time work touches:
@available(iOS 26.0, *) branchPair this with rnn-codebase (repo navigation) and rnn-e2e-runner (validation).
rnn-build-release.mdc. Debug masks iOS 26 layout/transition issues.DEVELOPER_DIR=/Applications/Xcode_26.1.app/Contents/DeveloperiPhone 17 Pro Max (iOS 26 default)UIDesignRequiresCompatibility in Info.plist. RNN reads it in RNNReactButtonView.designRequiresCompatibility to fall back to pre-iOS-26 layout. Always honor it in new iOS 26 code paths.The system bar material on UINavigationBar, UITabBar, UIToolbar is always translucent / glass by default. configureWithOpaqueBackground is silently overlaid with glass unless you also nil out backgroundEffect.
UIBarAppearance.backgroundEffect = nil — required to actually get an opaque/transparent fill on iOS 26.UITabBarAppearance / UINavigationBarAppearance / UIToolbarAppearance — same backgroundEffect rule.RNN handling:
ios/BottomTabsAppearancePresenter.mm: branches on iOS 26 — uses configureWithTransparentBackground + backgroundEffect=nil + sets tabBar.backgroundColor. Pre-26 uses configureWithOpaqueBackground.ios/TopBarAppearancePresenter.mm: same pattern for the navigation bar.The tab bar floats above content on iOS 26 instead of pushing it up. Content underneath needs to extend.
safeAreaInsets.bottom increases for content.drawBehind should be YES on iOS 26.RNN handling:
ios/RNNBottomTabsOptions.mm (-shouldDrawBehind): defaults drawBehind to YES on iOS 26, NO otherwise.ios/RNNBottomTabsController.mm: rnn_cycleAllTabsThenRestoreInitialSelection — iOS 26 first-layout bug where tab item titles get misplaced; cycle selection in viewDidAppear to force a correct layout. Gated by _rnnDidApplyInitialTabBarSelectionFix.Modern tab API replaces viewControllers with tabs: [UITab]. Supports UITabGroup, UISearchTab, and UITabBarController.mode = .tabSidebar.
UITab(title:image:identifier:viewControllerProvider:) — lazy VC creation per tab.UITabBarController.tabs — array of UITab, can mix UITab and UITabGroup.UITabBarController.mode — .tabBar (default) vs .tabSidebar (iPad sidebar).UISearchTab — first-class search tab, integrates with UINavigationItem search.UITabBarController.sidebarLayoutPreferences — iPad sidebar customization.UITabBarController.tabBarPlacement — .automatic, .bottom, .top (iPadOS 26 can pin the tab bar at the top of the window).mode changes inside UIView.animate.RNN handling: RNN currently uses the legacy viewControllers API. There is no UITab / tabs adoption yet. New iOS 26 tab features (sidebar mode, search tab, groups, top placement) would need a new code path in RNNBottomTabsController and corresponding Options.ts surface.
Persistent floating mini-control attached above the tab bar (e.g., Apple Music's now-playing bar).
UITabBarController.bottomAccessory: UITabAccessory?UITabAccessory(contentView:) — wraps a UIView.RNN handling: Not yet exposed. Would need a new option (e.g., bottomTabs.accessory: { component: { name, ... } }) and a presenter to mount a React view inside a UITabAccessory.
iOS 26 makes scrollEdgeAppearance matter more (the bar fades to transparent when scrolled to the top). New scrollEdgeEffect on UINavigationItem controls the effect.
UINavigationItem.scrollEdgeEffect — controls the fading/glass effect at scroll edges.UINavigationBar.scrollEdgeAppearance — appearance when at the scroll edge.UITabBar.scrollEdgeAppearance — same for tab bar.RNN handling:
scrollEdgeAppearance exposed via top bar options — see website/docs/api/options-scrollEdgeAppearance.mdx.scrollEdgeEffect added in PR #8281 (Add scrollEdgeEffect option).iOS 26 introduces three placements:
UINavigationItemSearchBarPlacementStacked — under the title, classic.UINavigationItemSearchBarPlacementIntegrated — inline with the title bar, expanded.UINavigationItemSearchBarPlacementIntegratedButton — collapsed to a button until tapped.Property: UINavigationItem.preferredSearchBarPlacement. Availability-gated, not present pre-iOS-26.
RNN handling:
ios/RNNSearchBarPlacement.mm / .h — JS-facing enum.ios/UIViewController+RNNOptions.mm (setSearchBar...): maps RNN's SearchBarPlacementIntegrated to integrated or integrated-button depending on focus. Falls through to stacked otherwise.iOS 26 wraps every UIBarButtonItem in a shared Liquid Glass platter. Custom views and pre-styled UIButtons get double-decorated.
UIBarButtonItem.hidesSharedBackground: Bool — opt out of the platter.RNN handling:
ios/RNNUIBarButtonItem.mm: defaults hidesSharedBackground = YES on iOS 26 for both icon buttons and custom (React) view buttons. Pins custom view to 44x44.ios/RNNReactButtonView.mm: width/height constraints + center translation post-mount to keep the React view aligned inside the reserved 44pt slot.RNNButtonOptions.hideSharedBackground (also on RNNBackButtonOptions) — see src/interfaces/Options.ts.UIBarButtonItemGroup factory APIs and prominent style (iOS 26)iOS 26 added direct factories on UIBarButtonItem that build groups inline. These are the cleanest way to make the shared platter intentional rather than relying on UIKit's implicit clustering.
UIBarButtonItem.creatingFixedGroup() -> UIBarButtonItemGroup
UIBarButtonItem.creatingMovableGroup(customizationIdentifier:) -> UIBarButtonItemGroup
UIBarButtonItem.creatingOptionalGroup(customizationIdentifier:isInDefaultCustomization:) -> UIBarButtonItemGroupPlus a new style:
UIBarButtonItem.style = .prominent — primary-action styling, tints the platter with the bar's tintColor at full saturation. Use sparingly (one prominent item per bar).When grouping is intentional, UIKit renders the group under a single _UIBarItemGroupPlatter (see §7b/§9) instead of one platter per item. hidesSharedBackground still applies per item, so you can mix glassed and bare items inside one group.
RNN handling: Not exposed today. If a future option models a logical action cluster, build it as a UIBarButtonItemGroup rather than a sequence of items so the platter coalesces correctly.
References:
UIBarButtonItem on iOS 26UIBarButtonItem is not a UIView — it's a model object. UIKit materializes it into a private view hierarchy inside the parent UINavigationBar or UIToolbar. The exact class names are private and can change; the layering and ordering are stable and worth knowing for layout debugging.
Approximate structure for a single bar button item (Liquid Glass, iOS 26):
UINavigationBar / UIToolbar
└── _UIBarBackground (bar-wide background, Liquid Glass material)
└── _UIButtonBarStackView (horizontal stack of items, leading or trailing group)
└── _UIModernBarButton (host view per item; one per UIBarButtonItem)
├── _UIBarItemPlatter (shared Liquid Glass background; the "platter")
│ └── CAFilter / glass layers (UIGlassEffect-backed)
└── content view (image, title label, OR customView)Key facts that affect RNN code:
UIBarButtonItemGroup (or implicit leading/trailing cluster) can be coalesced into a single shared platter spanning several items. This is the "shared background" that hidesSharedBackground opts out of.hidesSharedBackground = YES removes the _UIBarItemPlatter from the host view; the content view becomes the direct child of _UIModernBarButton. The host view is still 44pt minimum._UIModernBarButton) reserves the slot, not the customView. UIKit sizes the host using:RNNUIBarButtonItem.mm — without explicit constraints, React mounts asynchronously, the customView's intrinsic size starts at zero, the host reserves zero width, the bar lays out, then React reports its real size and the host has to relayout. The visible artifact is the button "popping in" or being misplaced after the push transition's snapshot already captured the wrong frame.tintColor set on the bar item or bar applies to the system image inside the host view; it does not propagate into a React customView. Color the React content explicitly.Practical debugging:
po [self.navigationItem.rightBarButtonItems.firstObject valueForKey:@"_view"] in lldb, or with View Debugger → uncheck "Show layers only" to see the private classes.hidesSharedBackground = NO with a customView that paints its own chrome (double-decoration clips/overlaps).References (public API only — internals are observed, not documented):
The tab bar can auto-minimize during scroll.
UITabBarController.tabBarMinimizeBehavior — .automatic, .never, .onScrollDown, .onScrollUp.setNeedsUpdateOfTabBarMinimizeBehavior() — re-evaluate.RNN handling: Not yet exposed. Would be a new option on bottomTabs.
UIToolbar on iOS 26UIToolbar is a real UIView (unlike UIBarButtonItem). Approximate internal hierarchy on iOS 26:
UIToolbar
├── _UIBarBackground (bar-wide Liquid Glass material;
│ configured via UIToolbarAppearance)
│ └── _UIBackdropView / glass layers
│ └── _UIBarBackgroundShadowView (1pt hairline; controlled by shadowImage / shadowColor)
└── _UIToolbarContentView
└── _UIButtonBarStackView (horizontal stack of toolbar items)
├── _UIModernBarButton (item host — see 7b for layer breakdown)
├── _UIModernBarButton
├── ... fixed/flexible spaces become layout gaps in the stack ...
└── (optional) _UIBarItemGroupPlatter
└── two or more _UIModernBarButton sharing one platter
(only when items are in the same UIBarButtonItemGroup)What's actually public and load-bearing on iOS 26:
UIToolbarAppearance (standard / compact / scrollEdge) drives _UIBarBackground. Setting barTintColor / backgroundImage on UIToolbar directly is silently overridden by Liquid Glass unless appearance.backgroundEffect = nil.configureWithDefaultBackground on iOS 26 produces glass. To get an opaque fill: configureWithOpaqueBackground plus backgroundEffect = nil plus explicit backgroundColor. This mirrors what BottomTabsAppearancePresenter.mm does for the tab bar.hidesSharedBackground = YES. The 44pt host-view sizing race applies identically.UIBarButtonItemGroup lets adjacent items render under one shared platter (visually grouped pill). customizationIdentifier opts the toolbar into the user-customization sheet (iPadOS).scrollEdgeAppearance matters here too. When a scroll view is attached, the toolbar fades to transparent at the scroll edge using UIToolbar.scrollEdgeAppearance. Pre-iOS-26 this was iPad-only for many cases; iOS 26 applies it consistently.Display mode and customization (iOS 26 / iPadOS 26):
UIToolbar.displayMode — .automatic, .expanded, .compact. Drives whether items spread out or collapse into an overflow menu.UIBarButtonItem.menuRepresentation — the menu UIKit shows when the item is hoisted into the overflow control under .compact.UIToolbar.beginCustomizingItems(...) / endCustomizingItems — programmatic entry into the user-customization sheet for movable/optional groups.RNN handling:
RNN does not expose UIToolbar as a first-class options surface today. Toolbar-shaped behavior in this repo comes from the navigation controller's bottom bar via RNNStackController and is configured indirectly through stack options. Any new toolbar feature should:
ToolbarPresenter) mirroring TopBarPresenter's appearance pattern.UIToolbarAppearance only — never direct barTintColor / backgroundImage.UIBarButtonItemGroup when the option models a logical cluster (e.g. "primary actions") so the platter coalesces correctly.hidesSharedBackground defaults for React custom views, same as RNNUIBarButtonItem.mm does today.References:
UIToolbarUIToolbarAppearanceUIBarButtonItemGroupUINavigationController.preferredTransition — control push/pop animation style (iOS 26 expansion).UIViewController.preferredTransition — zoom transitions.RNN handling: Not exposed. Stack push/pop currently uses defaults.
iOS 26 ships SF Symbols 7. Bar buttons that use system images get the new variants automatically. Custom symbol configurations should re-test on iOS 26.
Animated symbols are part of the iOS 26 bar story:
NSSymbolEffect family — .bounce, .pulse, .variableColor, .replace, .breathe, .scale, .appear, .disappear, .wiggle (iOS 18+; new variants in 26).UIImageView produced by UIKit, or use UIView.addSymbolEffect(_:options:animated:) on the host view returned by UIBarButtonItem.value(forKey: "_view") (private — prefer using UIButton with a configured image inside a custom bar item).UIButton glass configurationsUIButton.Configuration got first-class glass factories in iOS 26. Anything RNN renders that's not a bar button (custom views inside a screen, overlays, modal headers, bottom accessories) should adopt these instead of hand-rolling chrome.
UIButton.Configuration.glass() — translucent Liquid Glass pill
UIButton.Configuration.prominentGlass() — tinted, more saturated variant
UIButton.Configuration.plain()
UIButton.Configuration.gray()
UIButton.Configuration.tinted()
UIButton.Configuration.filled()
UIButton.Configuration.borderless()On iOS 26 the legacy configurations (plain / gray / tinted / filled / borderless) automatically repaint with the Liquid Glass material — you don't opt in, you opt out via UIDesignRequiresCompatibility.
Configuration knobs that affect build-up:
cornerStyle — .fixed / .dynamic / .capsule / .small / .medium / .large. .dynamic adopts concentric corners (see §15).buttonSize — .mini / .small / .medium / .large.baseBackgroundColor / baseForegroundColor — tint multiplier on glass.Approximate internal hierarchy for a configuration-based button on iOS 26:
UIButton (configuration-based)
├── _UIButtonBackgroundView (the platter / glass body)
│ ├── UIVisualEffectView (UIGlassEffect — see §13)
│ └── tint overlay (CALayer)
└── _UIButtonContentStackView
├── UIImageView (leading or trailing image)
├── UILabel (title)
└── UILabel (subtitle, when set)RNN handling: Not exposed as an option today. RNN doesn't render its own button chrome inside screens — that's the React side's job — but if RNN ever needs a system-styled control (e.g. a "Done" button on a custom modal header it builds natively), use UIButton.Configuration.glass() rather than custom drawing.
References:
UIGlassEffect and UIGlassContainerEffect (public Liquid Glass API)The entire Liquid Glass material is exposed publicly. This is the API to use whenever RNN needs custom glass chrome — floating overlays, bottom accessories, custom navigation extensions, modal grabbers.
UIGlassEffect — UIVisualEffect subclass
UIGlassEffect.Style.regular — default frosted glass
UIGlassEffect.Style.clear — thinner, more transparent variant
UIGlassEffect.tintColor — multiplied tint
UIGlassContainerEffect — wraps multiple glass views; they morph/merge when adjacent
UIVisualEffectView(effect: UIGlassEffect()) — hostBehavioral rules:
UIVisualEffectViews with UIGlassEffect placed inside the same UIGlassContainerEffect will visually merge into a single platter when they touch or overlap. This is what produces the "morphing" you see when a search bar collapses into a button, or when tabs minimize into a single pill.tintColor is multiplied, not painted — fully saturated colors look pastel. Use bold colors only when you want a noticeably tinted glass.Build-up:
UIVisualEffectView (effect: UIGlassEffect)
├── _UIVisualEffectBackdropView (CAFilter blur + refraction)
├── _UIVisualEffectSubview (tint overlay)
└── contentView (your content; goes here, not on the effect view directly)RNN handling: Not used yet. Any future custom chrome (e.g. a bottomAccessory host, a custom modal grabber, a floating action overlay) should be a UIVisualEffectView with UIGlassEffect, not a UIView with a manually configured UIBlurEffect. Pre-iOS-26 RNN can fall back to UIBlurEffectStyle.systemMaterial via the existing availability pattern.
References:
UIGlassEffectUIGlassContainerEffectUIVisualEffectViewUINavigationItem.style — navigator / browser / editoriOS 26 introduces three navigation item styles that reshape the entire navigation bar's internal layout. This is one of the bigger build-up changes in 26.
UINavigationItem.Style.navigator — default; classic nav title + leading/trailing items
UINavigationItem.Style.browser — URL-bar-like layout with a centered integrated field
UINavigationItem.Style.editor — document editor; renamable title + subtitle + badgeRelated properties (only meaningful when style ≠ .navigator):
UINavigationItem.documentProperties: UIDocumentProperties? — file URL, subtitle, badge displayed in editor style.UINavigationItem.renameDelegate — inline rename UI for editor style.UINavigationItem.titleMenuProvider — context menu when tapping the title (iOS 16+, but actually visible by default in browser/editor styles on 26).How the build-up changes:
.navigator — standard _UINavigationBarContentView with title label centered..browser — _UINavigationBarContentView swaps the title slot for an integrated URL field (UISearchTextField-shaped), with leading and trailing item clusters under shared platters..editor — adds a vertical stack: title (renamable) + subtitle (file path) + badge, plus a primary action slot at the trailing edge.RNN handling: Not exposed. A future RNN option could surface topBar.style: 'navigator' | 'browser' | 'editor'. Editor style is the more interesting one for document-shaped apps; browser style fits Wix preview-style flows.
References:
UINavigationItem.StyleUIDocumentPropertiesUICornerConfiguration and concentric cornersConcentric corners are a foundational iOS 26 design rule: a child element's corner radius should equal its parent's radius minus the inset, so curves stay visually parallel. Apple's own bar items, sheets, and buttons obey this; mixing fixed cornerRadius with a concentric container looks visibly wrong on 26.
UICornerConfiguration.uniformCornerRadius(_:) // fixed radius
UICornerConfiguration.uniformCornerConfiguration(_:) // with corner style (capsule, etc.)
UICornerConfiguration.concentric(minimum:) // matches parent's curvature, floored at minimum
UIView.cornerConfiguration: UICornerConfiguration? // applies to the view's layerRule of thumb: anything painted inside a glass element should be .concentric(minimum: small) rather than .uniformCornerRadius(N). The system already uses concentric corners for bar item platters, sheet corners that morph with the device screen radius, and tab bar item shapes.
RNN handling: Not exposed. Any future RNN-native custom chrome that nests inside a glass element (e.g. a React custom view sitting inside an iOS 26 platter that RNN draws) should apply .cornerConfiguration = .concentric(...) on the wrapping UIView so it inherits the platter's curvature.
References:
UISheetPresentationController iOS 26 changesRNN modals route through UISheetPresentationController when configured. iOS 26 changes its presentation in three meaningful ways:
cornerConfiguration replaces preferredCornerRadius for finer control. Sheets can now have asymmetric corners and use .concentric(minimum:) to match the device's screen radius — the result is the visible "corner morph" when the sheet animates from the small detent to medium/large.UISheetPresentationController.Detent.custom) need to play nicely with this.Related: UISheetPresentationController.prefersGrabberVisible still controls the grabber; the grabber now uses Liquid Glass material.
RNN handling: RNN exposes modal presentation through stack options. iOS 26 sheet behavior surfaces automatically through UIKit defaults — but the "sheet over tab bar" change can visually regress apps that expected the pre-26 layout. If users report it, the fix is to adjust the detent or presentation context, not to fight UIKit.
References:
UISheetPresentationControllerdeveloper.apple.com page; check WWDC25 sessions for sample patterns.TopBarPresenter + RNNTopBarOptions. Bottom tab → BottomTabsAppearancePresenter / RNNBottomTabsController + RNNBottomTabsOptions. Bar buttons → RNNUIBarButtonItem + RNNButtonOptions.lib/src/interfaces/Options.ts. Document semantics, iOS-only marker, iOS 26 minimum.*Options.mm (use the existing [XParser parse:dict key:@"..."] pattern). Add to mergeOptions:.if (@available(iOS 26.0, *)) { ... }. Honor UIDesignRequiresCompatibility if behavior would diverge for legacy-design apps.playground/src/screens/ exercising the option, both visible and toggle states.playground/e2e/ using device.getPlatform() === 'ios' and an iOS version check. Follow existing baseline-then-action screenshot patterns.website/docs/api/options-*.mdx.if (@available(iOS 26.0, *)) and the property name (e.g. backgroundEffect, hidesSharedBackground, preferredSearchBarPlacement) — see if RNN already has a branch.git log --oneline -- ios/<file>.mm | head -20) — most iOS 26 regressions cluster.UIDesignRequiresCompatibility: if the bug only happens with the new design, the fix must not break compatibility mode.| Area | File(s) | Last touched PR(s) |
|---|---|---|
| Custom React bar buttons (Platter, centering, lifecycle) | RNNUIBarButtonItem.mm, RNNReactButtonView.mm | #8300 |
| Tab item title misplaced on first layout | RNNBottomTabsController.mm (rnn_cycleAllTabsThenRestoreInitialSelection) | #8245, #8254, #8255 |
| Tab bar background color / glass | BottomTabsAppearancePresenter.mm | #8263, #8288 |
| Search bar placement | UIViewController+RNNOptions.mm, RNNSearchBarPlacement.mm | #8183, #8211 |
| Scroll edge effect on top bar | top bar options | #8281, #8239, #8207 |
| iPad back navigation (iOS 26) | nav controller | #8277 |
drawBehind default on floating tab bar | RNNBottomTabsOptions.mm (-shouldDrawBehind) | — |
© wix, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .cursor/skills/ios26-navigation of wix/react-native-navigation.
Open the folder on GitHubat commit 1de39e0
Ios26 Navigation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ios26 Navigation this skillwix/react-native-navigation | 13k | — | ~8.3k | Automated safety check: Pass | MIT | |
| App Store Reviewsafaiyeh/app-store-review-skill | 362 | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Apple Designvrcm-team/VRCM | 179 | 1 repos | ~6.2k | Automated safety check: Pass | MIT | |
| Expo Tailwind SetupCherryHQ/cherry-studio-app | 4k | 8 repos | ~3k | Automated safety check: Pass | MIT | |
| Screenmapaleqsio/screenmap | 242 | — | ~7.2k | Automated safety check: Pass | MIT | |
| Expo Brownfield Integrationmweinbach/agent-coworker | 156 | 2 repos | ~900 | Automated safety check: Notes | Custom licence |
safaiyeh/app-store-review-skill
Evaluates code against Apple's App Store Review Guidelines. An agent skill from safaiyeh/app-store-review-skill.
vrcm-team/VRCM
Cross-platform UI/UX design reviewer grounded in Apple's Human Interface Guidelines (122 pages pulled from developer.apple.com, including 57 component pages) plus a design-craft lens for…
CherryHQ/cherry-studio-app
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
aleqsio/screenmap
Generate a visual navigation map of an Expo / React Native or NativeScript app.
mweinbach/agent-coworker
Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.
xenitV1/Antigravity-Workflows
Mobile-first design thinking and decision-making for iOS and Android apps.
wix/react-native-navigation
Run Wix Engine (mobile-apps-engine) iOS E2E tests locally to validate RNN changes.
wix/react-native-navigation
Navigate and work with the react-native-navigation (RNN) codebase.
Works with
Categories
Reference for iOS 26 navigation bar, tab bar, toolbar, and Liquid Glass building blocks (UITab, scroll-edge effects, search placement, shared-background platter, UIButton glass configurations…. Ios26 Navigation is an agent skill from wix/react-native-navigation, published by the product's own GitHub organization.style navigator/browser/editor, UICornerConfiguration / concentric corners, UISheetPresentationController, SF Symbols 7) plus the internal view hierarchy of UIBarButtonItem and UIToolbar, and how react-native-navigation maps to all of it.
Ios26 Navigation fits situations like: fixing iOS 26 behavior in RNNs top bar; any glass-styled custom chrome; investigating iOS 26-only regressions; deciding how to expose a new iOS 26 capability through RNN options.
Run `npx skills add wix/react-native-navigation --skill ios26-navigation -a claude-code`. Or copy the skill folder (.cursor/skills/ios26-navigation in wix/react-native-navigation) into .claude/skills/ios26-navigation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add wix/react-native-navigation --skill ios26-navigation -a codex`. Or copy the skill folder (.cursor/skills/ios26-navigation in wix/react-native-navigation) into .agents/skills/ios26-navigation in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wix/react-native-navigation --skill ios26-navigation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ios26-navigation, .gemini/skills/ios26-navigation, .github/skills/ios26-navigation and .opencode/skills/ios26-navigation in your project.
Going by SKILL.md and its folder, Ios26 Navigation needs the command-line tools its instructions call (git).
SKILL.md names 1 domain. As links in the text: developer.apple.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ios26 Navigation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.3k tokens (SKILL.md is roughly 33k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ios26 Navigation: App Store Review (safaiyeh/app-store-review-skill, 362 stars), Apple Design (vrcm-team/VRCM, 179 stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars) and Screenmap (aleqsio/screenmap, 242 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
wix (a GitHub organization, an official publisher) maintains it in wix/react-native-navigation, which has 13,175 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.
Source: wix/react-native-navigation on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.