Demo data is polite. Names fit the column, everyone has a salary, and every record is in a state somebody thought about. A real roster is none of those things, and the difference is where an interface stops being a picture.
Sample data exists to make a screen look finished. A fixture exists to find out whether it is. Each value below is in the set because it broke something, and it stays because it would break it again.
01How shells are handled →Every component ships with them, because they are not edge cases — they are most of a working day. A screen that only has its happy path is a screen that is a quarter finished.
02How they travel →Shaped like the roster that is arriving, down to the avatar and the two figures. Nothing jumps when the data lands.
Nothing to show is not the same as nothing. It says which of the two, and how many are behind the filter. Every empty state has a way out of it.
What failed, whether it already retried, and whether anything was changed on the way. A reference the support desk can actually use.
A designed screen, not a blank one and not a lie. The record exists, this reader cannot see it, and there is a route to asking.
A fixture kept in a separate repository is a fixture nobody runs. Each worked product carries its own, and each component carries the four states it must render.
03Back to the top →Reckon
Components are the easy part. What you are missing is the layer that decides what gets computed, what gets shown, and what gets refused.