# Perspective Property Access Modes

**URL:** <https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [October 29, 2024, 9:53pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927 "2024-10-29T21:53:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [October 29, 2024, 9:53pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/1 "2024-10-29T21:53:55Z")

</div>

Question about property access modes and large datasets on screens.

> **[Perspective Component Properties | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/ignition-modules/perspective/working-with-perspective-components/perspective-component-properties#restricting-property-access)**
>
> Each Perspective component has a unique set of properties that can be set and modified within the Perspective Property Editor. A component property is simply a named variable with a distinct type that affects something about the component's behavior...

Are they keeping data from showing up in the Dom that exists in custom props, if it isnt being rendered into a component?

Use case example:

I create an input that drives a view custom prop, and then a table that is bound to that view custom prop.

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

If I set that views custom prop access mode to `private` and I load 10,000 objects, the view is totally fine. However if it's `public` and I load 10,000 objects, then it functionally seems to be a bit slower.

However I wanted to check that I am following the right path here and not chasing rabbits

Am I understanding the use-case of `private` custom view props correctly?

---

<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:** [October 29, 2024, 10:19pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/2 "2024-10-29T22:19:07Z")

</div>

Private means the frontend has no knowledge of the property, and therefore no synchronization needs to happen between the front and backend - therefore, the frontend is doing less work. There's no mounting to the DOM if it's _just_ a property tree element in custom, but it's still a lot of garbage for JS to churn over.

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [October 29, 2024, 10:23pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/3 "2024-10-29T22:23:52Z")

</div>

So, if I am translating correctly here

Any large view custom props could likely be private, as long as there are no components that are expected to interact with them with pure JS interactions?

Like, in what example would I _not_ want view custom props to be private?

Everything I am testing with them seems to work fine even with them private.

i.e.: two toggle switches bound to `view.custom.example` which is a private boolean.

One of those toggle switches is bidirectional, the other is not. The bidirectional one is changing the state of `view.custom.example` even though it's a JS based action and not a python script?

Edit: The more I have thought about this, the more confused I am. When would someone ever want them to be public unless they were writing browser extensions for Perspective?

---

<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:** [October 29, 2024, 10:31pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/4 "2024-10-29T22:31:34Z")

</div>

There's basically no cases where a custom prop shouldn't be made `private`, and it'll probably eventually be the default state for them. Offline mode _may_ complicate that a little bit, eventually, but yeah, basically, there's no way to interact with custom props on the frontend _outside_ of JS injection or a custom frontend component, so there's no harm in making them private.

---

<div class="post-metadata">

**Author:** ![salbrechtsen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/salbrechtsen/32/18660_2.png) [@salbrechtsen](https://forum.inductiveautomation.com/u/salbrechtsen)\
**Post date:** [April 11, 2025, 10:57pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/5 "2025-04-11T22:57:57Z")

</div>

[I've been discussing this with others](https://forum.inductiveautomation.com/t/page-vs-session-props-security/104595/19) and really thing public custom properties should be an opt in.

Honestly, view parameters seems like they would want to be private or at least protected.

I'm planning to write a script to set all of our custom props to private in the view JSON files on the gateway. Would doing this to view params also be safe as well? I basically only want view params and custom props to be set in our bindings and scripts, never from the browser.

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [April 12, 2025, 12:34am UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/6 "2025-04-12T00:34:20Z")

</div>

> [@salbrechtsen](#):
>
> I'm planning to write a script to set all of our custom props to private in the view JSON files on the gateway. Would doing this to view params also be safe as well? I basically only want view params and custom props to be set in our bindings and scripts, never from the browser.

We actually have a fairly reusable and reliable tool for this that we use for removing unnecessary default parameters from views as well as setting the access modes for any custom properties on a view. I can get this posted tomorrow on a public repo and link it here for sharing purposes to save you time.

---

<div class="post-metadata">

**Author:** ![kgamble](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kgamble/32/8019_2.png) [@kgamble](https://forum.inductiveautomation.com/u/kgamble)\
**Post date:** [April 12, 2025, 6:15pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/7 "2025-04-12T18:15:31Z")

</div>

This script also has utilities for purging default view params unless they start with \_ (that’s how we indicate a persistent default param)

We use this so that in production we can remove view params and the fact they typically evaluate twice on load of every view (once for initial load, once when the params are applied to the embedded view)

In general, combined with some CSS to hide error overlays for the first 0.5s of the time they exist, has made screen loading look _much_ cleaner.

> **[ignition-gateway-utilities/scripts at master ·...](https://github.com/design-group/ignition-gateway-utilities/tree/master/scripts)**
>
> A Collection of Gateway Utility Scripts and functions to streamline development and integration - design-group/ignition-gateway-utilities

---

<div class="post-metadata">

**Author:** ![salbrechtsen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/salbrechtsen/32/18660_2.png) [@salbrechtsen](https://forum.inductiveautomation.com/u/salbrechtsen)\
**Post date:** [April 14, 2025, 3:22pm UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/9 "2025-04-14T15:22:15Z")

</div>

This is very helpful, thank you. I really like how it purges view param values. I will probably modify to set those all to private as well. If I make any changes I think would be useful for others i'll submit a PR

---

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [December 29, 2025, 8:38am UTC](https://forum.inductiveautomation.com/t/perspective-property-access-modes/97927/10 "2025-12-29T08:38:55Z")

</div>

Hi everyone, quick question regarding private settings.

If I have a custom object, is it sufficient to set the object itself as private, or do I need to make the individual properties private as well?

Also, if setting the main object as private is enough, does the same logic apply to multiple nested objects?

Thanks.
