Skip to main content

Introduction to react-bootstrap-table-ng (2026-01-15)

· 3 min read
Jeff Zhou
Developer & Maintainer

react-bootstrap-table-ng is a maintenance fork of react-bootstrap-table-nextgen / npm package react-bootstrap-table-nextgen, which is a fork of react-bootstrap-table2 / npm package react-bootstrap-table-next created by Allen Fang.

The goal of this fork is to provide stable version to support React 18+ and Bootstrap 4+ with modern React 18+ features such as hooks, context, etc.

Planned changes

on top of [react-bootstrap-table-next] and [react-bootstrap-table-nextgen]

Core Features/Enhancements

  • Support React 18 and React 19
  • Support Bootstrap 3.x up to 3.4.1, Bootstrap 4.x up to 4.6.2, and Bootstrap 5.x up to 5.3.8
  • Convert all test cases from Enzyme to React Testing Library (RTL), remove Enzyme related dependencies
  • Migrate PropTypes to typescript types due to PropTypes deprecation in React 19
  • Add column resize functionality
  • Add cell expand functionality
  • Replace all class components with functional components
  • Utilize modern React features such as hooks and context API
  • Add WCAG 2.1 AA support (accessibility)
  • Update most dependencies to their latest stable versions to fix vulnerabilities

Development environment

  • Upgrade Storybook to 10.x
  • Upgrade Yarn to 4.x
  • Upgrade Docusaurus to 3.x
  • Add accessibility testing

Release Notes

https://github.com/jeff-k-zhou/react-bootstrap-table-ng/releases

React and Bootstrap compatibility

See the below table on which version of react-bootstrap-table-ng you should be using in your project.

react-bootstrap-table-ngCompatible react/bootstrap/react-bootstrap versions
reactbootstrapreact-bootstrap
5.19.x18.x - 19.x5.x2.x
4.x1.x
3.x0.33.x
4.19.x18.x - 19.x4.x1.x
3.x0.33.x
4.18.x18.x4.x1.x
3.x0.33.x

Accessibility Milestone Release (2026-05-18)

· 6 min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.6

Overview

This release marks a significant milestone in our commitment to inclusive design. We have implemented comprehensive accessibility improvements across all react-bootstrap-table-ng packages, ensuring full compliance with WCAG 2.1 (Level AA) standards.

Changelog

Accessibility Features

  • Automated A11y Guardrails: Integrated jest-axe for unit testing and axe-playwright into our Storybook test runner. Every component and interactive state is now automatically scanned for accessibility violations during development and CI.
  • Enhanced Keyboard Navigation:
    • Implemented focus management for Row Expansion. Users can now toggle row visibility using Space or Enter.
    • Added :focus support for Cell Expansion. Truncated content is now visible when tabbing through the table.
    • Standardized tabIndex management to ensure a logical and predictable focus flow.
  • Improved Screen Reader Support:
    • Added descriptive aria-labels to all pagination controls (First, Prev, Next, Last).
    • Implemented aria-expanded and aria-current state communication for rows and pagination items.
    • Added visually hidden (sr-only) labels for selection and expansion columns to provide context without cluttering the UI.
  • Semantic HTML Refactor:
    • Transitioned interactive elements from container <td>/<th> tags to nested focusable elements (button, input).
    • Fixed "empty table header" violations by ensuring every header cell has an accessible name.

Bug Fixes

  • Fixed a "double tab stop" issue in the row selection column.
  • Resolved a regression in radio-button selection where already-selected items wouldn't trigger state updates on re-click.
  • Fixed module resolution issues in the test suite that occurred when running tests without a full production build.

How to Verify

We encourage all developers to update to the latest version and verify the improvements.

Accessibility Assessment Report: react-bootstrap-table-ng

This report provides an assessment of the accessibility (a11y) implementations across all core and supplementary packages in the react-bootstrap-table-ng monorepo (excluding the example package). The evaluation is structured around the four WCAG 2.1 Principles: Perceivable, Operable, Understandable, and Robust (POUR).

Note: As a UI component library, maximum compliance is evaluated based on the semantic structure, keyboard event handling, and ARIA state management the library provides. Visual compliance (like color contrast, a Level AA/AAA requirement) depends partly on the user's provided CSS (e.g., Bootstrap).

WCAG 2.1 Compliance Matrix

PackagePerceivableOperableUnderstandableRobustOverall Rating
react-bootstrap-table-ng (Core)AAAAAAAAAA
react-bootstrap-table-ng-paginatorAAAAAAAAAA
react-bootstrap-table-ng-toolkitAAAAAAAAAA
react-bootstrap-table-ng-filterAAAAAAAAAA
react-bootstrap-table-ng-editorAAAAAAAAAA
react-bootstrap-table-ng-overlayAAAAAAAAAA

Breakdown by Package

1. react-bootstrap-table-ng (Core)

  • Perceivable (AA): Meets Level A (1.1.1 Non-text Content) by hiding visual sorting carets (aria-hidden="true") and Level AA (1.3.1 Info and Relationships) by supporting caption elements and aria-label for screen reader context.
  • Operable (AA): Meets Level A (2.1.1 Keyboard) by providing a fully navigable cell grid (tabIndexCell) and focusable resize handlers. Meets Level AA (2.4.7 Focus Visible) by ensuring standard interactive elements retain focus outlines (assuming default CSS).
  • Understandable (AA): Meets Level A (3.2.2 On Input) and AA criteria. It utilizes aria-sort and dynamic aria-expanded attributes to explicitly tell users the active state of data interactions.
  • Robust (AA): Meets Level A (4.1.2 Name, Role, Value). Automated jest-axe tests validate robustness against semantic regressions. The use of aria-live="polite" and aria-atomic="true" on row expansions/sections ensures it meets Level AA (4.1.3 Status Messages).

2. react-bootstrap-table-ng-paginator

  • Perceivable (AA): Satisfies Level AA (1.3.1) by wrapping pagination inside <nav aria-label="...">.
  • Operable (AA): Meets Level A (2.1.1 Keyboard) and Level AA limits. Dropdowns and jump-to-page fields correctly enforce tabIndex={0} or -1 dynamically.
  • Understandable (AA): Achieves Level AA by explicitly using aria-current="page" (a strict WCAG requirement to indicate the current item within a set) alongside clear aria-disabled tracking.
  • Robust (AA): Uses semantic role="listbox" and role="option". Meets Level AA (4.1.3 Status Messages) by utilizing polite live regions for the "Showing rows X to Y of Z" textual updates.

3. react-bootstrap-table-ng-toolkit

  • Perceivable (AA): Satisfies Level A and AA. Features like the global SearchBar use aria-labelledby, and purely visual elements (like modal close icons) use aria-hidden="true".
  • Operable (AA): Meets Level AA. Delete/Insert modals correctly restrict focus layers using tabIndex={-1} and nested role="document" structures, avoiding keyboard traps (2.1.2 No Keyboard Trap - Level A).
  • Understandable (AA): Column visibility toggles utilize aria-pressed="true/false", which cleanly conveys the operation's state context to assistive technologies.
  • Robust (AA): Meets Level AA (4.1.3 Status Messages) by utilizing visually hidden aria-live="polite" regions that announce search updates ("Search applied for: X") and column visibility changes ("Column X toggled").

4. react-bootstrap-table-ng-filter

  • Perceivable (AA): Form inputs satisfy Level A (1.1.1) and Level AA (1.3.5 Identify Input Purpose). Each filter uniquely identifies itself ("Comparison operator for Date filter").
  • Operable (AA): Relies on native interactive elements (select, input type="text/number/date") guaranteeing native keyboard operability (Level A/AA).
  • Understandable (AA): Achieves Level A (3.3.2 Labels or Instructions) natively. Multi-selects define aria-multiselectable="true", allowing users to understand how to interact with the input without trial and error.
  • Robust (AA): Meets Level AA (4.1.3 Status Messages) by incorporating aria-live="polite" status announcements whenever a filter is applied or cleared, ensuring background updates are communicated to assistive technology.

5. react-bootstrap-table-ng-editor

  • Perceivable (AA): Errors and input associations satisfy Level AA semantics.
  • Operable (AA): Cell editing automatically shifts focus directly to the input context and traps keyboard input within the cell until explicitly dismissed or saved (2.1.1 Keyboard).
  • Understandable (AA): Strictly follows Level A (3.3.1 Error Identification). The editor displays error indicators (role="alert") and programmatically links the invalid input to the error description utilizing aria-invalid="true" and aria-describedby="[error-id]".
  • Robust (AA): Meets Level AA (4.1.3 Status Messages). The editor indicator utilizes role="alert" enhanced with explicit aria-live="assertive" and aria-atomic="true" properties to ensure consistent and immediate error announcements.

6. react-bootstrap-table-ng-overlay

  • Perceivable (AA): Satisfies Level AA. Loading spinners are given role="img" and aria-labelledby so screen readers don't skip over the visual feedback.
  • Operable (AA): Clickable overlays fall back to keyboard users by programmatically assigning role="button" and tabIndex={0}.
  • Understandable (AA): Achieves Level AA (3.2.4 Consistent Identification) and Level A (3.3.2 Labels or Instructions). The overlay utilizes the text prop for dynamic status announcements and provides an ariaLabel (or context-aware default) for interactive overlays, ensuring they are consistently identified and labeled.
  • Robust (AA): Directly achieves Level AA (4.1.3 Status Messages) by utilizing aria-busy={active} on the wrapping container while injecting a role="status" live region that communicates background data fetching passively without hijacking keyboard focus.

New Release (2026-04-28)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.5

Changelog

Bug fixes

  • Fixed a redirect issue in Storybook when interacting with custom pagination renderers by ensuring click events are properly prevented.

Features

  • Added Pagination Jump Control feature, allowing users to jump to a specific page by typing the page number.
    • Standardized component naming: PaginationJump and PaginationJumpStandalone.
    • Added showPageJump prop to paginationFactory for easy enablement.
    • Introduced PaginationJumpStandalone for fully custom pagination layouts using PaginationProvider.
  • Added rowIdPrefix prop to BootstrapTable component for customizing row IDs to provide stable identifiers for integration with external libraries. It could be a string or a function that returns a string. The row ID will be tableId-row-key by default. The row ID will be rowIdPrefix-row-key if a string is provided. The row ID will be function(row, index)-row-key if a function is provided.

Improvements

  • Optimized pagination component logic for better performance and reliability.
  • Updated documentation and added new Storybook stories for the pagination jump feature.

New Release (2026-04-20)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.4

Changelog

Bug fixes

  • Fixed findByRole('table') return error when storybook deployed to github website with docusarus

Features

  • Added row insert and delete feature

New Release (2026-04-11)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.3

Changelog

  • Using react 18 features such as hooks
  • Added table id if not specified
  • Converted storybook code with react features
  • Set current page to 1 when do remote filter or search
  • Fixed remote with default filter value didn't do filtering issue
  • Added test case for remote filter with default value
  • Cleanup unnecessary eslints
  • Upgrade yarn and storybook to the latest
  • Added interaction tests into stories
  • Fixed table expose api issues, added console log checks for BasicTable
  • Added checking console log for base table interaction test in storybook
  • Added click on sorting interaction tests
  • Added showing full text when hover ellipsis cell
  • Added stories for cell expand
  • Upgraded storybook to 10.3.3, fixed size-per-page-option redirect issue
  • Added unit test for cell expandable flag
  • Fixed lint errors and warnings

Bug fixes

N/A

Features

  • Cell expand feature. Cell expand will be enabled by default. To disable expand for a column, set column.cellExpandable to false.

Enhancements

N/A

New Release (2026-02-22)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.2

Changelog

Bug fixes

N/A

Features

N/A

Enhancements

  • Column resize will be enabled by default when columnResize is set. To disable resize for a column, set column.resizable to false.

New Release (2026-02-19)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.1

Changelog

Bug fixes

N/A

Features

  • Added column resizable feature.

Enhancements

  • Removed defaultProps for function components (React 19 preparation).

New Release (2026-02-16)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 5.19.0

Changelog

Bug fixes

N/A

Features

N/A

Enhancements

  • Added support for Bootstrap 5.x.

New Release (2026-02-11)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 4.19.2

Changelog

Bug fixes

N/A

Features

N/A

Enhancements

  • Converted PropTypes to TypeScript types.
  • Removed prop-types from dependencies.

New Release (2026-02-10)

· One min read
Jeff Zhou
Developer & Maintainer

Changed Packages

All react-bootstrap-table-ng packages version bump to 4.19.1

Changelog

Bug fixes

  • Fixed infinite loop of forceUpdate on remote filters when using customized pagination.

Features

N/A

Enhancements

  • Brought in documentation with Docusaurus 3.9.2.
  • Upgraded Storybook to 10.2.7.
  • Added a story for customized Remote filter/pagination/export/column toggle.