Skip to content

Releases: ArturKalach/react-native-a11y-order

Release 1.0.0

Choose a tag to compare

@ArturKalach ArturKalach released this 24 May 22:25

1.0.0 (2026-05-25)

iOS Android
a11y_card_ios a11y_card_android

What's Changed

  • New A11y.Card component for accessible cards with interactive children
  • Refactored props types - each component now owns a co-located *.types.ts file
  • Overhauled native iOS and Android layers
  • Comprehensive documentation added
  • Updated example app with Card demo

A11y.Card

New component for the "card with inner buttons" accessibility pattern. A plain Pressable with interactive children breaks VoiceOver by acting as a leaf node. A11y.Card solves this by placing a full-cover overlay first in the accessibility tree (iOS), so VoiceOver focuses the card as a whole while sighted users tap through to inner elements. On Android, TalkBack does not have this limitation so the card acts as a standard Pressable.

<A11y.Card
  accessibility={{ accessibilityLabel: 'Product card', accessibilityRole: 'button' }}
  onPress={handlePress}
>
  <Text>Card title</Text>
  <Button title="Add to cart" onPress={handleAddToCart} />
</A11y.Card>

Key props:

  • accessibility — a11y props routed to the overlay on iOS and the Pressable on Android
  • style — visual style for the inner Pressable
  • containerProps — layout props for the outer container view
  • pressableProps — escape hatch for Pressable-specific props (hitSlop, ripple, etc.)

Props types refactor

Each component now owns a co-located *.types.ts file instead of shared files under src/types/. All *Props types continue to be re-exported from the root react-native-a11y-order entry point — no import changes needed.


Native layer overhaul

iOS

  • Added RNAOA11yCardView — native view backing A11y.Card
  • Introduced shared base classes: RNAOA11yAutoFocusView, RNAOA11yScreenReaderView, RNAOA11yViewGroup, RNAOA11yViewOrder, RNAOA11yGroupChildrenView
  • Removed RNAOA11yGroupView, RNAOA11yUIContainerView, RNAOA11yView (consolidated into base layer)
  • Improved focus ordering reliability and cleaner view manager implementations

Android

  • Added A11yCardViewManager, A11yAutoFocusView, A11yViewOrder, A11yScreenReaderView
  • Removed A11yGroupView, A11yUIContainerView, A11yViewManager (consolidated)
  • Fixed old-architecture code path
  • Cleaner A11yOrderPackage registration

Documentation

Full documentation site added under docs/ covering getting started, per-component API reference, guides, migration notes, and troubleshooting.

Release 0.11.0

Choose a tag to compare

@ArturKalach ArturKalach released this 24 May 22:23

0.11.0 (2026-05-25)

iOS Android
a11y_card_ios a11y_card_android

What's Changed

  • New A11y.Card component for accessible cards with interactive children
  • Refactored props types - each component now owns a co-located *.types.ts file
  • Overhauled native iOS and Android layers
  • Comprehensive documentation added
  • Updated example app with Card demo

A11y.Card

New component for the "card with inner buttons" accessibility pattern. A plain Pressable with interactive children breaks VoiceOver by acting as a leaf node. A11y.Card solves this by placing a full-cover overlay first in the accessibility tree (iOS), so VoiceOver focuses the card as a whole while sighted users tap through to inner elements. On Android, TalkBack does not have this limitation so the card acts as a standard Pressable.

<A11y.Card
  accessibility={{ accessibilityLabel: 'Product card', accessibilityRole: 'button' }}
  onPress={handlePress}
>
  <Text>Card title</Text>
  <Button title="Add to cart" onPress={handleAddToCart} />
</A11y.Card>

Key props:

  • accessibility — a11y props routed to the overlay on iOS and the Pressable on Android
  • style — visual style for the inner Pressable
  • containerProps — layout props for the outer container view
  • pressableProps — escape hatch for Pressable-specific props (hitSlop, ripple, etc.)

Props types refactor

Each component now owns a co-located *.types.ts file instead of shared files under src/types/. All *Props types continue to be re-exported from the root react-native-a11y-order entry point — no import changes needed.


Native layer overhaul

iOS

  • Added RNAOA11yCardView — native view backing A11y.Card
  • Introduced shared base classes: RNAOA11yAutoFocusView, RNAOA11yScreenReaderView, RNAOA11yViewGroup, RNAOA11yViewOrder, RNAOA11yGroupChildrenView
  • Removed RNAOA11yGroupView, RNAOA11yUIContainerView, RNAOA11yView (consolidated into base layer)
  • Improved focus ordering reliability and cleaner view manager implementations

Android

  • Added A11yCardViewManager, A11yAutoFocusView, A11yViewOrder, A11yScreenReaderView
  • Removed A11yGroupView, A11yUIContainerView, A11yViewManager (consolidated)
  • Fixed old-architecture code path
  • Cleaner A11yOrderPackage registration

Documentation

Full documentation site added under docs/ covering getting started, per-component API reference, guides, migration notes, and troubleshooting.

Release 1.0.0-rc

Release 1.0.0-rc Pre-release
Pre-release

Choose a tag to compare

@ArturKalach ArturKalach released this 10 May 11:26
0ba6255

1.0.0-rc (2026-05-10)

iOS Android
a11y_card_ios a11y_card_android

What's Changed

  • New A11y.Card component for accessible cards with interactive children
  • Refactored props types - each component now owns a co-located *.types.ts file
  • Overhauled native iOS and Android layers
  • Comprehensive documentation added
  • Updated example app with Card demo

A11y.Card

New component for the "card with inner buttons" accessibility pattern. A plain Pressable with interactive children breaks VoiceOver by acting as a leaf node. A11y.Card solves this by placing a full-cover overlay first in the accessibility tree (iOS), so VoiceOver focuses the card as a whole while sighted users tap through to inner elements. On Android, TalkBack does not have this limitation so the card acts as a standard Pressable.

<A11y.Card
  accessibility={{ accessibilityLabel: 'Product card', accessibilityRole: 'button' }}
  onPress={handlePress}
>
  <Text>Card title</Text>
  <Button title="Add to cart" onPress={handleAddToCart} />
</A11y.Card>

Key props:

  • accessibility — a11y props routed to the overlay on iOS and the Pressable on Android
  • style — visual style for the inner Pressable
  • containerProps — layout props for the outer container view
  • pressableProps — escape hatch for Pressable-specific props (hitSlop, ripple, etc.)

Props types refactor

Each component now owns a co-located *.types.ts file instead of shared files under src/types/. All *Props types continue to be re-exported from the root react-native-a11y-order entry point — no import changes needed.


Native layer overhaul

iOS

  • Added RNAOA11yCardView — native view backing A11y.Card
  • Introduced shared base classes: RNAOA11yAutoFocusView, RNAOA11yScreenReaderView, RNAOA11yViewGroup, RNAOA11yViewOrder, RNAOA11yGroupChildrenView
  • Removed RNAOA11yGroupView, RNAOA11yUIContainerView, RNAOA11yView (consolidated into base layer)
  • Improved focus ordering reliability and cleaner view manager implementations

Android

  • Added A11yCardViewManager, A11yAutoFocusView, A11yViewOrder, A11yScreenReaderView
  • Removed A11yGroupView, A11yUIContainerView, A11yViewManager (consolidated)
  • Fixed old-architecture code path
  • Cleaner A11yOrderPackage registration

Documentation

Full documentation site added under docs/ covering getting started, per-component API reference, guides, migration notes, and troubleshooting.

Release 0.9.1

Choose a tag to compare

@ArturKalach ArturKalach released this 06 May 17:57

0.9.1 (2026-05-06)

What's Changed

  • Removed hardcoded AGP dependency from android/build.gradle #41

Android Build Fix

Removed a hardcoded AGP 7.2.1 dependency that pulled in libraries with known security vulnerabilities. This was causing build failures in projects that use corporate Maven proxies with vulnerability policies (e.g. Cloudsmith, Nexus).

Upgrade to 0.9.1 — no changes needed on your side.


Workaround if you can't upgrade yet

React Native < 0.71 — add to your root android/build.gradle:

buildscript {
  dependencies {
    classpath "com.android.tools.build:gradle:8.1.4"
  }
}

Special thanks to @jsyrjala for reporting the issue and providing detailed context on the Gradle side.

Release 0.9.0

Choose a tag to compare

@ArturKalach ArturKalach released this 04 May 20:33

0.9.0 (2026-05-04)

iOS Android
ios example android example

What's Changed

  • React Native 0.85.x support
  • A11y.FocusTrap forceLock prop for active focus enforcement on iOS
  • Internal refactor of native iOS and Android layers
  • Updated example app

React Native 0.85.x Support

Updated iOS native layer to support React Native 0.85.x. This ensures VoiceOver focus tracking works correctly with the new default framework build configuration introduced in this version.


Force Lock (iOS)

A11y.FocusTrap on iOS now supports a forceLock prop that actively enforces focus containment — VoiceOver is redirected back into the trap whenever focus escapes. Use it when accessibilityViewIsModal alone is not sufficient to keep focus within the locked area.

<A11y.FocusTrap forceLock>
  ...
</A11y.FocusTrap>

Internal Refactor

Refactored native iOS and Android implementations to improve stability and maintainability.

More Information

iOS

  • Improved focus ordering services reliability
  • More robust focus lock behavior
  • Cleaner view and delegate implementations

Android

  • Better focus order tracking
  • Improved internal utilities
  • Cleaner view implementations

Example App Update

The example application has been refreshed with updated screens and components.

Release 0.8.2

Choose a tag to compare

@ArturKalach ArturKalach released this 10 Mar 10:40

0.8.2 (2026-03-10)

Improved CommonJS support by updating the builder config.

Release 0.8.1

Choose a tag to compare

@ArturKalach ArturKalach released this 10 Mar 10:39

0.8.1 (2026-03-02)

Types updated for improved React v18 and v19 support.

Release 0.8.0

Choose a tag to compare

@ArturKalach ArturKalach released this 26 Feb 21:38

0.8.0 (2026-02-26)

Dependencies Update

The dependency packages have been updated based on the latest version of create-react-native-library, which helps reduce vulnerabilities and improve version support.

image

Package functionality and compatibility have been tested with the following React Native versions:
0.72.17, 0.75.5, 0.83.1, 0.84.0

Release 0.7.2

Choose a tag to compare

@ArturKalach ArturKalach released this 17 Feb 17:44

0.7.2 (2026-02-16)

  • Associated Objects issue on iOS that caused crashes in A11yView has been fixed (10c240c)
  • ScreenReaderDescendantFocusChangedEvent has been added to index.ts for better type import (0cda3a7)

Thanks to @sleepym09 for providing the fix for the issue with iOS.

Release 0.7.1

Choose a tag to compare

@ArturKalach ArturKalach released this 02 Feb 22:07

0.7.1 (2026-02-02)

Fixes:

  • Update the announce module to ensure proper module registration on iOS (d3b83b5)

Many thanks to sleepym09 for highlighting the issue and creating the PR.