What's Changed
Minor release. It comes with many improvements & bug fixes. Notably:
bottomAccessorysupport for native tabs on iOS,- special effects support for tabs on Android,
- support for synchronous state updates (behind a feature flag),
- quite few more.
⚠️ This release also removes long-deprecated native-stack v5 code from the repository.
See the full change set below 👇🏻
Improvements
- feat: Remove native-stack v5 from screens repo by @kmichalikk in #3433
- feat(iOS, Tabs): add bottomAccessory support by @kligarski in #3288
- feat(Android, Tabs): Add special effects to bottom tabs on Android by @Ubax in #3337
- feat(iOS, SplitView): Add support for primaryBackgroundStyle prop by @t0maboro in #3320
- feat(Stack): Add support for synchronous state updates on fabric for native stack by @t0maboro in #3282
- feat(iOS, SafeAreaView): use synchronous state updates by @kligarski in #3335
- feat(iOS, SplitView): Add an option for changing number of columns dynamically by @t0maboro in #3339
- feat(iOS, SplitView): Migrate to new invalidate method by @t0maboro in #3364
- feat(iOS, Tabs): add prop to hide the tab bar by @kligarski in #3343
- fix(iOS, Stack): handle icon rendering modes for bar button items by @kligarski in #3347
- feat(Android, Tabs): add prop to hide the tab bar by @kligarski in #3344
- feat: Bring back gestureResponseDistance on iOS 26 by @kmichalikk in #3353
- feat(iOS, Stack): Add controller invalidating to new stack impl by @t0maboro in #3219
- feat: add
snapshotAfterUpdatesproperty toRNSScreenViewby @bartlomiejbloniarz in #3296 - feat(iOS, Stack, Tabs, experimental): add prop to override user interface style by @kligarski in #3342
- fix(Android, Stack): Moving formsheet above keyboard by @t0maboro in #3248
- chore: Update installation steps in docs by @t0maboro in #3391
- feat(iOS): add missing features to bar button items by @Ubax in #3396
- feat(Tabs): special effects refactor by @kligarski in #3440
- chore: bump FabricExample & lib to react-native@0.83 by @t0maboro in #3456
- refactor: Remove codegen-related deep imports by @t0maboro in #3458
Bug fixes
- fix(iOS, SplitView): Track visible columns from delegate by @t0maboro in #3319
- fix(iOS): Verify that ScrollView gesture hasn't begun when triggering pan gesture by @kmichalikk in #3271
- fix(iOS, SplitView): Remove tracking presentation layer in favor of sync state update by @t0maboro in #3285
- fix(iOS, Tabs): fix problems with dynamically changing title, icon, systemItem by @kligarski in #3333
- fix(iOS, FormSheet): Always use absolute positioning by @t0maboro in #3351
- fix(Android, Stack): Make MountingCoordinator vector access thread safe by @t0maboro in #3363
- fix(iOS, Stack): Prevent overriding invalidate callback on Fabric by @t0maboro in #3359
- fix: RCTViewComponentViewProtocol -> RCTComponentViewProtocol by @t0maboro in #3365
- fix(iOS, FullWindowOverlay): Show overlay when app returns from background by @t0maboro in #3369
- fix(iOS): load header items icons synchronously when feasible by @johankasperi in #3355
- fix(JS, Stack): consider default value for
stackPresentationandheaderConfig.hiddeninScreenStackItemby @kligarski in #3374 - fix(iOS, FullWindowOverlay): Move show logic to didMoveToWindow by @t0maboro in #3379
- fix(Android, Stack): Fix flex-end positioning in formSheet by @t0maboro in #3346
- fix: circular import in
src/types.tsxby @kligarski in #3394 - fix: Disable interactions on minimal required subroot by @kmichalikk in #3311
- fix(Android, SAV+Tabs+Stack v4): fix CustomToolbar's insets handling to use insets received from ancestor views by @kligarski in #3240
- fix(iOS): fix header height in modal, add TestHeaderHeight by @kligarski in #3393
- fix(Android, Stack): Fix FormSheet - SafeAreaView integration by @t0maboro in #3336
- fix(Android, Tabs): Fix tabs icons loading in release mode by @t0maboro in #3413
- fix(Android, Stack): incorrect header height values by @kligarski in #3402
- fix(iOS, Tabs): remove incorrect warning on
noneenvironment in Bottom Accessory by @kligarski in #3416 - fix(iOS): Distinguish horizontal and vertical scroll in gesture failure requirements by @kmichalikk in #3420
- fix(Android): layout shift on orientation change by @kmichalikk in #3295
- fix(iOS, Tabs): tab screen height when tabs are rendered dynamically by @kligarski in #3425
- fix(iOS, Stack): delay setting navigation bar visibility to mitigate bar button bug on iOS 26 by @kligarski in #3422
- fix(Android, Stack): Constraint FormSheet height by top inset by @t0maboro in #3404
- fix(SplitView, Android & Web): move split view warnings to components by @Ubax in #3431
- fix(examples): Stop triggering CPU intensive tasks in top level scope in example apps by @kkafar in #3432
- chore: fix imports in bottom accessory by @kligarski in #3439
- fix(iOS, FormSheet): Add fallback for searching ScrollView which is inside SAV by @t0maboro in #3479
- fix(Android, FormSheet): Fix pressables with TextInput for Fabric by @t0maboro in #3435
- fix(JS, stack): Fix push fail after 3rd screen in JS stack by @kmichalikk in #3450
- fix(Android, Stack, Fabric): Fix jumping content in nested stack for Fabric by @t0maboro in #3442
- fix(iOS, Tabs):
overrideScrollViewContentInsetAdjustmentBehaviorin managed tabs by @kligarski in #3441 - fix(iOS, Stack, Fabric): Pressable
hitSlopin header subviews on Fabric by @kligarski in #3446 - fix(iOS 26, Stack): center view inside bar button item by @kligarski in #3449
- fix(iOS, Tabs): bottom accessory opacity on appearance change by @kligarski in #3467
- fix(iOS, FormSheet): Allow handling dynamic content size in FormSheet since 0.82 with synchronous updates enabled by @t0maboro in #3454
- fix(iOS, Stack): Fix enum conversion for landscape right by @t0maboro in #3474
- fix(Android): crash on hot reload when FabricUIManagerBinding is null by @kimchi-developer in #3475
Misc
- chore: Add a note about the known issue with blur for SplitView by @t0maboro in #3330
- chore: Add BottomTabsOrientationTest by @kmichalikk in #3338
- chore: Bump material components version by @kmichalikk in #3455
- chore: Remove doubled "when" from types.tsx and GUIDE_FOR_LIBRARY_AUTHORS by @kmichalikk in #3341
- refactor(iOS, SplitView): Remove old workaround for navigation headers by @t0maboro in #3349
- test: Refactor Test3212, add option to set config from scroll view screen by @kmichalikk in #3284
- chore: Upgrade RN to 0.82.1 by @t0maboro in #3360
- chore: Upgrade react-navigation to 3d1e4effe by @t0maboro in #3361
- chore(e2e): detox config general cleanup and ios management by @KrzysztofWojnar in #3412
- chore: restore
react-navigationsubmodule to 7.x branch by @kligarski in #3370 - chore: bump
@react-native-community/clito 20.0.0 by @kligarski in #3373 - refactor(iOS): extract common image loading code to separate class by @kligarski in #3371
- chore: Bump detox by @t0maboro in #3380
- chore(iOS): Add multi-scene support for example apps by @t0maboro in #3375
- chore(deps): bump @react-native-community/cli from 5.0.1 to 20.0.0 by @dependabot[bot] in #3376
- chore(iOS): bump min deployment target to 15.1 for example apps by @kligarski in #3383
- chore(Android): remove outdated versioned code by @kligarski in #3382
- chore: remove not necessary workaround for ScrollView from RN 76 by @WoLewicki in #2350
- chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /docs by @dependabot[bot] in #3406
- refactor(Android, Stack): Extract detents to separate class by @t0maboro in #3409
- chore: update docs for
scrollEdgeEffects,blurEffectandscrollEdgeEffectsinteraction by @kligarski in #3407 - chore: change default bottom tabs implementation to managed by @kligarski in #3408
- chore(deps): bump js-yaml from 3.14.1 to 3.14.2 in /Example by @dependabot[bot] in #3423
- chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /docs by @dependabot[bot] in #3428
- chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /TVOSExample by @dependabot[bot] in #3429
- chore(android): Remove fixOldArchJavaForRN77Compat by @kmichalikk in #3424
- chore: Add missing #pragma once in header files by @kmichalikk in #3421
- chore(e2e): detox basic config android by @KrzysztofWojnar in #3426
- chore(example): use direct import from screens instead of repository-relative by @kkafar in #3434
- chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /docs by @dependabot[bot] in #3444
- chore(deps): bump express from 4.21.0 to 4.22.1 in /docs by @dependabot[bot] in #3445
- chore: remove unnecessary override of
prepareForRecyclemethod in header subview by @kkafar in #3447 - chore: remove CMake code with support for RN 0.75 or older by @kkafar in #3448
- refactor: Rename style to absoluteWithNoBottom in ScreenStackItem by @t0maboro in #3461
- chore: Update docs about dropping the support for RN 0.79 since 4.19.0 by @t0maboro in #3457
- chore: Sync react-navigation with 7.x branch by @t0maboro in #3468
- chore: Upgrade TVOSExample to RN 0.81 by @t0maboro in #3465
- release: 4.19.0 by @kkafar in #3481
New Contributors
- @bartlomiejbloniarz made their first contribution in #3296
- @KrzysztofWojnar made their first contribution in #3412
- @kimchi-developer made their first contribution in #3475
Full Changelog: 4.18.0...4.19.0