import { Meta } from '@storybook/blocks'; # Migration from 1.0 to 2.0 Version 2 of the Amazon Chime React Component Library makes a small number of interface changes, as well as removing some deprecated interfaces. ### IMPORTANT - Version 2 of the library also requires a dependency to version 2.4.1 or higher of the amazon-chime-sdk-js. In many cases you should not need to adjust your application code at all. This will be the case if: - You do not use the `ChatBubble` component or the `ChatBubbleContainer` component. - You do not use the `Roster` component. - You do not use the `Textarea` component. - You do not use the `NavBarItem` component. - You do not directly use any APIs from the Amazon Chime SDK. If you do, you should read this migration guide (https://aws.github.io/amazon-chime-sdk-js/modules/migrationto_2_0.html). If you do, read on. ## Installation Installation involves adjusting your package.json to depend on version 2.x.x and its peer dependency amazon-chime-sdk-js ``` npm uninstall amazon-chime-sdk-js npm install --save amazon-chime-sdk-component-library-react@2 amazon-chime-sdk-js@2 ``` ## What's New - Updated interface for `ChatBubble` component. - Using `forwardRef` in `ChatBubbleContainer` component. - Using `forwardRef` in `Textarea` component. - New `useDevicePermissionStatus` hook exported. - A callback parameter has been added to `realtimeUnsubscribeFromVolumeIndicator` hook. - Add click handler and image preview to `MessageAttachment` component. - Add optional `badge` prop to icon `Button`. - Removed `popover` and `isSelected` optional props from `` component in favor of `children` and `selected` respectively. ### ChatBubble design change The `ChatBubble` component no longer accepts a content prop, which was previously confined to type string. Now the `ChatBubble` component renders whatever is passed as its `children` prop. This allows for more flexible implementations beyond `string` type. If your code looks like this: ```jsx ``` change it to this: ```jsx Hello ``` ### DevicePermissionStatus type change The library now strictly enforces the type of device permission status from `string` to `DevicePermissionStatus` enum which is now exported from the library. If your code looks like this: ```jsx const [permission, setPermission] = useState(''); ``` change it to this: ```jsx const [permission, setPermission] = useState( DevicePermissionStatus.UNSET ); ``` ### IconButton design change The IconButton now has its’ own positioning context to accommodate the `badge` prop. This might mean that any absolute positioning for an IconButton would need to be updated, or you can use an element to wrap the IconButton, and use that element to create another positioning context. If your code looks like this: ```jsx