Logic in prototyping - conditional behavior, branching, if/then
To be able to prototype for usability testing and demonstrations there needs to be a bit more intelligence around how experiences are joined up togehter.
If clause example:
If user makes choice a, do x. If user makes choice b, do z. And so on.
When user makes a choice/clicks/fills in a field etc. assign a variable. Then allow designer to use variables in an if-clause to make decision which roots to go down.
Thank you :)
Gabe Lloyd commented
100000000000000% need this.
Being able to set / get variables and branch based on those variables is essential.
Right now I have to duplicate entire flows just to allow a different outcome based on where the user entered into each flow.
All that would be so much easier if I could set a state and branch on whether it's one value or another.
As far as I know, only Axure provide this for a more comprehensive usability testing for multiple scenarios! Adobe need to step up their game! (It has been 4 years since this post and it have never been addressed!)
Kunal Sharma commented
This is really needed for user testing. Seems like I have to move to Axure.
Is there a status on this from the Adobe XD team?
This is the only feature as to why I’m moving to Axure. I need my portfolio to have high fidelity prototypes that behave exactly like the app I’m creating will behave. The big one is “if logged in go here”.
Totally agree: if-component(s)-state-flow
If user selected different states from components on an artboard you can define for each state combination of elements different flows.
Otherwise when you send prototypes, people interact, they go on the next screen, and to the end users looks broke, because they changed and option (let's say a toggle button) that did not reflect their changes.
For example show different user image on forum page artboard based on the artboard it came from.
One more example is to show a link in sidebar in some special artboard based on type of user. If a normal user artboard is prototyped to this special artboard then don't show the link in this special artboard. If an admin artboard is prototyped to this special artboard then show the link in this special artboard.
What will it solve?
- It will solve duplicating artboards based on minor changes.
once the feature feature adding UI field elements is out it would be great if the user can conditionally hide fields based on value entered - like for example if the form inpute value is "apple" then update the cards displayed based on this
This feature has been under review for 4 years since July 12, 2016??? That's a thorough review :)
Arnold Petersen commented
Axure is still the undisputed champion when it comes to creating prototypes with detailed interactions, logic and conditions especially to mimic machine learning or AI. I always keep on going back to Axure despite being clunky and outdated, it's because no other application provide functionality like axure does.
I worked with teams all over the world from start-ups to global enterprises and the amount of tools they use from invition to figma to XD, the list goes on... If one company can combine the power of all the different tools out there, it has to be Adobe, given the financial muscles as well as design applications history, they are in the perfect position to make this happen.
I am not surprise that everybody is asking for such a feature, this will help designer to reduce reliance on multiple apps and stick to Adobe for all their design workflow.
Sam Spicer commented
One of the main things I love about Axure, and still use occasionally, for when complex interaction states need to reflect user input.
Nyhad Boutaoui commented
That would be useful!!
Would be useful for simulating login and login functionality.
For example :
If you are logged in the log out function becomes available and visa versa. At the moment when prototyping and testing log in pages users becomes confused as prototypes don't really function in the way that they would expect .
There is no way to easily simulate this in XD currently without time consuming clunky work arounds.
Agreed. I wound't want a return to Axure level prototyping functionality, just the ability to make a conditional dropdown menu without having to create screens for each variable.
I know Axure gets dinged for being clunky and you can hang yourself with how much power is in it. That said, the logic aspect of Adobe XD is really primitive. Things like conditionals, AND, OR and variables would be absolutely huge and would level up the program substantially. Please add this!
Katastrowl’s comment (below) is right on the money. I think a bridge between advanced prototyping and coding and something that allows the modern “designer” to perform functions like a coder - “bridging” where a stepping off point might occur and branch off into several places is what XD needs. And I love the alluding to Animate and actionscript - though, I believe the talented team on XD might want to think about a “multi-paned” solution across artboards or “tabs” or even “sets” of specific boards where one might point a single multi-choice/function drop off.
User clicks the button and that button - depending on some number of factors jumps user to here or here.
I like the idea of setting variables with some simple input and then those variables auto-populating in a component to allow this kind of execution.
Wouldn’t this make XD that much more powerful? Oh yes.
It’s somewhat clunky currently trying to illustrate more than one scrollable/draggable area. One must create two “sets” of artboards to do something so simple.
Basically to shorten this up and get us faster results: The most crucial thing, XD needs is a kind of sequence capability - for the intended use of XD, what I believe is NOT to have a full working prototype, but be able to display each Component of a Feature as a prototype, it would be sufficient to have the possibility to create SEQUENCES. (A sequence is, shown on an example, if the user hits the same button twice, or multiple times, every time something different happens, different interactions - also the step of a sequence should be capable of being selected as a destination, which would result in different prototype behaviour when the target button/ element is triggered next time)
Think closely, you will see we all can suddenly do A LOT more when we have sequences - no need for If, then, else, calculations etc. right now, of course this would be nice and necessary in the long run, but we would be able to design and display a prototype right now, and RIGHT NOW is what we need.
As ghowarth said: I also need to create like not 30, but hundreds of artboards for especially simple UIs, that have few control elements, because they are obligated by multiple control methods. For the software development process it is needed to split everything anyways, but even the split elements are too much. With sequences I could reduce the work to about 10% or less - that is 90%! faster.
How I came to that solution? - It is already brought up by you ADOBE, you have something similar in "Animate", use that, combine the Frame capability somehow, maybe you can even allow Action Script for XD, so in the next step. However, right now and fast, Sequences would solve the most critical issues in time without too much development on your side.
Bob Glaser commented
A functional dropdown menu object with the capability to navigate to a different artboard (or other actions) based on the choice in the dropdown.
I can currently fake a dropdown, but can't make a selection within it to take a selected action such as navigation or some other trigger.
The capability to customize look and action that has no complete interaction means that in the current product (March 2020) there's no possibility of this extremely common paradigm for IxD and UX flow.
I've had to create 30 artboards just to illustrate iterating through a device setting (thermostat). When the user goes to a menu from any of these artboards and comes back it is impossible to return to the screen they left from without comically creating 30 menus. XD needs the ability to do simple logic like:
onClickBtn = varThermo + 5, where varThermo is simply a text field containing a variable.
This variable could be accessed globally and auto populate other areas of the UI.
or onClickBtn = ifCheckbox goto artboard X else goto artboard Y.
Right now there is such a disconnect between how designers 'design' and how actual apps are built.