rollbar-react icon indicating copy to clipboard operation
rollbar-react copied to clipboard

TypeScript types don't match implementation

Open paavohuhtala opened this issue 3 years ago • 4 comments

Currently, the TypeScript type definitions do not match the documentation nor the implementation. Here are the problems I've encountered so far in one afternoon of integrating the library:

  • <ErrorBoundary> has a fallbackUI prop, which is a ReactNode (the result of rendering a component) in types, but is assumed to be a function (a functional component) in the implementation. The correct type would most likely be React.ComponentType<{}> or React.FC<{}>.
  • historyContext has multiple issues:
    • The documentation (and implementation) claims to support both History v4 and History v5, but the types are only compatible with V4.
    • filter and formatter functions receive location as a string, but it is in fact a Location object, not a string.
    • filter and formatter are documented as optional, but they are required arguments in types.
    • Furthermore, the types are not correct even for V4:
      • The function returns a callback which receives an object consisting of action and filter, but this seems like a copy-paste mistake and the correct signature is probably (location: Location, action: string).
      • You need to define your own Location type, unless you want to take a dependency on history.

paavohuhtala avatar Aug 25 '22 13:08 paavohuhtala

+1 for the fallbackUI problem. What would be a good workaround to fix that for now?

gtupak avatar Oct 19 '22 19:10 gtupak

As a workaround, I followed this guide to overriding the type definitions (in reality inserting new type definitions that have higher precedence).

Versions:

  • @rollbar/react: ^0.11.1
  • @types/node: ^16.8.4
  • @types/react: ^18.0.25
  • rollbar: ^2.25.2
  • react: ^18.2.0
  • node: ^16.17.0
  • typescript: ^4.8.3

dwightgunning avatar Dec 02 '22 12:12 dwightgunning

Any updates about this issue? tnx

ziperfal123 avatar Feb 15 '23 15:02 ziperfal123

+1 I'm itching for a fix. For context, this issue occurs with React 18 and not React 17

walkingbrad avatar Mar 04 '23 16:03 walkingbrad