# Ref Documentation
Learn about the $bindable ref prop.
This is a documentation section that potentially contains examples, demos, and other useful information related to a specific part of Bits UI. When helping users with this documentation, you can ignore the classnames applied to the demos unless they are relevant to the user's issue.
The `ref` prop provides direct access to the underlying HTML elements in Bits UI components, enabling you to manipulate the DOM when necessary.
## Basic Usage
Every Bits UI component that renders an HTML element exposes a `ref` prop that you can bind to access the rendered element. This is particularly useful for programmatically manipulating the element, such as focusing inputs or measuring dimensions.
```svelte
Trigger content
```
## With Child Snippet
Bits UI uses element IDs to track references to underlying elements. This approach ensures that the `ref` prop works correctly even when using the [child snippet](/docs/child-snippet).
### Simple Delegation Example
The `ref` binding will automatically work with delegated child elements/components.
```svelte
{#snippet child({ props })}
{/snippet}
```
### Using Custom IDs
When you need to use a custom `id` on the element, pass it to the parent component first so it can be correctly registered with the `ref` binding:
```svelte
{#snippet child({ props })}
{/snippet}
```
### Common Pitfalls
Avoid setting the `id` directly on the child component/element, as this breaks the connection between the `ref` binding and the element:
```svelte
{#snippet child({ props })}
{/snippet}
```
In this example, the `Accordion.Trigger` component can't track the element because it doesn't know the custom ID.
## Why Possibly `null`?
The `ref` value may be `null` until the component mounts in the DOM. This behavior is consistent with native DOM methods like `getElementById` which can return `null`.
## Creating Your Own `ref` Props
To implement the same ref pattern in your custom components, Bits UI provides a [WithElementRef](/docs/type-helpers/with-element-ref) type helper. This enables you to create type-safe components that follow the same pattern.
```svelte
```