# Why shouldn't I use tag() in an expression

**URL:** <https://forum.inductiveautomation.com/t/why-shouldnt-i-use-tag-in-an-expression/94349>\
**Category:** Ignition\
**Tags:** ignition81, perspective\
**Created:** [August 8, 2024, 2:30pm UTC](https://forum.inductiveautomation.com/t/why-shouldnt-i-use-tag-in-an-expression/94349 "2024-08-08T14:30:13Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Felipe\_CRM](https://avatars.discourse-cdn.com/v4/letter/f/dfb087/32.png) [@Felipe\_CRM](https://forum.inductiveautomation.com/u/Felipe_CRM)\
**Post date:** [August 8, 2024, 2:42pm UTC](https://forum.inductiveautomation.com/t/why-shouldnt-i-use-tag-in-an-expression/94349/2 "2024-08-08T14:42:34Z")

</div>

> [@Help with Tag Expression](https://forum.inductiveautomation.com/t/help-with-tag-expression/93326/12):
>
> Expression bindings are synchronous. They must return a value when executed. The tag() expression function stalls when first called, waiting for a reply to its subscription request. If you scatter tag() expression functions through a bunch of bindings in a commonly-used view, you will have stalls on those views that are the sum of all the stalls in the bindings. Tag bindings don't stall. They simply don't produce any property assignment at all until the subscription answers, and only produc…

> [@Indirect tag in an expression binding?](https://forum.inductiveautomation.com/t/indirect-tag-in-an-expression-binding/92560/7):
>
> There are many other posts like this

Just to get you started down the rabbit hole.

EDIT: Another good reason:

> [@Nesting Not Allowed while using Properties in a Template to turn on a Light](https://forum.inductiveautomation.com/t/nesting-not-allowed-while-using-properties-in-a-template-to-turn-on-a-light/33609/16):
>
> Yes, there is. If the items that comprise your tagpath are updated, even if yielding the same result path, the entire expression containing the tag() function will have to execute. With indirect binding, this doesn't happen. The strings themselves have to be reconstructed every time, even if not changing, slowing down the final expression execution. There are a few cases with computed gateway tags where the tag() expression is the only good way to do indirection, and the dynamic stuff above…

---

_[View the full topic](https://forum.inductiveautomation.com/t/why-shouldnt-i-use-tag-in-an-expression/94349)._
