In my organization, we have enterprise level Figma or something like that and we use branching.
So, without adding too much info, the situation is:
The design file linked with library file.
And in the design file we have stuff going on.
And then we have branches from the design file.
The scenario I had this week which cost me sleepless nights and two days of headaches, plus additional work on cleaning the mess out:
And yes, I know, I’m partly responsible for that but I will add my conclusion in the end.
So one day it was decided in the team that we need to alter one input in the input component (one variant). I made the change. Unfortunately, forgot to first train on a branch, but I thought “hey, it’s just one input, just adding some element to it” (let’s say it lacked an asterisk to be obligatory as a feature of the component).
I rolled the change to branches and I think I just updated one of the branches as I was specifically needing this change just there (unfortunately, some 5-6 pages of stuff but not like the end of the world). It turned out, my fields with data went corrupt somehow - they defaulted to - not even the basic variant but well, the data was cleansed. (e.g. “Name” turned into “Lorem ipsum”) so theoretically it stayed as a “filled in” type but the content was cleansed.
I panicked. Created a branch for the change in input and - I don’t remember now - whether I rolled back in history or I just remade the old state.
And this is the problematic part I don’t really remember. This is a bit of my fault… but Figma was of no help (see conclusions) here.
I wanted to bring back the initial state, with both files being as in the beginning, the branched file not touched by the change. However, when brought back from history in the original design file, I didn’t know - should I go back in history with the branched file also?
I went back and forth, trying to adjust the right place in history and state of my files.
E.g. it was that I reversed in history and after a second still my files went corrupt. But only some of the inputs! E.g. date (like in calendar) inputs were OK!
I then re-edited the problematic fields so that they take the component from the original file, re-edited the content.
Note: the branched file had some components in other pages too, so they were served as local.
Then I wanted to copy the designs into another branch for some alternative work thread.
And the designs, after pasting (CTRL+C, another page→ CTRL+V), they changed the fields or the fields disappeared! I was fighting with this for some 4-5 hours. Going through fields, checking which ones had to be re-configured. Thankfully, no data apart from some individual ones, was cleansed.
Yesterday afternoon, I was sure it’s OK now but when I checked instances of my internal components (some 3-4 components I created just for the design), it turned out they didn’t have names on their frames and they were not really original components of the instances! Had to go through the instances and bring back (“restore”) the original components.
It was like the changes was not connected with my initial change in the input component! Some other stuff got distorted somehow! And I didn’t change any libraries in the meantime or other local components (local = in the same design file)!
So today morning I come back to work, start Figma and find out those components are like they were before, I mean before restoring the original components! I had to do it once again!
At this point I had the original file with the input file without any changes, brought back from history to the state before anything happened.
Same with the branch files… and I thought it would be good!
And I still had e.g. one component that had some button. And everything copied well into that third file (the one I needed as a copy) and one type of button component didn’t copy! Just had a component group and nothing within it!
Magic! But how?
Generally, it was really hard to track what was happening, why it was happening and at this point I just want everything to be checked and corrected, best half-automatic as neither the manual way was good, nor totally automatic.
I repaired those connections, restored stuff, etc.
And I cleaned Figma cache!
Now, I stopped my work - but I am eager to check the state of it just today in the evening because I am just wondering - what will I see in Figma on Monday?
Now, I am a designer with over 20 years of experience. I started with CorelDRAW. Wait. I started with Deluxe Paint IV on Amiga! And there was Xara, and Adobe stuff, and PaintShopPro, etc. Adobe XD! Just fiddled with Sketch (I’m not a Mac user). Also, like mentioned, I code a bit.
I have NEVER seen such a problematic, annoying tool like Figma. And it’s supposed to work like standard stuff because lines are lines, rectangles are rectangles, grids are grids. As for the UI, we can all agree that there are standards for e.g. icons like drawing a rectangle or a marquee (who remembers THIS word? : ), etc.
I have days when I don’t remember that I have to click something somewhere or there’s this strange connection that I have to click this and that because in other case the component won’t see the nested instances. And everything is like half-hidden, in some icons that don’t mean much, and there aren’t many tips and infotips and tooltips and whatever you can have.
To be honest, I dislike Figma.
But have to know it, have to work on it. And I feel there are times where my work goes awesome but there are those days, moments, where I am just totally stuck and I keep looking for an answer to the same question all over again.
Stop adding “new ideas”, please polish what needs polishing!
Conclusions:
- Figma is really not forgiving with anything that is about linking, instancing, using libraries, etc. It shows little info, very rarely, and hidden somewhere “there on the right”...
- It is still illogical to me, after what - 6 years in Figma? - how libraries work. You can have the file not linked and yet stuff from it is used and shown. This also contributes to confusion.
- Error reporting, alerting is virtually non-existant. You get some scraps of alerting like there’s a variant missing or there’s a need to restore a component… the rest you have to find out yourself, with the use of plugins, e.g. if anything is linked to a wrong library or an instance is missing its main component.
- I never understood how history works. I have experience with SVN, git, generally - version control but the way it works here, and the fact that it’s not just about one file but also connections - it’s hard to understand.
- Branching theoretically is great but the experience is awful. A lot of confusion...