# Modified tags are moved within tag files after any change

**URL:** <https://forum.inductiveautomation.com/t/modified-tags-are-moved-within-tag-files-after-any-change/114461>\
**Category:** Ignition\
**Tags:** ignition83\
**Created:** [March 12, 2026, 12:27pm UTC](https://forum.inductiveautomation.com/t/modified-tags-are-moved-within-tag-files-after-any-change/114461 "2026-03-12T12:27:23Z")\
**Posts on this page:** 1\
**Showing post:** 2

<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:** [March 12, 2026, 12:38pm UTC](https://forum.inductiveautomation.com/t/modified-tags-are-moved-within-tag-files-after-any-change/114461/2 "2026-03-12T12:38:26Z")

</div>

Longstanding gripe. JSON is not specified to use ordering of any kind, so all of the common tooling produces non-deterministic output.  
☹

More here:

> [@Script JSON Format](https://forum.inductiveautomation.com/t/script-json-format/90434/5):
>
> I do think IA should route all JSONification through instances of TreeMap with a human- and source-control-friendly case-sensitive [alphanumeric comparator](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.38/com/inductiveautomation/ignition/common/util/Comparators.html) for the keys. Perhaps with an performance exception for payloads going straight to the browser. Especially including [system.util.jsonEncode()](https://www.docs.inductiveautomation.com/docs/8.1/appendix/scripting-functions/system-util/system-util-jsonEncode). So that all json that ends up on disk (including json from document or other tags) is deterministic. The JSON spec may not care about key order, but lots of other dependent functionality does.

and here:

> [@Json Diffing Discussion](https://forum.inductiveautomation.com/t/json-diffing-discussion/96800):
>
> FWIW, I made a script recently that achieves this with JSON tag exports, and could be tweaked for many other cases (currently uses the "name" key for sorting lists of dictionaries). # Functions designed to be called via objectScript() in UI expressions. from java.io import File from java.lang import System, Throwable from java.util import TreeMap from com.inductiveautomation.ignition.common.util import Comparators logger = system.util.getLogger(system.util.getProjectName() + '.' + system.ref…

JSON is not compatible with source control/diff without deliberate effort, that IA is failing at.

---

_[View the full topic](https://forum.inductiveautomation.com/t/modified-tags-are-moved-within-tag-files-after-any-change/114461)._
