# Detecting changes in designer

**URL:** <https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430>\
**Category:** Ignition\
**Created:** [March 10, 2026, 10:58pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430 "2026-03-10T22:58:38Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![akivabrookler](https://avatars.discourse-cdn.com/v4/letter/a/41988e/32.png) [@akivabrookler](https://forum.inductiveautomation.com/u/akivabrookler)\
**Post date:** [March 10, 2026, 10:58pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/1 "2026-03-10T22:58:38Z")

</div>

Is there any way to detect whether there are any unsaved changes in my designer? Is that stored anywhere in the gateway or designer files?

---

<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:** [March 10, 2026, 11:15pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/2 "2026-03-10T23:15:18Z")

</div>

From what context do you want to know/why do you want to know?

---

<div class="post-metadata">

**Author:** ![akivabrookler](https://avatars.discourse-cdn.com/v4/letter/a/41988e/32.png) [@akivabrookler](https://forum.inductiveautomation.com/u/akivabrookler)\
**Post date:** [March 11, 2026, 2:16pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/3 "2026-03-11T14:16:13Z")

</div>

I want to know so I can determine whether I need to save the designer before closing it or if It’s safe to exit without closing

---

<div class="post-metadata">

**Author:** ![akivabrookler](https://avatars.discourse-cdn.com/v4/letter/a/41988e/32.png) [@akivabrookler](https://forum.inductiveautomation.com/u/akivabrookler)\
**Post date:** [March 11, 2026, 2:27pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/4 "2026-03-11T14:27:48Z")

</div>

There seems to be some sort of cache at `C:\Users\{USER_NAME}\.ignition`but I am unsure when the various files change and how they correlate to changes in the actual state of the project in the designer. Any advice?

---

<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:** [March 11, 2026, 3:39pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/5 "2026-03-11T15:39:37Z")

</div>

The cache files are irrelevant.  
In theory, you could run a script in the script console that went to the designer's in-memory model of the project, walked through it, and returned whether there were any "dirty" resource nodes - indicating a pending unsaved change.

But...why?  
What's the downside of the existing prompt you get when you try to close the designer?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/5/b5bdc8fb3e3cbba6463fe75572a524c4501333d9.png)

If you _haven't_ changed anything, then an "extra" save will not have any negative consequences. Just hit save and exit each time, if you're concerned?

---

<div class="post-metadata">

**Author:** ![akivabrookler](https://avatars.discourse-cdn.com/v4/letter/a/41988e/32.png) [@akivabrookler](https://forum.inductiveautomation.com/u/akivabrookler)\
**Post date:** [March 11, 2026, 5:36pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/6 "2026-03-11T17:36:12Z")

</div>

> [@paul-griffith](#):
>
> In theory, you could run a script in the script console that went to the designer's in-memory model of the project, walked through it, and returned whether there were any "dirty" resource nodes - indicating a pending unsaved change.

What would such a script look like? What are the relevant functions to read designer memory?

---

<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:** [March 11, 2026, 5:54pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/7 "2026-03-11T17:54:15Z")

</div>

I'm not going to write the script for you, because I think this is a pointless endeavor.

From an instance of `DesignerContext`\[1\], you can ask for the project, which will be an instance of [`DesignerProjectTreeImpl`](https://sdk.inductiveautomation.com/javadoc/ignition81/8.1.52/com/inductiveautomation/ignition/designer/project/DesignerProjectTreeImpl.html).

That's the designer's in memory representation of the project state. After that you're on your own.

* * *

1. search the forum for `IgnitionDesigner`

---

<div class="post-metadata">

**Author:** ![Matthew\_Automation](https://avatars.discourse-cdn.com/v4/letter/m/a4c791/32.png) [@Matthew\_Automation](https://forum.inductiveautomation.com/u/Matthew_Automation)\
**Post date:** [March 11, 2026, 7:58pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/8 "2026-03-11T19:58:33Z")

</div>

Typically, the pages or views that are different than the existing Gateway saved version will be italicized in the project browser. If you want to revert one page, and not another, right click on the italicized view you want to revert and select ‘revert changes’. That page will be reset to the last saved version, and un-italicized. The other pages / views will not be affected or pushed to the Gateway until you save.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 12, 2026, 10:27pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/9 "2026-03-12T22:27:12Z")

</div>

> [@paul-griffith](#):
>
> walked through it, and returned whether there were any "dirty" resource nodes - ind

I presume that the term “dirty” is only loosely related here to whether there are _actual_ _changes_ to the project resources waiting to be saved? Mainly because just op_ening_ a resource and not making any changes to it flags it as needing to be saved. This is a small gripe I have, since these will all be recorded as changes in the audit log and in the resource json, when they were just simply opened and not modified

---

<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:** [March 12, 2026, 10:32pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/10 "2026-03-12T22:32:59Z")

</div>

Whether something gets marked as having changes is ultimately up to the individual 'workspace' - e.g. Vision vs Perspective vs scripting vs named queries. They're all in charge of doing change detection between the last serialized/saved state and whatever is currently in memory, and Vision/Perspective in particular are pretty bad at it. We have some open tickets to improve that.

---

<div class="post-metadata">

**Author:** ![harold.bruulsema](https://avatars.discourse-cdn.com/v4/letter/h/e79b87/32.png) [@harold.bruulsema](https://forum.inductiveautomation.com/u/harold.bruulsema)\
**Post date:** [March 16, 2026, 7:51pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/11 "2026-03-16T19:51:08Z")

</div>

The downside of the existing prompt (whether or not any changes have actually been made) is the risk of discarding real changes made, versus accepting spurious changes that may have been inadvertently made.

In an ideal world, we would work on one thing at a time, without interruptions, and be able to follow a train of thought through to completion.

In (some) environments the reality is significantly different. When I have 3 designers and 5 PLC projects open, simultaneously commissioning 2 new systems, with 3 people lined up at my door waiting to ask questions, carrying on 4 simultaneous conversations (one on radio, one on my desk phone, one on my cellphone, and somebody in my office), chaos rules. It’s not hard to inadvertently make a change when I didn’t intend to.

I have in fact at least once discarded intended changes, and at least once accepted inadvertent changes. I understand this is my responsibility, but this prompt doesn’t _help_. When I test PLC program changes (Rockwell), it tells me which routines have changes, I can think through what I have done to confirm that is what I intended. That _helps_.

---

<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:** [March 16, 2026, 10:09pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/12 "2026-03-16T22:09:01Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/a/cab9b351145bc66e2c6b0216b282728be4cf8f6b.jpeg)  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/f/ffb434ea3079b4e1028fc4bb3492b12421367d5d.png)

Train yourself to use the modified save changes button?

That said, this is an item we've had some previous discussion on:

> [@\[Feature request\] CTRL+S, CTRL+SHIFT+S, Close, Commit changes - Room for improvement](https://forum.inductiveautomation.com/t/feature-request-ctrl-s-ctrl-shift-s-close-commit-changes-room-for-improvement/55701):
>
> Hi, I choose to make a new post to bump this into attention [image] I believe I am not the only one who have been asking myself if I really should answere yes or no to this question. There are several related issues to this I want to bring into attention. If anyone agree, please like or comment and add to this feature request slight_smile 1. CTRL+S (Save All) Current implementation commits all modifications in designer -without any question. This is in my opinion a dangerous functionality…

The problem is whatever we decide, _someone_ is going to complain, and it's generally safer to default to saving everything.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [March 16, 2026, 10:28pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/13 "2026-03-16T22:28:30Z")

</div>

If it becomes a problem, you might want to make your project inheritable (as long as it's not Edge) and work on the inherited version and do any testing there before exporting/sending the changes to the parent project. This would protect your production project from accidental changes and make everything more deliberate.

---

<div class="post-metadata">

**Author:** ![martinmoncada.tree](https://avatars.discourse-cdn.com/v4/letter/m/b9bd4f/32.png) [@martinmoncada.tree](https://forum.inductiveautomation.com/u/martinmoncada.tree)\
**Post date:** [March 18, 2026, 12:57pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/14 "2026-03-18T12:57:09Z")

</div>

This bugs me too about the designer.

The way I found to solve this, is to use git.

In the dev environment just save every time when you exit. Go to git, discard everything you don’t want. Then go to the gateway and reload the project to make ignition load the changes.

If you have the designer opened while doing changes with git you have to ask it to merge changes after reloading in the gateway.

To transfer to prd environment just commit and push in dev and pull in prd. Then ask the prd gateway to reload the projects.

There are great tutorials to work with git in ignition 8.3

Disclaimer:

– Vision changes are almost imposible to review in git.

– If more than one person is working on the same gateway it can easily become a mess

– Ignition does its own internal changes for everything you change, some of those can be discarded, others cannot. I made errors until I learned

– Files can be changed with the designer opened, but it’s easy to generate conflicts. Close the designer beforehand unless you know what you are doing

---

<div class="post-metadata">

**Author:** ![harold.bruulsema](https://avatars.discourse-cdn.com/v4/letter/h/e79b87/32.png) [@harold.bruulsema](https://forum.inductiveautomation.com/u/harold.bruulsema)\
**Post date:** [March 18, 2026, 2:46pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/15 "2026-03-18T14:46:47Z")

</div>

Ah, I was not aware of this Save…. functionality, that helps a lot.

Thanks!

---

<div class="post-metadata">

**Author:** ![Plantformance](https://avatars.discourse-cdn.com/v4/letter/p/b77776/32.png) [@Plantformance](https://forum.inductiveautomation.com/u/Plantformance)\
**Post date:** [September 4, 2026, 2:18pm UTC](https://forum.inductiveautomation.com/t/detecting-changes-in-designer/114430/16 "2026-09-04T14:18:01Z")

</div>

I think there are probably two different use-cases

- Making sure that your are doing the right thing at the right time 🙂 . Not much to say, comments are already great.

- Making sure you detect, identify changes in a very simple and fail-safe way, you may want to take a look there ([Security Auditor module](https://plantformance.com/modules/security-auditor)).
