<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ivue blog</title>
    <link>https://ivue.dev/blog/</link>
    <atom:link href="https://ivue.dev/feed.xml" rel="self" type="application/rss+xml" />
    <description>Class-based reactivity for Vue 3 — plain classes, full reactivity, one kilobyte. Patterns, releases, and measured numbers from the JavaScript frontier.</description>
    <language>en-us</language>
    <lastBuildDate>Fri, 28 Aug 2026 21:24:38 GMT</lastBuildDate>
    <item>
      <title>Ship the variant, keep the tuning</title>
      <link>https://ivue.dev/blog/ship-the-variant-keep-the-tuning</link>
      <guid isPermaLink="true">https://ivue.dev/blog/ship-the-variant-keep-the-tuning</guid>
      <pubDate>Fri, 28 Aug 2026 21:24:38 GMT</pubDate>
      <description>A production virtual scroller, hand-tuned for years, became a horizontal card strip and a book-length text marquee — and the whole diff is eight getters and one prop. How class extension keeps the hard 80% shipped once.</description>
      <enclosure url="https://ivue.dev/blog/ship-the-variant-keep-the-tuning.png" type="image/png" length="0" />
    </item>
    <item>
      <title>What native signals should steal</title>
      <link>https://ivue.dev/blog/what-native-signals-should-steal</link>
      <guid isPermaLink="true">https://ivue.dev/blog/what-native-signals-should-steal</guid>
      <pubDate>Sun, 23 Aug 2026 20:59:59 GMT</pubDate>
      <description>TC39's signals proposal standardizes the graph. It defers the layer where apps actually live: how signals attach to objects. That layer has been built and measured in userland. Lazy existence, zero-cost derivation, explicit release. Three mechanisms, three receipts, all on offer.</description>
      <enclosure url="https://ivue.dev/blog/what-native-signals-should-steal.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Expressiveness is no longer a budget</title>
      <link>https://ivue.dev/blog/expressiveness-is-no-longer-a-budget</link>
      <guid isPermaLink="true">https://ivue.dev/blog/expressiveness-is-no-longer-a-budget</guid>
      <pubDate>Sun, 23 Aug 2026 13:40:00 GMT</pubDate>
      <description>Every Vue codebase rations expressiveness. Inline the expression, flatten the model, split the editor from the player, keep it light. The rationing was never wisdom. It was a price list. Change the prices and the link between how expressive an app is and how heavy it is simply breaks.</description>
      <enclosure url="https://ivue.dev/blog/expressiveness-is-no-longer-a-budget.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Release what the GC can't</title>
      <link>https://ivue.dev/blog/release-what-the-gc-cant</link>
      <guid isPermaLink="true">https://ivue.dev/blog/release-what-the-gc-cant</guid>
      <pubDate>Sun, 23 Aug 2026 13:26:01 GMT</pubDate>
      <description>The garbage collector's contract ends at reachability: one retained reference — an event bus, a stray closure, devtools — and your unmounted component's 85 MB stays forever. We measured what happens when the model can empty itself instead: 4.7 MB. The leak keeps the husk. It doesn't keep the memory.</description>
      <enclosure url="https://ivue.dev/blog/release-what-the-gc-cant.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Derivations are free. Caches are earned.</title>
      <link>https://ivue.dev/blog/derivations-are-free</link>
      <guid isPermaLink="true">https://ivue.dev/blog/derivations-are-free</guid>
      <pubDate>Sun, 23 Aug 2026 13:08:11 GMT</pubDate>
      <description>We finally measured the one thing the doctrine never had a number for: the warm read. A plain getter recomputes every time; computed() reads its cache in 3 nanoseconds. So why is the getter still the right default? Because the crossover has a price — and most derivations never pay it.</description>
      <enclosure url="https://ivue.dev/blog/derivations-are-free.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Total memory control</title>
      <link>https://ivue.dev/blog/total-memory-control</link>
      <guid isPermaLink="true">https://ivue.dev/blog/total-memory-control</guid>
      <pubDate>Sun, 23 Aug 2026 09:44:16 GMT</pubDate>
      <description>In Vue, a ref exists the moment its line runs — name and storage are the same thing. Put the ref behind a getter and they separate: existence itself becomes a managed resource. One indirection, and memory has an API.</description>
      <enclosure url="https://ivue.dev/blog/total-memory-control.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Pause the watchers, keep the state</title>
      <link>https://ivue.dev/blog/pause-watchers-keep-the-state</link>
      <guid isPermaLink="true">https://ivue.dev/blog/pause-watchers-keep-the-state</guid>
      <pubDate>Sun, 23 Aug 2026 09:08:32 GMT</pubDate>
      <description>An object's lifecycle has a third state between alive and reset: suspended — side effects silent, data intact. ivue 2.4 adds it as one option on the existing verb, and the resume half costs no API at all.</description>
      <enclosure url="https://ivue.dev/blog/pause-watchers-keep-the-state.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The thinnest possible layer between intent and reactivity, backend or frontend</title>
      <link>https://ivue.dev/blog/the-thinnest-possible-layer</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-thinnest-possible-layer</guid>
      <pubDate>Sun, 23 Aug 2026 08:27:23 GMT</pubDate>
      <description>alien signals reduced propagation to its minimum; Vue owns the stable contract over it; ivue answers the one remaining question — where cells live, when they materialize, who owns their death. What sits between intent and reactivity is now almost nothing, and every seam that remains says something true.</description>
      <enclosure url="https://ivue.dev/blog/the-thinnest-possible-layer.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Inexpressible failure, expressible intent</title>
      <link>https://ivue.dev/blog/inexpressible-failure-expressible-intent</link>
      <guid isPermaLink="true">https://ivue.dev/blog/inexpressible-failure-expressible-intent</guid>
      <pubDate>Sun, 23 Aug 2026 07:59:02 GMT</pubDate>
      <description>Every failure mode a substrate leaves expressible squats on territory intent should own. Remove the mine field and something bigger than cleanliness returns: every shape the domain has becomes directly writable — one graph, traced by the text with nothing alien interrupting it.</description>
      <enclosure url="https://ivue.dev/blog/inexpressible-failure-expressible-intent.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Disposal is a reset</title>
      <link>https://ivue.dev/blog/disposal-is-a-reset</link>
      <guid isPermaLink="true">https://ivue.dev/blog/disposal-is-a-reset</guid>
      <pubDate>Sun, 23 Aug 2026 07:23:11 GMT</pubDate>
      <description>Every reactive system answers birth well; death is where they get vague. ivue's $stopEffects is one verb that stops the instance's effects, frees its cells — and leaves the object ready to live again.</description>
      <enclosure url="https://ivue.dev/blog/disposal-is-a-reset.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The stack got faster. We changed nothing.</title>
      <link>https://ivue.dev/blog/the-stack-got-faster</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-stack-got-faster</guid>
      <pubDate>Sun, 23 Aug 2026 06:18:37 GMT</pubDate>
      <description>Vue 3.6 rewrites reactivity on alien signals; Vapor mode removes the virtual DOM. ivue changes nothing and gets faster on both sides — measured on the RC, and already running 94,000 lines in production.</description>
      <enclosure url="https://ivue.dev/blog/the-stack-got-faster.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Bulletproof class modules</title>
      <link>https://ivue.dev/blog/bulletproof-class-modules</link>
      <guid isPermaLink="true">https://ivue.dev/blog/bulletproof-class-modules</guid>
      <pubDate>Sat, 22 Aug 2026 22:47:19 GMT</pubDate>
      <description>LazyShared seals the last seam — the full Reactive() + Static() system is now memoizable at every scope, with polymorphism, inheritance, and performance intact. Every value kind, shown in full code.</description>
      <enclosure url="https://ivue.dev/blog/bulletproof-class-modules.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The Options API everyone actually wanted</title>
      <link>https://ivue.dev/blog/the-options-api-everyone-wanted</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-options-api-everyone-wanted</guid>
      <pubDate>Sat, 22 Aug 2026 21:00:29 GMT</pubDate>
      <description>What people loved about the Options API was anatomy — a component you could read. The anatomy was fake. The class is the real one, and it was in the language all along.</description>
      <enclosure url="https://ivue.dev/blog/the-options-api-everyone-wanted.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Reactive() and Static() — discovered, not invented</title>
      <link>https://ivue.dev/blog/discovered-not-invented</link>
      <guid isPermaLink="true">https://ivue.dev/blog/discovered-not-invented</guid>
      <pubDate>Sun, 16 Aug 2026 21:05:35 GMT</pubDate>
      <description>Reactive() and Static() look like a designed pair — one transform for instances, one for the class object, same late binding, same per-receiver caching, one level apart. Neither was designed to complete the other. The mirror emerged from the same constraints, and emergent duals are load-bearing.</description>
      <enclosure url="https://ivue.dev/blog/discovered-not-invented.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The field, not the rules</title>
      <link>https://ivue.dev/blog/the-field-not-the-rules</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-field-not-the-rules</guid>
      <pubDate>Fri, 14 Aug 2026 03:20:19 GMT</pubDate>
      <description>There are two ways to get good code — police it with rules, or reshape the field so bad design has nowhere to stand. ivue and its invariants flip JavaScript's defaults one by one, until the degenerate moves stop existing as moves. 144,000 lines of agent-built proof.</description>
      <enclosure url="https://ivue.dev/blog/the-field-not-the-rules.png" type="image/png" length="0" />
    </item>
    <item>
      <title>What becomes buildable</title>
      <link>https://ivue.dev/blog/what-becomes-buildable</link>
      <guid isPermaLink="true">https://ivue.dev/blog/what-becomes-buildable</guid>
      <pubDate>Wed, 12 Aug 2026 02:09:05 GMT</pubDate>
      <description>Frameworks made views cheap. ivue makes models cheap — big, long-lived, externally legible. Five categories of software that were blocked on exactly that: whole-dataset apps in the browser, software modified while it runs, agent-operable apps, reactive control planes, and architecture that cannot rot.</description>
      <enclosure url="https://ivue.dev/blog/what-becomes-buildable.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Reactive framework for the AI era</title>
      <link>https://ivue.dev/blog/reactive-framework-for-the-ai-era</link>
      <guid isPermaLink="true">https://ivue.dev/blog/reactive-framework-for-the-ai-era</guid>
      <pubDate>Tue, 11 Aug 2026 17:41:45 GMT</pubDate>
      <description>Frameworks were designed for human authors — expressiveness, flexibility, choice. The author changed. When agents write most of the code, the ranking of framework virtues inverts — uniformity beats expressiveness, construction beats vigilance, and an engine small enough to hold in one head fits whole into one context window.</description>
      <enclosure url="https://ivue.dev/blog/reactive-framework-for-the-ai-era.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Patterns the author never wrote</title>
      <link>https://ivue.dev/blog/patterns-the-author-never-wrote</link>
      <guid isPermaLink="true">https://ivue.dev/blog/patterns-the-author-never-wrote</guid>
      <pubDate>Tue, 11 Aug 2026 15:07:28 GMT</pubDate>
      <description>Invar is full of ivue patterns that ivue's author never used by hand — the mtime-keyed blame cache, observation-owned connections, the pull floor. Agents derived them from the 845-line Standard Operating Manual. The difference between a catalog and a generator is that a generator produces instances its author never enumerated.</description>
      <enclosure url="https://ivue.dev/blog/patterns-the-author-never-wrote.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Reactivity is an allocator</title>
      <link>https://ivue.dev/blog/reactivity-is-an-allocator</link>
      <guid isPermaLink="true">https://ivue.dev/blog/reactivity-is-an-allocator</guid>
      <pubDate>Tue, 11 Aug 2026 14:43:23 GMT</pubDate>
      <description>The industry uses reactivity to update pixels. Invar points it at the operating system — SQLite connections, git subprocesses, LSP servers, sampling timers all exist only while observed. One file system watcher, twenty-one watch sites, ninety-two version signals, and a pull floor under every notify channel. Rendering was just reactivity's first job.</description>
      <enclosure url="https://ivue.dev/blog/reactivity-is-an-allocator.png" type="image/png" length="0" />
    </item>
    <item>
      <title>What JavaScript becomes</title>
      <link>https://ivue.dev/blog/what-javascript-becomes</link>
      <guid isPermaLink="true">https://ivue.dev/blog/what-javascript-becomes</guid>
      <pubDate>Tue, 11 Aug 2026 14:05:30 GMT</pubDate>
      <description>Managed-runtime linking from the JVM, live-image classes from Erlang and Smalltalk, receiver-aware static storage no static language can express, and transparent reactive objects — one language ends up holding all four, and holds them in userland. The capstone of the series.</description>
      <enclosure url="https://ivue.dev/blog/what-javascript-becomes.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Circular imports, dissolved</title>
      <link>https://ivue.dev/blog/circular-imports-dissolved</link>
      <guid isPermaLink="true">https://ivue.dev/blog/circular-imports-dissolved</guid>
      <pubDate>Tue, 11 Aug 2026 01:25:03 GMT</pubDate>
      <description>JavaScript's oldest structural wound — module A needs B, B needs A — was never about the cycle. It was about the clock. One idiom moves every cross-module reference from load time to first access, and 372 files with a deeply cyclic domain graph produce zero import cycles. Measured, not promised.</description>
      <enclosure url="https://ivue.dev/blog/circular-imports-dissolved.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Module-level state is a bug</title>
      <link>https://ivue.dev/blog/module-level-state</link>
      <guid isPermaLink="true">https://ivue.dev/blog/module-level-state</guid>
      <pubDate>Tue, 11 Aug 2026 01:24:03 GMT</pubDate>
      <description>The most normal line in JavaScript — const cache = new Map() at module scope — is an eager, global, unownable singleton with no seam. Static() replaces it with one declaration that is lazy, inheritable, overridable, and test-isolated. A 94,000-line codebase runs on zero module-level functions and zero module-level variables.</description>
      <enclosure url="https://ivue.dev/blog/module-level-state.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Three years to reduce, two weeks to build</title>
      <link>https://ivue.dev/blog/three-years-to-reduce</link>
      <guid isPermaLink="true">https://ivue.dev/blog/three-years-to-reduce</guid>
      <pubDate>Mon, 10 Aug 2026 23:25:38 GMT</pubDate>
      <description>Two commit logs, one project. ivue - 597 commits over three years finding the generator. Invar - 3,109 commits in twenty days generating from it, starting the same day the engine reached its final form. Reduction is where the cost lives.</description>
      <enclosure url="https://ivue.dev/blog/three-years-to-reduce.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Uniformity is a measuring device</title>
      <link>https://ivue.dev/blog/uniformity-is-a-measuring-device</link>
      <guid isPermaLink="true">https://ivue.dev/blog/uniformity-is-a-measuring-device</guid>
      <pubDate>Wed, 29 Jul 2026 05:50:53 GMT</pubDate>
      <description>Consistency is treated as taste. It is actually a measuring device — deviation is only visible against sameness, so a codebase with low structural entropy makes its own defects high-contrast. What that buys, and the one thing it cannot see.</description>
      <enclosure url="https://ivue.dev/blog/uniformity-is-a-measuring-device.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The test is a subclass</title>
      <link>https://ivue.dev/blog/the-test-is-a-subclass</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-test-is-a-subclass</guid>
      <pubDate>Sun, 26 Jul 2026 21:50:38 GMT</pubDate>
      <description>Invar's test harness never mocks. It substitutes full citizens — swap the capability at its Static() seam, subclass $Class to pinch one knob, plant a defect as a positive control. No mock framework, no stub drift, and the compiler checks the fakes.</description>
      <enclosure url="https://ivue.dev/blog/the-test-is-a-subclass.png" type="image/png" length="0" />
    </item>
    <item>
      <title>From monolith to modular design in a day</title>
      <link>https://ivue.dev/blog/monolith-to-modular-in-a-day</link>
      <guid isPermaLink="true">https://ivue.dev/blog/monolith-to-modular-in-a-day</guid>
      <pubDate>Sun, 26 Jul 2026 21:24:16 GMT</pubDate>
      <description>In one day, AI agents extracted a monolith's git, markdown, file tree, settings, and keybindings into plugins behind enforced boundaries — directed by one human talking casually. The care didn't come from the model. It was moved into the structure.</description>
      <enclosure url="https://ivue.dev/blog/monolith-to-modular-in-a-day.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The editor tripled. The zeros didn't move.</title>
      <link>https://ivue.dev/blog/the-zeros-didnt-move</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-zeros-didnt-move</guid>
      <pubDate>Sun, 26 Jul 2026 08:44:26 GMT</pubDate>
      <description>Three days after we measured Invar at 26,000 lines, it passed 69,000 — 396 commits in three days, six new organs, a multi-provider agent harness. Every discipline metric we published held. A follow-up with the greps re-run.</description>
      <enclosure url="https://ivue.dev/blog/the-zeros-didnt-move.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Introducing Invar</title>
      <link>https://ivue.dev/blog/introducing-invar</link>
      <guid isPermaLink="true">https://ivue.dev/blog/introducing-invar</guid>
      <pubDate>Sat, 25 Jul 2026 18:36:35 GMT</pubDate>
      <description>A full IDE that lives in your terminal — file tree, git, LSP autocomplete, integrated AI agents that can watch your shell — built almost entirely by AI agents under a mechanical referee, on one kilobyte of ivue.</description>
      <enclosure url="https://ivue.dev/blog/introducing-invar.png" type="image/png" length="0" />
    </item>
    <item>
      <title>JavaScript's most-linted features are its superpower</title>
      <link>https://ivue.dev/blog/most-linted-superpower</link>
      <guid isPermaLink="true">https://ivue.dev/blog/most-linted-superpower</guid>
      <pubDate>Sat, 25 Jul 2026 18:35:35 GMT</pubDate>
      <description>JavaScript's most-linted properties — mutable bindings, late-bound dispatch — are the raw material for swappability no static language can reach and no dynamic language ever made safe.</description>
      <enclosure url="https://ivue.dev/blog/most-linted-superpower.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Initialization order, solved in userland</title>
      <link>https://ivue.dev/blog/initialization-order-solved</link>
      <guid isPermaLink="true">https://ivue.dev/blog/initialization-order-solved</guid>
      <pubDate>Sat, 25 Jul 2026 18:10:42 GMT</pubDate>
      <description>Initialization order is a solved problem in four languages and an unsolved one in the most-used language on earth. One idiom and a 200-line checker close the gap — and pay three more dividends.</description>
      <enclosure url="https://ivue.dev/blog/initialization-order-solved.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The whole story, in small words</title>
      <link>https://ivue.dev/blog/the-whole-story-in-small-words</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-whole-story-in-small-words</guid>
      <pubDate>Thu, 23 Jul 2026 13:29:42 GMT</pubDate>
      <description>The whole story in small words — a one-kilobyte brick, an editor that AI agents built out of it, and the referee that makes AI-built software safe to trust.</description>
      <enclosure url="https://ivue.dev/blog/the-whole-story-in-small-words.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The object graph they took from you</title>
      <link>https://ivue.dev/blog/the-object-graph-they-took</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-object-graph-they-took</guid>
      <pubDate>Thu, 23 Jul 2026 07:28:24 GMT</pubDate>
      <description>Frontend never proved object graphs wrong — it fled two mechanical defects, then canonized the flight as philosophy. Fix the defects and workspaceSet.active.editor.selectLine() comes home.</description>
      <enclosure url="https://ivue.dev/blog/the-object-graph-they-took.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Reactive() is all you need</title>
      <link>https://ivue.dev/blog/reactive-is-all-you-need</link>
      <guid isPermaLink="true">https://ivue.dev/blog/reactive-is-all-you-need</guid>
      <pubDate>Thu, 23 Jul 2026 03:17:48 GMT</pubDate>
      <description>Store libraries, composable factories, service layers, emitters, DI containers — the state-management zoo reduces to plain classes and one prototype transform. The roles were never different things; they were one thing with different lifetimes.</description>
      <enclosure url="https://ivue.dev/blog/reactive-is-all-you-need.png" type="image/png" length="0" />
    </item>
    <item>
      <title>AI agents built a 26,000-line code editor on ivue</title>
      <link>https://ivue.dev/blog/agents-built-an-editor</link>
      <guid isPermaLink="true">https://ivue.dev/blog/agents-built-an-editor</guid>
      <pubDate>Thu, 23 Jul 2026 01:04:24 GMT</pubDate>
      <description>A working terminal code editor, written almost entirely by AI agents — zero cycle-breaking hacks, one computed() in the whole codebase, one wiring seam. What a substrate is worth when the author is a machine.</description>
      <enclosure url="https://ivue.dev/blog/agents-built-an-editor.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The object should tell the truth</title>
      <link>https://ivue.dev/blog/the-object-should-tell-the-truth</link>
      <guid isPermaLink="true">https://ivue.dev/blog/the-object-should-tell-the-truth</guid>
      <pubDate>Wed, 15 Jul 2026 00:22:50 GMT</pubDate>
      <description>State is explicit. Caching is intentional. Everything else stays pure. An ivue class makes the runtime semantics of an object visible in its source.</description>
      <enclosure url="https://ivue.dev/blog/the-object-should-tell-the-truth.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Win by reduction. Win by construction.</title>
      <link>https://ivue.dev/blog/win-by-reduction</link>
      <guid isPermaLink="true">https://ivue.dev/blog/win-by-reduction</guid>
      <pubDate>Tue, 14 Jul 2026 19:11:54 GMT</pubDate>
      <description>The strongest architecture does not manage complexity more efficiently. It removes the conditions that create it, then makes the remaining guarantees structural.</description>
      <enclosure url="https://ivue.dev/blog/win-by-reduction.png" type="image/png" length="0" />
    </item>
    <item>
      <title>VS Code spent a decade hand-rolling reactive classes</title>
      <link>https://ivue.dev/blog/vscode-hand-rolled-decade</link>
      <guid isPermaLink="true">https://ivue.dev/blog/vscode-hand-rolled-decade</guid>
      <pubDate>Mon, 13 Jul 2026 20:44:36 GMT</pubDate>
      <description>The most influential TypeScript app is class-OOP with no framework — emitters, disposables, DI decorators, and since 2022 its own signals system. Every one of those subsystems maps to one ivue feature.</description>
      <enclosure url="https://ivue.dev/blog/vscode-hand-rolled-decade.png" type="image/png" length="0" />
    </item>
    <item>
      <title>A million rows, twelve divs</title>
      <link>https://ivue.dev/blog/a-million-rows-twelve-divs</link>
      <guid isPermaLink="true">https://ivue.dev/blog/a-million-rows-twelve-divs</guid>
      <pubDate>Mon, 13 Jul 2026 07:52:22 GMT</pubDate>
      <description>A 1,000,000-row list where scrolling itself is virtual — Lenis owns position and momentum, the DOM holds a dozen rows between two spacers, and every operation is O(window). One 1,199-line ivue class runs all of it, live on this page.</description>
      <enclosure url="https://ivue.dev/blog/a-million-rows-twelve-divs.png" type="image/png" length="0" />
    </item>
    <item>
      <title>computed() is a cache, not a derivation</title>
      <link>https://ivue.dev/blog/computed-is-a-cache</link>
      <guid isPermaLink="true">https://ivue.dev/blog/computed-is-a-cache</guid>
      <pubDate>Mon, 13 Jul 2026 07:51:22 GMT</pubDate>
      <description>Vue's derivation primitive was always the tracked read. Memoizing everything by default was never neutral — it was just unexamined.</description>
      <enclosure url="https://ivue.dev/blog/computed-is-a-cache.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Inheritance didn't deserve the exile</title>
      <link>https://ivue.dev/blog/inheritance-exile</link>
      <guid isPermaLink="true">https://ivue.dev/blog/inheritance-exile</guid>
      <pubDate>Mon, 13 Jul 2026 07:50:22 GMT</pubDate>
      <description>The composition-over-inheritance recoil corrected an abuse, then outlawed a tool. Reactive super chains show what it cost.</description>
      <enclosure url="https://ivue.dev/blog/inheritance-exile.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Measured, not promised</title>
      <link>https://ivue.dev/blog/measured-not-promised</link>
      <guid isPermaLink="true">https://ivue.dev/blog/measured-not-promised</guid>
      <pubDate>Mon, 13 Jul 2026 07:49:22 GMT</pubDate>
      <description>Every performance number on this site comes from a measurement we ran — with its method attached, most of them re-runnable right in your browser, on the shipped engine. Measured, not promised. That's the whole idea.</description>
      <enclosure url="https://ivue.dev/blog/measured-not-promised.png" type="image/png" length="0" />
    </item>
    <item>
      <title>One kilobyte is a feature</title>
      <link>https://ivue.dev/blog/one-kilobyte-feature</link>
      <guid isPermaLink="true">https://ivue.dev/blog/one-kilobyte-feature</guid>
      <pubDate>Mon, 13 Jul 2026 07:48:22 GMT</pubDate>
      <description>1.1 kB is not a compression achievement — it is what remains when a design stops needing machinery. Small enough to read, small enough to trust.</description>
      <enclosure url="https://ivue.dev/blog/one-kilobyte-feature.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Composables are organs, not skeletons</title>
      <link>https://ivue.dev/blog/organs-not-skeletons</link>
      <guid isPermaLink="true">https://ivue.dev/blog/organs-not-skeletons</guid>
      <pubDate>Mon, 13 Jul 2026 07:47:22 GMT</pubDate>
      <description>The ecosystem's decade of composables is not ivue's rival — it's the substrate. Classes give the body a spine; composables keep doing what they do best.</description>
      <enclosure url="https://ivue.dev/blog/organs-not-skeletons.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Your objects are rented from the framework</title>
      <link>https://ivue.dev/blog/rented-objects</link>
      <guid isPermaLink="true">https://ivue.dev/blog/rented-objects</guid>
      <pubDate>Mon, 13 Jul 2026 07:46:22 GMT</pubDate>
      <description>If your domain logic only exists while a component is mounted, you don't own your objects — you lease them. On evicting the landlord.</description>
      <enclosure url="https://ivue.dev/blog/rented-objects.png" type="image/png" length="0" />
    </item>
    <item>
      <title>this.method, finally safe to pass</title>
      <link>https://ivue.dev/blog/this-method-era</link>
      <guid isPermaLink="true">https://ivue.dev/blog/this-method-era</guid>
      <pubDate>Mon, 13 Jul 2026 07:45:22 GMT</pubDate>
      <description>A decade of () =&gt; this.method() wrappers, .bind(this) rituals, and shipped undefined-this bugs — ended by binding methods lazily, once, on the prototype.</description>
      <enclosure url="https://ivue.dev/blog/this-method-era.png" type="image/png" length="0" />
    </item>
    <item>
      <title>The 20,000,000-cell document</title>
      <link>https://ivue.dev/blog/twenty-million-cells</link>
      <guid isPermaLink="true">https://ivue.dev/blog/twenty-million-cells</guid>
      <pubDate>Mon, 13 Jul 2026 07:44:22 GMT</pubDate>
      <description>A spreadsheet Google Sheets cannot represent, fully reactive at 4.7 bytes per cell — and you can create it in your browser right now.</description>
      <enclosure url="https://ivue.dev/blog/twenty-million-cells.png" type="image/png" length="0" />
    </item>
    <item>
      <title>Introducing ivue: plain classes, full reactivity, one kilobyte</title>
      <link>https://ivue.dev/blog/introducing-ivue</link>
      <guid isPermaLink="true">https://ivue.dev/blog/introducing-ivue</guid>
      <pubDate>Mon, 13 Jul 2026 06:27:08 GMT</pubDate>
      <description>The launch post — why the field abandoned classes for the wrong reason, what the derivation primitive actually is, and the measured numbers behind a 1.1 kB answer.</description>
      <enclosure url="https://ivue.dev/blog/introducing-ivue.png" type="image/png" length="0" />
    </item>
  </channel>
</rss>
