# useCart Provides access to the cart object. ```jsx import {CartProvider, useCart} from '@shopify/hydrogen-react'; export function App() { { console.log('a line is being added'); }} onLineAddComplete={() => { console.log('a line has been added'); }} > ; } function CartComponent() { const {linesAdd, status} = useCart(); const merchandise = {merchandiseId: '{id-here}'}; return (
Cart Status: {status}
); } ``` ```tsx import {CartProvider, useCart} from '@shopify/hydrogen-react'; import type {CartLineInput} from '@shopify/hydrogen-react/storefront-api-types'; export function App() { { console.log('a line is being added'); }} onLineAddComplete={() => { console.log('a line has been added'); }} > ; } function CartComponent() { const {linesAdd, status} = useCart(); const merchandise: CartLineInput = {merchandiseId: '{id-here}'}; return (
Cart Status: {status}
); } ``` ## Props `useCart` hook must be a descendent of a `CartProvider` component. ### UseCartDocs #### Returns: CartWithActionsDocs type UseCartDocs = () => CartWithActionsDocs; ### CartWithActionsDocs ### attributes value: `Attribute[]` The cart's attributes. ### buyerIdentity value: `CartBuyerIdentity` The cart's buyer identity. ### buyerIdentityUpdate value: `(buyerIdenity: CartBuyerIdentityInput) => void` A callback that updates the buyer identity in the cart. Expects the same `buyerIdentity` input that you would provide to the Storefront API's `cartBuyerIdentityUpdate` mutation. ### cartAttributesUpdate value: `(attributes: AttributeInput[]) => void` A callback that updates the cart attributes. Expects the same `attributes` input that you would provide to the Storefront API's `cartAttributesUpdate` mutation. ### cartCreate value: `(cart: CartInput) => void` A callback that creates a cart. Expects the same input you would provide to the Storefront API's `cartCreate` mutation. ### cartFragment value: `string` The fragment used to query the cart object for all queries and mutations. ### cartReady value: `boolean` A boolean indicating if the cart is ready to be interacted with. ### checkoutUrl value: `string` The checkout URL for the cart, if the cart has been created in the Storefront API. ### cost value: `CartCost` The cost for the cart, including the subtotal, total, taxes, and duties. ### discountCodes value: `CartDiscountCode[]` The discount codes applied to the cart. ### discountCodesUpdate value: `(discountCodes: string[]) => void` A callback that updates the cart's discount codes. Expects the same `codes` input that you would provide to the Storefront API's `cartDiscountCodesUpdate` mutation. ### error value: `unknown` If an error occurred on the previous cart action, then `error` will exist and `cart` will be put back into the last valid status it was in. ### id value: `string` The cart's ID if it has been created through the Storefront API. ### lines value: `Array` The cart lines. ### linesAdd value: `(lines: CartLineInput[]) => void` A callback that adds lines to the cart. Expects the same `lines` input that you would provide to the Storefront API's `cartLinesAdd` mutation. If a cart doesn't already exist, then it will create the cart for you. ### linesRemove value: `(lines: string[]) => void` A callback that removes lines from the cart. Expects the same `lines` input that you would provide to the Storefront API's `cartLinesRemove` mutation. Only lines that are included in the `lines` parameter will be in the cart afterwards. ### linesUpdate value: `(lines: CartLineUpdateInput[]) => void` A callback that updates lines in the cart. Expects the same `lines` input that you would provide to the Storefront API's `cartLinesUpdate` mutation. If a line item is not included in the `lines` parameter, it will still exist in the cart and will not be changed. ### note value: `string` The cart's note. ### noteUpdate value: `(note: string) => void` A callback that updates the note in the cart. Expects the same `note` input that you would provide to the Storefront API's `cartNoteUpdate` mutation. ### status value: `CartStatus` The status of the cart. This returns `uninitialized` when the cart is not yet created, `creating` when the cart is being created, `fetching` when an existing cart is being fetched, `updating` when the cart is updating, and `idle` when the cart isn't being created or updated. ### totalQuantity value: `number` The total number of items in the cart, across all lines. If there are no lines, then the value is 0. ## Related - [CartProvider](/api/hydrogen-react/components/CartProvider)