# Limitations and Best Practices for Defining Custom View Parameters at the Root Level in Ignition Perspective

**URL:** <https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [November 7, 2025, 12:58pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035 "2025-11-07T12:58:54Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![svatsal77](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@svatsal77](https://forum.inductiveautomation.com/u/svatsal77)\
**Post date:** [November 7, 2025, 12:58pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/1 "2025-11-07T12:58:54Z")

</div>

How many custom parameters can we make on root level of an perspective view?

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [November 7, 2025, 2:37pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/2 "2025-11-07T14:37:07Z")

</div>

I don’t think there is a limit. When you start getting to a large number of parameters, it could be useful to organize them in groups via objects.

---

<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:** [November 7, 2025, 4:47pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/3 "2025-11-07T16:47:08Z")

</div>

There's no limit enforced, but I wouldn't put more than a few dozen, mostly from a maintainability standpoint. Definitely group them into logical "namespaces" using objects. Also mark them all `private`.

---

<div class="post-metadata">

**Author:** ![Samuel\_Sueur](https://avatars.discourse-cdn.com/v4/letter/s/e36b37/32.png) [@Samuel\_Sueur](https://forum.inductiveautomation.com/u/Samuel_Sueur)\
**Post date:** [November 7, 2025, 8:12pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/4 "2025-11-07T20:12:56Z")

</div>

I have to admit I have _ **never** _ really paid attention to the property restriction mode, and I realize that all the properties I have been using are public.

Now that I have read through some posts and the Ignition documentation on this, essentially is there any drawbacks to marking a property “private”, it being a view parameter or a custom property in a view ?

From my point of view and what I think I have understood, there is really no point in ever marking a property as public, unless you specifically want to use the Javascript injection through markdown trick ? Or am I wrong there ?

Thanks in advance!

---

<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:** [November 7, 2025, 8:36pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/5 "2025-11-07T20:36:39Z")

</div>

> [@Samuel\_Sueur](#):
>
> no point in ever marking a property as public

Basically, yes. For any **custom** property at least. It really should have been the default in the property editor.

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [November 7, 2025, 9:06pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/6 "2025-11-07T21:06:24Z")

</div>

I’ve never paid any attention to the Access level of my props, so they’re all public. What is the benefit of making them private? Is it just a security issue, or is there a performance penalty in keeping them public?

---

<div class="post-metadata">

**Author:** ![andrew.budaiev](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andrew.budaiev/32/72921_2.png) [@andrew.budaiev](https://forum.inductiveautomation.com/u/andrew.budaiev)\
**Post date:** [November 7, 2025, 9:08pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/7 "2025-11-07T21:08:19Z")

</div>

> [@Samuel\_Sueur](#):
>
> is there any drawbacks to marking a property “private”, it being a view parameter or a custom property in a view ?

You won’t be able to use them with any Actions other than script because they run in the browser. Am I correct on this one?

---

<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:** [November 7, 2025, 9:08pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/8 "2025-11-07T21:08:43Z")

</div>

Public properties are automatically synchronized to the frontend over the persistent websocket connection we made - which means CPU load on the gateway and client will be raised, memory usage on the client to hold that data, and more traffic over the network. Meanwhile, _literally nothing_ on the frontend can actually interact with those properties outside of module-added components or the aforementioned markdown-component JS injection hack.

I don't know the exact reason we didn't make all custom properties `private` automatically; perhaps optimism at the time about what offline mode would become and how it could make use of them, but at this point in time it's pretty indefensible.

> [@andrew.budaiev](#):
>
> You won’t be able to use them with any Actions other than script because they run in the browser. Am I correct on this one?

While some actions do run "locally" - none of the ones that do have any way to interact with **custom** properties specifically.

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [November 7, 2025, 9:12pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/9 "2025-11-07T21:12:10Z")

</div>

Wow, good to know! I’m gonna start making all my props private then!

---

<div class="post-metadata">

**Author:** ![andrew.budaiev](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/andrew.budaiev/32/72921_2.png) [@andrew.budaiev](https://forum.inductiveautomation.com/u/andrew.budaiev)\
**Post date:** [November 7, 2025, 9:12pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/10 "2025-11-07T21:12:17Z")

</div>

> [@paul-griffith](#):
>
> While some actions do run "locally" - none of the ones that do have any way to interact with **custom** properties specifically.

I just remember passing a private custom property to the Popup Action, and it resulted in undefined.

.

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [November 7, 2025, 9:17pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/11 "2025-11-07T21:17:46Z")

</div>

If I make the root of an object `private`, do I need to bother making the properties within it `private` also? They don’t _appear_ to inherit that attribute, and can still be explicitly set…

---

<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:** [November 7, 2025, 10:09pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/12 "2025-11-07T22:09:26Z")

</div>

Honestly not sure. I would expect setting it at the root to be sufficient as well, but it's been a long time since I looked at the code.

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [November 12, 2025, 8:43pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/13 "2025-11-12T20:43:37Z")

</div>

Now that I’ve started making my custom properties private, I thought I’d mention a couple lessons learned for anyone who stumbles across this thread:

1. If you make view PARAMS private, then changes in the value being passed will not been seen by the view. I made a table column view `rowData` private, and found that the value being rendered by it did not change when the table data changed.

2. If you make a CUSTOM property private, you might have trouble passing it as a parameter to other views. When I tried passing one via an `onClick` Popup Action, it didn’t get passed. However, passing it via a script `system.perspective.openPopup()` _did_ work.

---

<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:** [November 12, 2025, 8:46pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/14 "2025-11-12T20:46:43Z")

</div>

> [@Ryan\_Deardorff](#):
>
> via an `onClick` Popup Action

This action is implemented on the front end, not in the gateway, so naturally would not have access to a private property. Scripted actions always run in the gateway.

---

<div class="post-metadata">

**Author:** ![olivier.cote](https://avatars.discourse-cdn.com/v4/letter/o/e9bcb4/32.png) [@olivier.cote](https://forum.inductiveautomation.com/u/olivier.cote)\
**Post date:** [November 28, 2025, 4:49pm UTC](https://forum.inductiveautomation.com/t/limitations-and-best-practices-for-defining-custom-view-parameters-at-the-root-level-in-ignition-perspective/112035/15 "2025-11-28T16:49:32Z")

</div>

Is there a way you can clarify this point?

I just became aware of this practice. For now, I’m going to make my custom properties private. However, I find it strange that if an object is private, a child of that object could still be public.

How can we test this case?  
Thanks.
