# Dynamically hide a button/object based on a field

**URL:** <https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059>\
**Category:** Product Suggestions\
**Tags:** apps, feature-request\
**Created:** [March 6, 2025, 7:57pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059 "2025-03-06T19:57:44Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bryce.dahle](https://avatars.discourse-cdn.com/v4/letter/b/c68b51/32.png) [@Bryce.dahle](https://community.tulip.co/u/Bryce.dahle)\
**Post date:** [March 6, 2025, 7:57pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/1 "2025-03-06T19:57:44Z")

</div>

I think that the option to dynamically hide a button/text box/drop down/etc. would be incredibly helpful in Tulip development. It would lessen the duplicate steps you would need to have to have a button in the same place as another button, as well as removing having to redo any work you do to one step and needing to add it to the duplicated step.  
The functionality is somewhat there already with the “enabled state” option, it could be reworked to either hide the object entirely or leave it there but not enabled

---

<div class="post-metadata">

**Author:** ![thorsten.langner](https://avatars.discourse-cdn.com/v4/letter/t/4bbf92/32.png) [@thorsten.langner](https://community.tulip.co/u/thorsten.langner)\
**Post date:** [March 7, 2025, 8:23am UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/2 "2025-03-07T08:23:48Z")

</div>

Also find discusstions here:

[Keep custom widget from blocking click when hidden? - Developer - Tulip Community](https://community.tulip.co/t/keep-custom-widget-from-blocking-click-when-hidden/6509)

[Hide button on Steps, click on print button - Support, Troubleshooting, & Help - Tulip Community](https://community.tulip.co/t/hide-button-on-steps-click-on-print-button/2432)

[Hide objects like single select - Support, Troubleshooting, & Help - Tulip Community](https://community.tulip.co/t/hide-objects-like-single-select/2492)

[Hide button in tulip - General - Tulip Community](https://community.tulip.co/t/hide-button-in-tulip/2429)

> [@Enabled State on Inputs](https://community.tulip.co/t/enabled-state-on-inputs/12061/7):
>
> Beside the fact, that it would be very useful, this would also be a step in terms of consistency. All inputs should have this function. It is only a logic to decide if you add the disabled attribute to the html-tag. Since tulip has this logic already built for buttons you should copy it to other inputs as well. And while you do so, also add the same logic for the hidden attribute as well. It is 98% the same thing! I really appreciate, tulips latest updates in those topics. But sometimes I w…

This is a frequently discussed feature. I wonder if there is really no request before.

I totally agree and think it could be relatively easy, since we already have the “disabled” on buttons…

---

<div class="post-metadata">

**Author:** ![koncvaker](https://avatars.discourse-cdn.com/v4/letter/k/51bf81/32.png) [@koncvaker](https://community.tulip.co/u/koncvaker)\
**Post date:** [March 10, 2025, 1:07pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/3 "2025-03-10T13:07:38Z")

</div>

This would also allow to create simple “pop up” windows to confirm deletion for example or better dynamic navigations where user would only see relevant buttons. Great idea, it would help a lot!

---

<div class="post-metadata">

**Author:** ![shep](https://sea2.discourse-cdn.com/flex020/user_avatar/community.tulip.co/shep/32/8231_2.png) [@shep](https://community.tulip.co/u/shep)\
**Post date:** [March 10, 2025, 3:33pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/4 "2025-03-10T15:33:35Z")

</div>

Hi @Bryce.dahle and others who posted here, thanks for surfacing this request. Would you be able to share some screenshots and explanations on what you would like to dynamically show/hide, under what conditions, and what duplicated steps would be eliminated?

More details around the general use cases would be greatly appreciated and help us build the right feature. Thanks!

---

<div class="post-metadata">

**Author:** ![Bryce.dahle](https://avatars.discourse-cdn.com/v4/letter/b/c68b51/32.png) [@Bryce.dahle](https://community.tulip.co/u/Bryce.dahle)\
**Post date:** [March 11, 2025, 1:44pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/5 "2025-03-11T13:44:56Z")

</div>

Below is a snip of the app I’m currently building for our facility. Having the ability to “Stack” the start and finish buttons that match up would make much more room for other options and make the screen feel far less busy. Currently I have the buttons usable based on the “Scan Status” and every time that the status changes, all of the colors of the buttons and their text is changed based on what they should see for that status. (if status is “Not Started” then only Start button is visible and clickable, if “Started” then Finish, Pause, Send to Third-Party, and Remove from Line buttons are clickable and visible, Etc.)

 ![image](https://us1.discourse-cdn.com/flex020/uploads/agilemfg/original/2X/a/a94697439dab3c4909808b030ac015ae3fa00e90.png)

---

<div class="post-metadata">

**Author:** ![thorsten.langner](https://avatars.discourse-cdn.com/v4/letter/t/4bbf92/32.png) [@thorsten.langner](https://community.tulip.co/u/thorsten.langner)\
**Post date:** [March 11, 2025, 4:35pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/6 "2025-03-11T16:35:58Z")

</div>

Hi @shep,

I can’t provide an actual screenshot yet (for several reasons).  
But I made a sketch for one of our use cases:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/agilemfg/original/2X/3/38e14fb5903920d6ff02c227201d75ab48f8f28c.png)

Imagine the blue sections of the step will be always the same. But the green one (execution) is different. This depends on the actual task.  
It can be a `text input`, a `number input`, multiple `number inputs`, a `checkbox` or any combination of these…

It is really pain to copy this whole step 10 times to provide a whole step for each scenario.  
This also results in a lot of maintenance ( all triggers in all tables etc., design changes, …).

You could simply hide and unhide the inputs for each task (and they can overlap, if they will never appear together)…

* * *

Another use case is to provide a different Button, depended on the logged in user or a previous selection. This button can have the correct label for where it is navigating to. (You can’t change Button descriptions.)

* * *

Third Use Case:  
Sometimes the space is limited. You could overlap widgets, that are meant to be used one after the other. After the usage of one, it can be hidden and the next one can appear. You could Populate inputs with next and previous buttons on one step, where you don’t need to worry about step level triggers to fire again.

* * *

You can switch between hardcoded text widgets, without managing variables to write texts in between them.

* * *

You can actually build modals, that appear and disappear

* * *

You can build a full screen image in any trigger. Currently you need the image widget, that destroyed the image, because it does not respect its aspect ratio!

* * *

You can build a pop up camera widget (button “`take picture`” unhides a full screen camera widget) without any step navigation (you can place it to still see the context and don’t need to worry about step navigation triggers)…

* * *

You can show and hide Storage locations or manufacturing resources as they actually are (full container, empty container, no container)

* * *

And I’m sure there is tons of more use cases…

---

<div class="post-metadata">

**Author:** ![shep](https://sea2.discourse-cdn.com/flex020/user_avatar/community.tulip.co/shep/32/8231_2.png) [@shep](https://community.tulip.co/u/shep)\
**Post date:** [March 12, 2025, 8:03pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/7 "2025-03-12T20:03:01Z")

</div>

@thorsten.langner @Bryce.dahle thanks so much for providing all this detail around your use cases. Making Apps more dynamic and conditionally based is something we are actively investigating. Our hope is to reduce the redundancy required, such as duplicating steps to achieve the desired behavior. We will keep you posted on this!

---

<div class="post-metadata">

**Author:** ![willis.hance](https://avatars.discourse-cdn.com/v4/letter/w/e495f1/32.png) [@willis.hance](https://community.tulip.co/u/willis.hance)\
**Post date:** [April 14, 2025, 5:36pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/8 "2025-04-14T17:36:58Z")

</div>

This isn’t maybe the most sophisticated example, but I used ASharp-J’s “[Dynamic menus and ‘Single Select’ as buttons](https://community.tulip.co/t/dynamic-menus-and-single-select-as-buttons/11154)” custom widget to build a nested Facility → Product → Process selector to load PDFs, with most of the widget able to be hidden by a button that changes ‘style.display’ to ‘none’

It looks great while hidden, but it creates a dead space underneath it (purple) where you can’t interact with the PDF, and that’s a little confusing. Would be nice to be able to toggle it at the editor level, or shuffle the z-level, or something, to be able to click through to the blocked element. (:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/agilemfg/original/2X/4/4e468bbdb4f9d9bbcfaceacf0ec4c5d8f2afe2df.png)  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/agilemfg/original/2X/d/d5e89f0b18d58d52f3ef68cebf024581126181b5.png)

---

<div class="post-metadata">

**Author:** ![thorsten.langner](https://avatars.discourse-cdn.com/v4/letter/t/4bbf92/32.png) [@thorsten.langner](https://community.tulip.co/u/thorsten.langner)\
**Post date:** [September 3, 2026, 1:58pm UTC](https://community.tulip.co/t/dynamically-hide-a-button-object-based-on-a-field/14059/9 "2026-09-03T13:58:58Z")

</div>

> [@shep](#):
>
> We will keep you posted on this!

@OlgaStroilova do you have any updates on this?
