---
title: useUser
slug: oms/_UJJ-useuser
docTags: 
createdAt: 2022-11-09T15:26:25.000Z
---

The `useUser` hook returns a series of methods for managing a Shopify customer account. The customer must have an active authentication session (see `useAuth`) for these methods to work.

::::CodeDrawer{title="useUser" isResponseExpanded="false" autoGeneratedAnchorSlug="useuser" legacyHash="nDtj6GtM33bndtuYHwBO3"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '@chordcommerce/gatsby-theme-performance'

const {
  user,
  status,
  createUserAddress,
  loadUser,
  modifyUserAddress,
  modifyUserDefaultAddress,
  removeUserAddress
} = useUser()
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### user

Represents the current user.

**Example:**

::::CodeDrawer{title="user" isResponseExpanded="false" autoGeneratedAnchorSlug="user-1" legacyHash="jaIy40t4ZiAmaNceYxDwI"}
:::CodeblockTabsExamples
```javascript
const { user } = useUser()
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### status

String indicating the status of the user in Redux. This string can be used to determine if the user has been loaded yet, which happens asynchronously after page load.

**Example:**

::::CodeDrawer{title="status" isResponseExpanded="false" autoGeneratedAnchorSlug="status-1" legacyHash="SaCRyODtsvW6rQKYeWNQG"}
:::CodeblockTabsExamples
```javascript
import { useUser, UserStatus } from '@chordcommerce/gatsby-theme-performance'

const { status } = useUser()

if (status === UserStatus.Failed) {
  // the user could not be loaded, probably because there is no valid authentication session
}
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### createUserAddress()

Adds a new address to the Shopify customer's address book.

**Example:**

::::CodeDrawer{title="createUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="createuseraddress-1" legacyHash="3QQQ9A4V2JZ4gHNSPQPxn"}
:::CodeblockTabsExamples
```javascript
const address = {
  address1: '',
  address2: '',
  city: '',
  company: '',
  country: '',
  firstName: '',
  lastName: '',
  phone: '',
  province: '',
  zip: ''
}
const isDefaultAddress = false
await createUserAddress(address, isDefaultAddress)
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### loadUser()

Reloads the current user. This is automatically called on every page load and with every other `useUser` method.

**Example:**

::::CodeDrawer{title="loadUser" isResponseExpanded="false" autoGeneratedAnchorSlug="loaduser-1" legacyHash="yJa3TClnunNR7dQZQjl5S"}
:::CodeblockTabsExamples
```javascript
await loadUser()
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### modifyUserAddress()

Updates an address in the Shopify customer's address book.

**Example:**

::::CodeDrawer{title="modifyUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="modifyuseraddress-1" legacyHash="WA6NQY7Eo6wFlB8JUSDF1"}
:::CodeblockTabsExamples
```javascript
const addressId = '123'
const address = {
  address1: '',
  address2: '',
  city: '',
  company: '',
  country: '',
  firstName: '',
  lastName: '',
  phone: '',
  province: '',
  zip: ''
}
const isDefaultAddress = false
await modifyUserAddress(addressId, address, isDefaultAddress)
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### modifyUserDefaultAddress()

Updates which address is marked as the default address in the Shopify customer's address book.

**Example:**

::::CodeDrawer{title="modifyUserDefaultAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="modifyuserdefaultaddress-1" legacyHash="r1Q5fSheNRWxAiTvxnc-h"}
:::CodeblockTabsExamples
```javascript
const addressId = '123'
await modifyUserDefaultAddress(addressId)
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::

### removeUserAddress()

Removes an address from the Shopify customer's address book.

**Example:**

::::CodeDrawer{title="removeUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="removeuseraddress-1" legacyHash="AbZyboJA9sGmeRvH2ABdE"}
:::CodeblockTabsExamples
```javascript
const addressId = '123'
await removeUserAddress(addressId)
```
:::

:::CodeblockTabsResponses
```javascript
```
:::
::::
