# Preventing the Use of Tag() Expressions in Vision

**URL:** <https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609>\
**Category:** Ignition\
**Tags:** vision\
**Created:** [August 1, 2026, 12:08am UTC](https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609 "2026-08-01T00:08:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [August 1, 2026, 12:08am UTC](https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609/1 "2026-08-01T00:08:39Z")

</div>

# Introducing Tag Expression Blocker

A free tool is now available on the Ignition Exchange that prevents developers from introducing `tag()` expressions into Vision UI bindings.

[Inductive Automation Exchange: Tag Expression Blocker](https://inductiveautomation.com/exchange/2969/overview)

Although the `tag()` function has a valid use case in expression tags, it is not recommended for other binding types due to its negative impact on performance. Tag Expression Blocker helps teams enforce this best practice by detecting and preventing these bindings before they become part of a project.

![Tag Expression Blocker DEMO](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/d/fd8181a67a9b0fd317df83f5c42807f72c7dde5f.gif)

In addition to blocking the `tag()` function, Tag Expression Blocker removes it from the Expression Binding Editor's function list, helping steer developers toward indirect bindings and other recommended binding practices.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/8/481812392d9d8e56140e2499d47dfd0e85995f38.jpeg)

---

<div class="post-metadata">

**Author:** ![Aradh\_Suresh](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/aradh_suresh/32/86613_2.png) [@Aradh\_Suresh](https://forum.inductiveautomation.com/u/Aradh_Suresh)\
**Post date:** [August 2, 2026, 8:33am UTC](https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609/2 "2026-08-02T08:33:25Z")

</div>

Good tool, and design-time interception is the right place to catch it. By the time it shows up as load you are hunting it across forty windows that were all copied from one.

One thing I would ask about scope. The block lives in the Designer, so it protects the path where someone types it. It does not cover what is already sitting in a project you have inherited, or resources that arrive some other way, copied in from another project or edited on disk. On 8.3 with project resources as files, the same rule reads like something that could also run over the files as a check, so an inherited project can be inventoried and a bad resource can fail before it lands rather than relying on every developer having the module installed.

Does the blocker catch tag() that appears without going through the binding editor, or is Designer-time the intended boundary?

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [August 2, 2026, 8:51am UTC](https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609/3 "2026-08-02T08:51:52Z")

</div>

The scope is intentionally limited to the Vision binding editor and nothing else. It won't modify or break existing bindings, and it won't block project imports or inherited resources that already contain `tag()` expression bindings.

However, if an existing binding contains a `tag()` expression and a developer attempts to edit and save that binding through the Vision binding editor, the _ **okay button** _ will be blocked until the `tag()` expression has been removed or commented out (for example, `//tag('[...')`).

This approach preserves backward compatibility for teams with existing projects while preventing the problem from growing over time. Existing uses remain functional, but any touched binding must be brought into compliance before _ **the edit** _ can be _ **applied** _.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [August 2, 2026, 12:57pm UTC](https://forum.inductiveautomation.com/t/preventing-the-use-of-tag-expressions-in-vision/116609/4 "2026-08-02T12:57:20Z")

</div>

When a project is set to use XML storage mode, the use of `tag()` can be found with `grep` in the gateway filesystem.
