<?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>Forem: Tolulope Abolarin</title>
    <description>The latest articles on Forem by Tolulope Abolarin (@tolumen).</description>
    <link>https://forem.com/tolumen</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3599481%2F95b719a7-dccb-4f37-9f29-499c253a5675.jpg</url>
      <title>Forem: Tolulope Abolarin</title>
      <link>https://forem.com/tolumen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tolumen"/>
    <language>en</language>
    <item>
      <title>Closing the Designer-Implementation Gap: A Framework for Building Design Competency in the Age of AI</title>
      <dc:creator>Tolulope Abolarin</dc:creator>
      <pubDate>Mon, 13 Apr 2026 09:50:08 +0000</pubDate>
      <link>https://forem.com/tolumen/closing-the-designer-implementation-gap-a-framework-for-building-design-competency-in-the-age-of-ai-2ga1</link>
      <guid>https://forem.com/tolumen/closing-the-designer-implementation-gap-a-framework-for-building-design-competency-in-the-age-of-ai-2ga1</guid>
      <description>&lt;p&gt;Most design teams I've worked with have the same problem, and almost none of them talk about it directly. Their designers produce polished screens in Figma. Their engineers build working products. And between those two steps, something breaks.&lt;/p&gt;

&lt;p&gt;I call this the Designer-Implementation Gap. It's the distance between what a designer intends and what actually ships. Every designer knows the feeling: opening a staging link and realising the thing you designed doesn't quite work the way you imagined. Spacing is off. States you never accounted for are showing up. The responsive behaviour makes no sense. The engineer did their best with what they had, but you handed them a picture of a house and expected them to know where the plumbing goes.&lt;/p&gt;

&lt;p&gt;This gap has always existed. But AI is about to blow it wide open.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gap Isn't New. The Framework Is.
&lt;/h2&gt;

&lt;p&gt;Design's handoff problem has been written about before. Brad Frost described a "hot potato" process where design and development pass work back and forth rather than throwing it over a wall. The Atomic Design methodology gave teams a shared vocabulary of atoms, molecules, and organisms. Dan Mall and others pushed for design engineers and collaborative workflows.&lt;/p&gt;

&lt;p&gt;These contributions matter. But they focus on &lt;em&gt;process&lt;/em&gt;: how teams should hand work between disciplines. What's missing is a &lt;em&gt;competency model&lt;/em&gt; for the individual designer. The question isn't just "how should teams collaborate?" but "what does a designer need to know and do at each stage of their career to close this gap on their own terms?"&lt;/p&gt;

&lt;p&gt;That's what the Design Competency Ladder addresses. It maps the progression from screen-level output to implementation-level ownership, and it does so specifically in the context of AI tools that are compressing the value of the earlier stages. Frost tells you the handoff process is broken. This framework tells you what to learn next so you depend on it less.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI Makes This Worse Before It Makes It Better
&lt;/h2&gt;

&lt;p&gt;Tools like Galileo, Relume, and even Figma's own AI features can now generate layouts and component suggestions in seconds. An average-looking interface is trivially easy to produce. That sounds like progress, and in some ways it is. But it creates a problem: when anyone can produce a decent-looking screen, the screen itself stops being the valuable part of the work.&lt;/p&gt;

&lt;p&gt;The value moves downstream. It moves toward understanding &lt;em&gt;how things actually get built&lt;/em&gt;, what constraints exist in code, how components behave across breakpoints and states, and how a system holds together when ten different people are building features inside it simultaneously.&lt;/p&gt;

&lt;p&gt;If you're a designer whose work stops at the Figma handoff, this shift will quietly make your role harder to justify. Not because you lack talent, but because the bottleneck has moved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Design Competency Ladder
&lt;/h2&gt;

&lt;p&gt;Over the past four years of working across fintech, e-commerce, and SaaS products, I've noticed that the designers who stay effective through this transition tend to follow a predictable progression. I've mapped it into four stages. It's not a hierarchy of talent; it's a ladder of operational capability that determines how much of the product outcome you actually own.&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.amazonaws.com%2Fuploads%2Farticles%2Fmjlunmmr18bkayd7372d.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fmjlunmmr18bkayd7372d.jpg" alt="Figure 1" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 1: Screen Production&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You receive a brief or user story. You produce screens. Your output is measured in pages, flows, and visual fidelity. Your tools are Figma, maybe Sketch. You hand off annotated files and move on.&lt;/p&gt;

&lt;p&gt;This is where most junior designers start, and it's a legitimate starting point. The problem is that many designers stay here for five, eight, ten years. And the longer you stay, the more exposed you are, because AI can already do a passable version of this work in minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2: Component Thinking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You stop designing pages and start designing pieces. You build a button once, define its variants, and reuse it everywhere. You think about naming conventions, spacing tokens, colour systems. Your Figma file has a components page that other designers reference.&lt;/p&gt;

&lt;p&gt;This is a real jump from Stage 1 because it requires you to think about consistency and reuse rather than individual aesthetics. But it still lives entirely inside the design tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 3: Systems Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You define the rules that produce the components. You think about the relationships between elements, not just the elements themselves. You ask: what happens when this card needs to hold 200 characters instead of 40? What happens when this layout runs on a 320px screen? What does the error state look like, and who wrote the microcopy for it?&lt;/p&gt;

&lt;p&gt;At this stage, you're no longer designing outputs. You're designing the logic that generates outputs. The distinction matters because it changes the questions you ask in sprint planning, the way you review pull requests, and the way you structure your files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 4: Implementation Ownership&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You understand the medium you're designing for. You can read (and sometimes write) CSS. You know what a flexbox does and why your designer's assumption about "equal columns" doesn't work the way they imagined. You prototype in code, or use tools like Webflow to build working interfaces. Your design decisions account for browser rendering, responsive behaviour, and performance.&lt;/p&gt;

&lt;p&gt;At this stage, design and implementation aren't two separate steps. They're one continuous loop. You ship, not just hand off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage Diagnostic: Where Are You Right Now?
&lt;/h2&gt;

&lt;p&gt;Before the ladder is useful, you need to locate yourself on it honestly. I've put together a diagnostic you can run against your own practice. Five questions. Answer them and the pattern will tell you where you sit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. What do you deliver at the end of a sprint?&lt;/strong&gt;&lt;br&gt;
If your answer is "screens" or "flows in Figma," that's Stage 1. If it's "components with defined variants and tokens," Stage 2. If it's "a spec that covers edge cases, error states, and responsive logic," Stage 3. If it's "a working prototype or production-ready code," Stage 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. When engineering finds a problem during build, what's the most common type?&lt;/strong&gt;&lt;br&gt;
"It doesn't look right" = Stage 1 problem (visual fidelity lost in translation). "This component already exists but they built a new one" = Stage 2 problem (no system awareness). "This breaks on mobile / with long content / in the error state" = Stage 3 problem (unconsidered constraints). If engineering rarely finds problems because you already caught them, you're operating at Stage 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Can you open a CSS file and understand what it does?&lt;/strong&gt;&lt;br&gt;
If the answer is no, you're at Stage 1 or 2. If you can read it but not write it, you're at Stage 3. If you can read, write, and debug it, you're at Stage 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. When was the last time you tested your design with real data?&lt;/strong&gt;&lt;br&gt;
If you've never done this, Stage 1. If you test with a few edge cases in Figma, Stage 2. If you systematically stress-test with extreme data (longest strings, empty states, 320px viewports), Stage 3. If you test in code against actual API responses, Stage 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. How do you handle a responsive layout?&lt;/strong&gt;&lt;br&gt;
If you design desktop-first and let engineering figure out mobile, Stage 1. If you create separate mobile mocks, Stage 2. If you define breakpoint behaviours and fluid spacing rules, Stage 3. If you build the responsive logic yourself in CSS or Webflow, Stage 4.&lt;/p&gt;

&lt;p&gt;Most designers will find they're at different stages for different questions. That's normal. The diagnostic isn't a judgement; it's a map. Look at where you cluster and you'll see where to invest next.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Ladder Plays Out Across Industries
&lt;/h2&gt;

&lt;p&gt;The reason I frame this as a ladder and not a personality trait is that different industries demand different stages, and knowing which stage you're operating at helps you diagnose mismatches between your skills and your environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fintech&lt;/strong&gt; punishes designers who stay at Stage 1 or 2. Financial products carry regulatory constraints that directly affect UI. A payment confirmation screen isn't just a layout problem; it needs to account for PSD2 requirements, transaction state management, failed payment recovery flows, and microcopy that satisfies compliance. If you're designing these screens without understanding how the API handles state transitions, you will produce something that looks correct but breaks in production.&lt;/p&gt;

&lt;p&gt;I saw this play out on a cross-border payments product. The original design showed a clean, single-step confirmation screen. In production, the backend required a holding state while the partner bank confirmed the exchange rate. The first designer on the project had no awareness that this state existed. Nobody told them, and they didn't ask, because at Stage 1 you don't know which questions to ask. We redesigned the flow to account for the holding state, added a polling indicator with a progress ring, and wrote microcopy that set expectations without creating anxiety. That redesign only happened because someone on the team was working at Stage 3 and knew to ask: "what are the possible states between 'submitted' and 'confirmed'?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E-commerce&lt;/strong&gt; creates a different pressure. The challenge isn't regulation; it's scale. You might have 40,000 SKUs, each with different image ratios, description lengths, and attribute sets. A product card designed in Figma with a perfect 4:3 image and a two-line title will collapse the moment you feed it real catalogue data.&lt;/p&gt;

&lt;p&gt;Systems-level designers solve this by defining constraints: maximum title length before truncation, image aspect ratio fallbacks, responsive grid behaviours at each breakpoint. They design the container, not the content. And they test it with ugly data, not just their carefully curated Figma samples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SaaS&lt;/strong&gt; products demand Stage 4 more than almost any other sector. Enterprise software has dense information architecture, complex table interactions, keyboard navigation requirements, and accessibility obligations that are impossible to validate in a static design tool. If you're designing a data table with 15 columns, inline editing, sortable headers, and row-level actions, you won't know if it works until you build it. Figma can show you what it looks like. Only code can show you what it feels like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where "Taste" Actually Lives in This Framework
&lt;/h2&gt;

&lt;p&gt;There's a word that comes up often in design discourse: taste. People use it to describe an instinct for what looks right, what feels polished, what separates good from great. I think the word is useful, but it gets misapplied.&lt;/p&gt;

&lt;p&gt;Taste isn't a Stage 1 skill. Or rather, it's not &lt;em&gt;only&lt;/em&gt; a Stage 1 skill. The most valuable form of taste operates at Stage 3 and 4, where you're making decisions about constraint systems and component behaviour that will ripple across hundreds of screens.&lt;/p&gt;

&lt;p&gt;Suppose an AI tool generates a modal component with sensible defaults: centred, shadowed background, close button top-right, action buttons bottom-right. It looks fine. But taste at Stage 3 asks different questions: should this be a modal at all, or would a slide-over panel preserve context better? If it's a modal, what happens to keyboard focus? What's the maximum width before the content feels sparse? What's the animation timing, and does it match the rest of the system's motion language?&lt;/p&gt;

&lt;p&gt;AI can produce the artifact. It can't make the judgment call about whether the artifact is the right solution for the context. That judgment comes from working with real users, understanding the product's existing patterns, and making a call that accounts for consistency, usability, and the specific moment in the user's workflow.&lt;/p&gt;

&lt;p&gt;That's where taste lives. Not in making things look beautiful, but in making the right structural decision when there are fifteen reasonable options and no obvious winner.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Method for Moving Up the Ladder
&lt;/h2&gt;

&lt;p&gt;If you recognise yourself at Stage 1 or 2 and want to move toward 3 and 4, here's what's worked for me and for designers I've mentored.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Stage 1 to Stage 2:&lt;/strong&gt; Audit your last five projects. How many components did you create from scratch that already existed somewhere else in the product? Start a personal component library and enforce your own naming convention. The discipline of naming forces you to think about reuse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Stage 2 to Stage 3:&lt;/strong&gt; Pick one feature you recently designed and stress-test it. Feed it extreme data: the longest possible username, an empty state, a slow network connection, a screen width of 320px. Find the places where your design fails and document what you'd change. Do this for every feature going forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Stage 3 to Stage 4:&lt;/strong&gt; Learn enough CSS to read a stylesheet and understand what it's doing. You don't need to become a frontend engineer. But you need to understand flexbox, grid, media queries, and how browsers calculate layout. Build one small thing in Webflow or raw HTML/CSS. Rebuild a component you designed in Figma and see what breaks in translation.&lt;/p&gt;

&lt;p&gt;The jump from each stage to the next takes roughly six to twelve months of deliberate practice. It's not about raw talent. It's about changing what you pay attention to.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Design Teams
&lt;/h2&gt;

&lt;p&gt;If you lead a design team, the ladder gives you a diagnostic tool. Map your designers against it. If most of your team operates at Stage 1 and 2, you'll see predictable symptoms: high revision rates after engineering picks up the work, frequent "that's not what I designed" conversations, and a constant backlog of design debt.&lt;/p&gt;

&lt;p&gt;If your team operates at Stage 3 and 4, you'll see fewer handoff surprises, more productive conversations with engineering, and faster iteration cycles, because the design already accounts for the constraints that would otherwise surface as bugs.&lt;/p&gt;

&lt;p&gt;This isn't about replacing designers with engineers or asking designers to code full-time. It's about closing the gap between intent and outcome. The closer a designer operates to the build layer, the less information gets lost in translation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role Isn't Disappearing. It's Forking.
&lt;/h2&gt;

&lt;p&gt;If the ladder describes how designers grow, it also predicts how the role itself will split. And that split is already happening; we just haven't named it clearly enough.&lt;/p&gt;

&lt;p&gt;Stages 3 and 4 demand fundamentally different skill sets depending on which direction you lean. Some designers at Stage 3 become obsessed with the system itself: the tokens, the responsive logic, the component API surface, the handshake between Figma variables and CSS custom properties. Others at Stage 3 become obsessed with the &lt;em&gt;decisions the system serves&lt;/em&gt;: which features to build, how information should be structured, what research says about user behaviour, and how to keep a product coherent as it scales across teams and geographies.&lt;/p&gt;

&lt;p&gt;These are both Stage 3+ skills. But they pull in opposite directions, and trying to do both well at once is how you burn out.&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.amazonaws.com%2Fuploads%2Farticles%2Fcsvvp2w10ncaqw7y557f.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.amazonaws.com%2Fuploads%2Farticles%2Fcsvvp2w10ncaqw7y557f.png" alt="Figure 1" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first path is what I'd call the &lt;strong&gt;Design Systems Architect&lt;/strong&gt;. This person defines the rules, components, and constraints that produce consistent interfaces at scale. They think in tokens, relationships, and responsive logic. They work closely with engineering and often prototype in code. Their measure of success is adoption rate: how many teams use the system, how few one-off components get created, and how rarely engineering has to override a design decision. They're hired for their technical depth and their ability to design for the &lt;em&gt;system's&lt;/em&gt; users (other designers and developers), not just the end user.&lt;/p&gt;

&lt;p&gt;The second path is the &lt;strong&gt;Product Design Strategist&lt;/strong&gt;. This person focuses on user research, information architecture, and product direction. They make decisions about what to build and why. Their measure of success is product outcomes: retention, task completion, revenue per user, NPS. They're hired for their judgment, their ability to synthesise research into product bets, and their skill at keeping a growing product from fragmenting into a mess of disconnected features.&lt;/p&gt;

&lt;p&gt;Both paths need Stage 3 as a foundation. Both are made more valuable, not less, by AI handling screen production. But they demand different career investment. A Design Systems Architect should spend their next six months learning CSS architecture, design tokens, and versioning strategy. A Product Design Strategist should spend that time deepening their research practice, learning to run experiments, and building fluency in product analytics.&lt;/p&gt;

&lt;p&gt;Neither path looks much like the "UI/UX Designer" job description that most of us started with. And that's the point. The old title bundled together skills that are now diverging. The designers who recognise this early get to choose their path deliberately. The rest will find it chosen for them by whatever their current employer happens to need.&lt;/p&gt;

&lt;p&gt;This framework is my attempt to make that choice visible before it becomes urgent.&lt;/p&gt;

</description>
      <category>figma</category>
      <category>ai</category>
      <category>design</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Optimizing Web Performance: How Lazy-Loading Spline Assets Took Our Build From 30 to 90 in Lighthouse</title>
      <dc:creator>Tolulope Abolarin</dc:creator>
      <pubDate>Tue, 18 Nov 2025 12:50:09 +0000</pubDate>
      <link>https://forem.com/tolumen/optimizing-web-performance-how-lazy-loading-spline-assets-took-our-build-from-30-to-90-in-4ne2</link>
      <guid>https://forem.com/tolumen/optimizing-web-performance-how-lazy-loading-spline-assets-took-our-build-from-30-to-90-in-4ne2</guid>
      <description>&lt;h2&gt;
  
  
  When Performance Breaks Before Launch.
&lt;/h2&gt;

&lt;p&gt;We faced a common problem while developing a client site at our design agency recently. Everything looked great, but the site was really slow.&lt;/p&gt;

&lt;p&gt;We tested it and found that the initial load time was more than 6 seconds. The Time To Interactive was more than 5 seconds, while the page scored 30/100 when we ran it through Lighthouse. Unfortunately, Lighthouse didn’t tell us what was actually causing it, so it was left to us to figure it out.&lt;br&gt;
We finally found the cause of the problem after digging into DevTools performance traces. The site was loading Spline assets before the user needed them and they were blocking the main thread.&lt;/p&gt;

&lt;p&gt;Lazy-loading those assets changed everything and this is what we got:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| Metric | Before | After |
| ----- | ----- | ----- |
| Initial Load Time | 6.5s | 1.2s |
| Time to Interactive | 5.3s | 0.8s |
| Largest Contentful Paint | 5.7s | 0.6s |
| Lighthouse Score | 30 → 90 |  |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The load time went down to 1.2s, TTI down to 0.8s and the Lighthouse score shot up to 90. All these without changing the design or doing any compression hacks.&lt;/p&gt;

&lt;p&gt;The load time went down to 1.2s, TTI down to 0.8s and the Lighthouse score shot up to 90. All these without changing the design or doing any compression hacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context: The Build was Visually-Heavy
&lt;/h2&gt;

&lt;p&gt;The project relied on multiple 3D spline embeds to create an immersive interface. Spline is great for this because it renders scalable 3D vector scenes. It’s also lighter than video or traditional 3D assets and allows live interaction. But it comes at the cost of having the runtime and model file load immediately unless you do something about it.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Spline script executes before the page is interactive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The model downloads before the user scrolls to it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The browser treats it like a high-priority resource&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Main thread execution stalls&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which is exactly what we saw in DevTools.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Problem: Lighthouse Didn’t Flag the Bottleneck&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Lighthouse gave us red flags about “render-blocking resources” and “heavy JavaScript execution”, but no mention of Spline directly.&lt;/p&gt;

&lt;p&gt;It was difficult to spot because the asset didn’t show as an image or a large file. It came up as JavaScript execution time buried under other events. Only a DevTools Performance trace made it easier to see the problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Spline script was loaded in &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execution started before anything else rendered&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The main thread was blocked for hundreds of milliseconds&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All meaningful content waited behind it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The page wasn’t slow because the assets were too large. It was slow because they loaded too early.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: Lazy-Loading the Spline Elements
&lt;/h2&gt;

&lt;p&gt;We already lazy-load images, so we applied the same logic to Spline. Basically, don’t load it until the user is close to seeing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spline Lazy Loading Pattern
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function lazyLoadSpline(container) {`  
  `const observer = new IntersectionObserver(entries =&amp;gt; {`  
    `entries.forEach(entry =&amp;gt; {`  
      `if (entry.isIntersecting) {`  
        `entry.target.loadSplineAsset();`  
        `observer.unobserve(entry.target);`  
      `}`  
    `});`  
  `});`

  `observer.observe(container);`  
`}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Placeholder Strategy
&lt;/h3&gt;

&lt;p&gt;We used static thumbnail placeholders to stop the layout from shifting. We also used a reserved container height and applied an optional loading state. All these stopped the layout from jumping when the embed initialized.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Spline Flies Under the Radar in Audits&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Spline assets don’t behave like images, video or fonts, which means they don’t show up under “Large Media” or “Unused JS”. They also don’t trigger obvious Lighthouse warnings. Instead, they work like a hybrid of script execution, asset streaming and GPU rendering.&lt;/p&gt;

&lt;p&gt;This means you can only catch the issue by looking at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DevTools Network waterfall&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Main thread flamegraph&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CPU/JS execution timeline&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results: Before vs After
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| Metric | Before | After |
| ----- | ----- | ----- |
| First Paint | 3.4s | 0.7s |
| LCP | 5.7s | 0.6s |
| TTI | 5.3s | 0.8s |
| Lighthouse | 30 | 90 |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the end, we didn’t have to modify the Spline assets themselves or reduce resolution. We solved what seemed like a serious problem just by delaying when the Spline assets loaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What We Learned&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance issues are often timing-based&lt;/td&gt;
&lt;td&gt;Not just about file size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lighthouse is not a full diagnostic tool&lt;/td&gt;
&lt;td&gt;Always investigate manually&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightweight assets can still block the main thread&lt;/td&gt;
&lt;td&gt;Rendering work matters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavy visuals should never load before above-the-fold content&lt;/td&gt;
&lt;td&gt;Prioritization &amp;gt; compression&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lazy loading is a performance technique, not just a UX feature&lt;/td&gt;
&lt;td&gt;It frees CPU + bandwidth&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Practical Checklist for Future Builds
&lt;/h2&gt;

&lt;p&gt;Based on the lessons learnt from the problem, we’ve created a checklist for future builds.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audit runtime-based assets, not just file sizes
&lt;/li&gt;
&lt;li&gt;Treat 3D embeds like video: load only when needed
&lt;/li&gt;
&lt;li&gt;Use IntersectionObserver for scroll-based activation
&lt;/li&gt;
&lt;li&gt;Always test on mid-range real devices, not just desktop throttling
&lt;/li&gt;
&lt;li&gt;Use placeholders to prevent layout shift (CLS)
&lt;/li&gt;
&lt;li&gt;Record a DevTools performance trace before launch
&lt;/li&gt;
&lt;li&gt;Don’t assume Lighthouse tells the whole story&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Having smaller files isn’t the only thing to aim for if you want a faster website. You also have to make sure the right things load at the right time. Spline is a reliable tool for interactive web experiences, but you need to integrate it with performance in mind. All the site needed to become faster was moving from &lt;em&gt;“load immediately”&lt;/em&gt; to &lt;em&gt;“load when needed”.&lt;/em&gt; And we didn’t have to sacrifice visuals.&lt;/p&gt;

&lt;p&gt;If Lighthouse isn’t showing you the real performance issue, it doesn’t mean there isn’t one. Sometimes you need to open DevTools and follow the execution timeline to find the fix.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>spline</category>
      <category>webflow</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
