<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Deep</title>
    <description>The latest articles on DEV Community by Deep (@thedeep).</description>
    <link>https://dev.to/thedeep</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175783%2Ff1307ba8-390a-4e51-b7cd-9a4aa8ef05c8.png</url>
      <title>DEV Community: Deep</title>
      <link>https://dev.to/thedeep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thedeep"/>
    <language>en</language>
    <item>
      <title>Your component works until someone puts real content in it</title>
      <dc:creator>Deep</dc:creator>
      <pubDate>Sat, 10 Oct 2026 18:21:02 +0000</pubDate>
      <link>https://dev.to/thedeep/your-component-works-until-someone-puts-real-content-in-it-188k</link>
      <guid>https://dev.to/thedeep/your-component-works-until-someone-puts-real-content-in-it-188k</guid>
      <description>&lt;p&gt;How I stopped finding layout bugs after handoff and started finding them in Figma.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fa5vtip7jdfifzsuqh4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fa5vtip7jdfifzsuqh4.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every component I’ve ever designed looked finished in the file.&lt;/p&gt;

&lt;p&gt;Two tidy lines of placeholder text. A short name. A price with one digit before the decimal. I’d hand it off feeling good about it.&lt;/p&gt;

&lt;p&gt;Then real content showed up.&lt;/p&gt;

&lt;p&gt;A label got translated and ran straight past its button. Someone’s surname wrapped onto a third line and pushed the price off the card. And an empty field left a gap that nobody had ever styled, because in my file, that field was never empty.&lt;/p&gt;

&lt;p&gt;None of these were hard bugs. They were just bugs nobody looked for. Including me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My “process” (if you can call it that)&lt;/strong&gt;&lt;br&gt;
On a design system I worked on this year, I had a routine for catching this stuff. It went like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Screenshot the component.&lt;/li&gt;
&lt;li&gt;Paste it into ChatGPT (at that time, OpenAI was the only major AI player in the market).&lt;/li&gt;
&lt;li&gt;Ask it to code the edge cases. Long text, empty states, weird numbers.&lt;/li&gt;
&lt;li&gt;Read through what broke.&lt;/li&gt;
&lt;li&gt;Go fix it. In code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Did it work? Kind of.&lt;/p&gt;

&lt;p&gt;Was it slow? Very. So slow that I only did it for components I was already nervous about. The ones I trusted never got checked, which is funny, because those were the ones that broke.&lt;/p&gt;

&lt;p&gt;And every single fix landed in code. The Figma file never found out. A few weeks later, the design and the build had quietly drifted apart, one hotfix at a time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7w2z5f7r89ia0wiheyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7w2z5f7r89ia0wiheyy.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I moved the check into Figma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where the Stress Test module in the CalibrateDS Figma plugin came from. It didn't start as a feature idea. It started as me being tired of steps 1 to 5.&lt;/p&gt;

&lt;p&gt;You select a component, hit Run, and it copies the component onto a sandbox page. Your original is never touched. Then it runs that copy through a set of content cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the original, as designed&lt;/li&gt;
&lt;li&gt;copy at +30%&lt;/li&gt;
&lt;li&gt;copy at +60%&lt;/li&gt;
&lt;li&gt;copy doubled&lt;/li&gt;
&lt;li&gt;one long unbroken word&lt;/li&gt;
&lt;li&gt;numbers&lt;/li&gt;
&lt;li&gt;empty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each case reports how many issues it found, and each issue opens to the exact layer that broke.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The number I didn’t expect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran it on an activity card from a travel app I designed. 42 combinations in total.&lt;/p&gt;

&lt;p&gt;Long word found 11 issues. Fine, I expected that one. Emails and product codes don’t wrap.&lt;/p&gt;

&lt;p&gt;But the original, the version I hadn't changed at all, already had 5.&lt;/p&gt;

&lt;p&gt;Five. Before anything was stretched.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhekfhdl105vkun9i8sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhekfhdl105vkun9i8sg.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s the part that stuck with me. I thought the stress cases would break things. I didn’t think my “finished” component was already broken.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why such boring cases?&lt;/strong&gt;&lt;br&gt;
You might be wondering why the cases aren’t wilder. Where’s the 400-character name? The emoji-only username?&lt;/p&gt;

&lt;p&gt;Honestly, because boring is what actually ships.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;+30% is roughly what happens when copy gets translated, or a writer adds one more clause.&lt;/li&gt;
&lt;li&gt;Doubled is a user who writes more than you planned for.&lt;/li&gt;
&lt;li&gt;A long work is an email address, a URL, a product code.&lt;/li&gt;
&lt;li&gt;Numbers are prices and counts that grow by a digit.&lt;/li&gt;
&lt;li&gt;Empty is the state everyone forgets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fksh3gbby6sriiem6vbzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fksh3gbby6sriiem6vbzx.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These aren’t edge cases. They’re Tuesday.&lt;/p&gt;

&lt;p&gt;If you want weirder ones, you can connect your own AI key, and it’ll write content-aware cases for that specific component, like long real names on a profile card or different currency formats on a price. That part is optional. The built-in cases run without any AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I do with the results now&lt;/strong&gt;&lt;br&gt;
I treat the issue count like a failing test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuzzhdr47uzf7y99cgj6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuzzhdr47uzf7y99cgj6e.png" alt=" " width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fix the component in Figma (usually it’s a text box set to fixed height, a missing min or max width, or auto layout sizing that should hug instead of fill). Run it again. Only then hand it off.&lt;/p&gt;

&lt;p&gt;The fix lives in the design now, not just in the code. So the file and the build stay in register instead of slowly drifting apart.&lt;/p&gt;

&lt;p&gt;Does this replace a developer testing the real thing? No. It just means the obvious breaks get caught by the person who can fix them fastest, before anyone writes code against a layout that was never going to hold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it on one component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here’s my challenge for you. Pick the component you trust the most. A card, a list row, a button with a long label option. Run it through the cases above, by hand or with the plugin, and count how many break in the original.&lt;/p&gt;

&lt;p&gt;I’d genuinely love to know your number.&lt;/p&gt;

&lt;p&gt;I also put the exact checklist I use into a short Markdown file you can drop into Claude or Cursor while you build, so the AI checks the same cases in code. It’s free on my site &lt;a href="https://dev.tourl"&gt;deepadalja.com/resources&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CalibrateDS is free and runs locally in Figma. Search CalibrateDS in Figma Community, or read more at &lt;a href="https://dev.tourl"&gt;calibrateds.deepadalja.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>figma</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
