# Identifiers (ids)
> ` > draggableId` and ` > droppableId`
A `` and a `` have an id. These are `draggableId` and `droppableId` respectively.
## String
We expect an id to be a `string`
```js
type Id = string;
type DroppableId = Id;
type DraggableId = Id;
```
> More information: [types guide](/docs/guides/types.md)
## Ids must be unique
A id must uniquely identify a `` or `` within a ``. So if you have multiple connected lists, each `` needs to have a unique id and each `` needs to have a unique id, even if the item is in a different list.
The id must also be unique even if the `type` argument on the `` is different.
## Ids must be a string
Right now it is important that all `Id`'s be strings. `rbd` will throw an error if an `Id` is not a string.
## Avoid reusing ids
For simplicity, it is best to avoid changing a `draggableId` or `droppableId` when a reorder occurs. The safest option is to associate an id with an piece of data and do not update the id between reorders.
You can change the `draggableId` or `droppableId` at any time except during a drag. Including after reorder. However, to avoid an exception you need to avoid reusing id's between two components. This can happen if you base a draggableId or droppableId on an index.
> **Don't base an id on a index**
### What this looks like internally
#### 1. Update droppable
old droppableId: "droppable-0"
new droppableId: "droppable-1"
👉 delete reference to "droppable-0"
👉 add reference to "droppable-1"
#### 2. Update droppable
old droppableId: "droppable-1" 😢
new droppableId: "droppable-2"
👉 delete reference to "droppable-1" 😢 (will remove reference to our new "droppable-1")
👉 add a reference to "droppable-2"
#### 3. Update droppable
old droppableId: "droppable-1" 💥
new droppableId: "droppable-5"
👉 delete reference to "droppable-1" 💥 (will cause an exception because "droppable-1" is not found)
## Could we change these rules?
Yep!
But we do things this way for simplicity and performance. Feel free to continue this conversation in a Github issue if you feel strongly about it.
[← Back to documentation](/README.md#documentation-)