# Adding Custom Properties Dynamically

**URL:** <https://forum.inductiveautomation.com/t/adding-custom-properties-dynamically/91502>\
**Category:** Module Development\
**Created:** [June 6, 2024, 5:51pm UTC](https://forum.inductiveautomation.com/t/adding-custom-properties-dynamically/91502 "2024-06-06T17:51:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Asjal\_Ahmad](https://avatars.discourse-cdn.com/v4/letter/a/9e8a1a/32.png) [@Asjal\_Ahmad](https://forum.inductiveautomation.com/u/Asjal_Ahmad)\
**Post date:** [June 6, 2024, 5:51pm UTC](https://forum.inductiveautomation.com/t/adding-custom-properties-dynamically/91502/1 "2024-06-06T17:51:02Z")

</div>

In my client module code, how can I dynamically add custom properties to my component? I know I can use `addProp(...)` in my BeanInfo class, but I do not know how I can add a generated property to the component in the designer. I would also like to keep updating its value in the program.

---

<div class="post-metadata">

**Author:** ![Asjal\_Ahmad](https://avatars.discourse-cdn.com/v4/letter/a/9e8a1a/32.png) [@Asjal\_Ahmad](https://forum.inductiveautomation.com/u/Asjal_Ahmad)\
**Post date:** [June 6, 2024, 6:06pm UTC](https://forum.inductiveautomation.com/t/adding-custom-properties-dynamically/91502/2 "2024-06-06T18:06:45Z")

</div>

I would also like to expose these properties so they can be bound to.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [June 6, 2024, 6:10pm UTC](https://forum.inductiveautomation.com/t/adding-custom-properties-dynamically/91502/3 "2024-06-06T18:10:46Z")

</div>

Assuming Vision, since you said BeanInfo:  
You do this through the `DynamicPropertyProvider` interface:

> **[DynamicPropertyProvider](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.41/com/inductiveautomation/factorypmi/application/binding/DynamicPropertyProvider.html)**
>
> declaration: package: com.inductiveautomation.factorypmi.application.binding, interface: DynamicPropertyProvider

and the extension interface for MutableDynamicPropertyProvider.

If you make your base component extend one of the AbstractVision\* base classes we do this for you:

> **[AbstractVisionComponent](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.41/com/inductiveautomation/vision/api/client/components/model/AbstractVisionComponent.html)**
>
> declaration: package: com.inductiveautomation.vision.api.client.components.model, class: AbstractVisionComponent

> **[AbstractVisionPanel](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.41/com/inductiveautomation/vision/api/client/components/model/AbstractVisionPanel.html)**
>
> declaration: package: com.inductiveautomation.vision.api.client.components.model, class: AbstractVisionPanel

> **[AbstractVisionScrollPane](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.41/com/inductiveautomation/vision/api/client/components/model/AbstractVisionScrollPane.html)**
>
> declaration: package: com.inductiveautomation.vision.api.client.components.model, class: AbstractVisionScrollPane
