---
title: useUser
slug: oms/Ey4q-useuser
docTags: 
createdAt: 2022-11-08T14:20:24.000Z
---

The `useUser` hook returns the current user and functions for managing a Shopify customer account. The customer must have an active authentication session (see `useAuth`) for these methods to work.

## Example

::::CodeDrawer{title="useUser" isResponseExpanded="false" autoGeneratedAnchorSlug="useuser" legacyHash="gh1r0SqfccLTruQ4K41K3"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

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

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

## Returns

The `useUser` hook returns an object with these properties:

| Property                   | Description                                                                                                    |
| -------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `user`                     | An object representing the current user.                                                                       |
| `status`                   | A string indicating whether the user's profile is currently being fetched.                                     |
| `createUserAddress`        | A function that adds a new address to the Shopify customer's address book.                                     |
| `loadUser`                 | A function that loads information about the current order's associated user.                                   |
| `modifyUserAddress`        | A function that updates an address in the Shopify customer's address book.                                     |
| `modifyUserDefaultAddress` | A function that updates which address is marked as the default address in the Shopify customer's address book. |
| `removeUserAddress`        | A function that removes an address from the Shopify customer's address book.                                   |

## Functions

### createUserAddress&#x20;

The `createUserAddress` function adds a new address to the Shopify customer's address book.

**Arguments:**

`createUserAddress(address, isDefaultAddress)`

| Argument             | Type    | Description                                                                                                         |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `address`            | Object  | New address.                                                                                                        |
| `address.address1?`  | String  | (Optional) First line of address.                                                                                   |
| `address.address2?`  | String  | (Optional) Second line of address.                                                                                  |
| `address.city?`      | String  | (Optional) City of address.                                                                                         |
| `address.company?`   | String  | (Optional) Company of address.                                                                                      |
| `address.country?`   | String  | (Optional) Country of address.                                                                                      |
| `address.firstName?` | String  | (Optional) First name of address.                                                                                   |
| `address.lastName?`  | String  | (Optional) Last name of address.                                                                                    |
| `address.phone?`     | String  | (Optional) Phone number of address.                                                                                 |
| `address.province?`  | String  | (Optional) Province or state of address.                                                                            |
| `address.zip?`       | String  | (Optional) Zip code of address.                                                                                     |
| `isDefaultAddress?`  | Boolean | (Optional) Boolean indicating whether this address should be the default address for the user. Defaults to `false`. |

**Returns:**

`Promise<void>`: A Promise that resolves when the user address has been added.

**Example:**

::::CodeDrawer{title="createUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="createuseraddress-1" legacyHash="nRfz1KRqHiU8KpdleSl_y"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

const { createUserAddress } = useUser()

const address = {
  address1: '',
  address2: '',
  city: '',
  company: '',
  country: '',
  firstName: '',
  lastName: '',
  phone: '',
  province: '',
  zip: ''
}
const isDefaultAddress = false
await createUserAddress(address, isDefaultAddress)
```
:::

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

### loadUser&#x20;

The `loadUser` function reloads the current user. This is automatically called on every page load and with every other `useUser` method.

**Arguments:**

None.

**Returns:**

`Promise<void>`: A Promise that resolves when the `user` object has been added to Redux.

**Example:**

::::CodeDrawer{title="loadUser" isResponseExpanded="false" autoGeneratedAnchorSlug="loaduser-1" legacyHash="3DKRAla2-OY8fY9PoIXKF"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

const { loadUser } = useUser()
await loadUser()
```
:::

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

### modifyUserAddress&#x20;

The `modifyUserAddress` function updates an address in the Shopify customer's address book.

**Arguments:**

`modifyUserAddress(addressId, address, isDefaultAddress)`

| Argument             | Type    | Description                                                                                                         |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `addressId`          | String  | Address ID.                                                                                                         |
| `address`            | Object  | Modified address.                                                                                                   |
| `address.address1?`  | String  | (Optional) First line of address.                                                                                   |
| `address.address2?`  | String  | (Optional) Second line of address.                                                                                  |
| `address.city?`      | String  | (Optional) City of address.                                                                                         |
| `address.company?`   | String  | (Optional) Company of address.                                                                                      |
| `address.country?`   | String  | (Optional) Country of address.                                                                                      |
| `address.firstName?` | String  | (Optional) First name of address.                                                                                   |
| `address.lastName?`  | String  | (Optional) Last name of address.                                                                                    |
| `address.phone?`     | String  | (Optional) Phone number of address.                                                                                 |
| `address.province?`  | String  | (Optional) Province or state of address.                                                                            |
| `address.zip?`       | String  | (Optional) Zip code of address.                                                                                     |
| `isDefaultAddress?`  | Boolean | (Optional) Boolean indicating whether this address should be the default address for the user. Defaults to `false`. |

**Returns:**

`Promise<void>`: A Promise that resolves when the user address has been modified.

**Example:**

::::CodeDrawer{title="modifyUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="modifyuseraddress-1" legacyHash="27ABl6Pc2xfXJMcYP2wVk"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

const { modifyUserAddress } = useUser()

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&#x20;

The `modifyUserDefaultAddress` function updates which address is marked as the default address in the Shopify customer's address book.

**Arguments:**

`modifyUserDefaultAddress(addressId)`

| Argument    | Type   | Description |
| ----------- | ------ | ----------- |
| `addressId` | String | Address ID. |

**Returns:**

`Promise<void>`: A Promise that resolves when the user address has been modified.

**Example:**

::::CodeDrawer{title="modifyUserDefaultAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="modifyuserdefaultaddress-1" legacyHash="IMr0H6nf2gidD0C4VvXDV"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

const { modifyUserDefaultAddress } = useUser()

const addressId = '123'
await modifyUserDefaultAddress(addressId)
```
:::

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

### removeUserAddress&#x20;

The `removeUserAddress` function removes an address from the Shopify customer's address book.

**Arguments:**

`removeUserAddress(addressId)`

| Argument    | Type   | Description |
| ----------- | ------ | ----------- |
| `addressId` | String | Address ID. |

**Returns:**

`Promise<void>`: A Promise that resolves when the user address has been removed.

**Example:**

::::CodeDrawer{title="removeUserAddress" isResponseExpanded="false" autoGeneratedAnchorSlug="removeuseraddress-1" legacyHash="IZo0L-iPVHLDV2YQH-EFT"}
:::CodeblockTabsExamples
```javascript
import { useUser } from '~/hooks/actions'

const { removeUserAddress } = useUser()

const addressId = '123'
await removeUserAddress(addressId)
```
:::

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