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 :)
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.
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.
John Andrianopoulos commented
I am designing a survey-style page where a user needs to fill out a questionnaire. On a page that has a question with 4 answers, and a "NEXT" button at the bottom to proceed, I would only want the "NEXT" button to remain in an inactive state until the user taps one of the 4 answers.
Current features in XD do not allow this to happen. Conditional behavior is a must.
Can't believe this idea has not seen any progression in nearly 4 years.
Example: when using a 'back' button, it would be great if the prototype knows where you came from so you will be sent back to the correct previous page.
Adam Trabold commented
OH MY GOD this would be incredible. Would avoid so much duplication / multi-link mess when wanting to present prototypes.
Matt Talebi commented
It will be great if we can soon add logic with states.
"IF checkbox1 or checkbox2 or... state is checked THEN action button state change to visible"
Something like this :)
Jerimy Brown commented
We need this for maintaining component states when autoanimating to another artboard as well
Manuel Ryan Espinosa commented
I agree. This would be nice.
Ashleigh Wallbank commented
It would be handy to be able to give an artboard a different state.
At the moment I have a prototype that depending on which artboard you come from a button goes to a different place. This means I have to have multiple copies for the EXACT SAME artboard just to give something a different destination/function.
Having multiple states means I could go from artboard-1 to artboard-2-State-1, and my button would go to artboard-3, and if I went from artboard-4 to artboard-2-State-2 the button would go to artboard-5, not artboard-3.
Like on proto.io
Jonathan Boice commented
The ability to create a true Drag n Drop Interface, or reorganisable elements.
For example create a list the can be move, and allow another item to move above or blew.
This could be part of a new functional overall call "Behavioural Conditionals"
What are Behavioural Conditionals?
Just like you apply swipe left, right up, down or add timer to screen or elements, Behavioural Conditionals. are behaviours that can be applied to elements in the screen, for example it can be moved, or react to sound, to transform between two states based on a variable. a good example might be you design two UI's, one in dark mode and one in light, you can add a Behavioural Conditional, of switching, if ambient light sensor is above or blew a number, or based on time of day.
I strongly believe their is a range os these that make a huge difference, and will set Adobe XD apart from other tools.
Lucian Cicos commented
Facebook Origami has an interesting way of handling this. https://origami.design/tutorials/common-interactions/Adding-Logic.html
This logic added, is a MUST HAVE.
its very hard designing in XD all possible stages without this logic. Just take as example a simple "Account"
User is signed in or not? the design and content are totally different.
Tomasz Czarnecki commented
Please consider adding Conditional Statements in Prototype Mode.
I imagine this function working somehow as shown on image.
When in prototype mode it would be possible to change Simple Boolean values for example by 1st time visiting page (or other action).
When for example Tester visits Login Page once, it would not appear again in Prototyping Session (it changed its Boolean value from Unvisited (false) to Visited (true).
Gonzalo Figueroa commented
This is a need in order to compete with Axure RP or other softwares that allow you to reduce the amount of screens needed just by using variables. We use a lot of complex prototyping and conditions as of today and not having it is blocking us from moving 100% to XD and drop Axure.
Vick Sleiman commented
Conditional logic is a MUST if you want to create more complex prototypes. The existing setup works well for 'Dribbble designs' and very simple apps, but with the use-cases that we're dealing with in our company, it's impossible to create a functioning prototype without variables and conditional logic. We currently use 'Just in Mind', but as Adobe users and followers we would obviously love to switch to an Adobe tool that can do just as much. Fingers crossed something will be included in the next update!
Mahmoud Hijazi commented
Let's try and create a journey trigger, where the user can create different journeys in the prototype section, and trigger them on action e.g. when user reaches this page or when user does this action start this page, or when this journey ends revert to this page. I believe this could open a great door for people who do testing on big projects such as my self where i need to create a big project and test different aspects without having to switch file all the time.
Really really waiting for variables management, to make the user flow easier, with fewer artboards, and expand the possibilities of interaction, with multiple navigations.
In my view, this is the single most valuable feature in any prototyping tool. Without this, I consider XD as just an eye candy tool like so many on the market today.
I would like to be able to apply conditional to an animation.
Example: When you click on certain button, depending on the screen, the action should take a particular screen
Grant Howarth commented
This would be great and hopefully the step needed to stop me having to use Axure for prototypes requiring logic.