ripple@0.4.4
Ripple-TS/rippleripple@0.4.4Sep 17, 2026by github-actions[bot]
Upgrading?
AI Summary
Focuses on performance improvements for SVG/MathML handling, element spreads, and template parsing, while fixing namespace issues for dynamic elements.
Key Highlights
- Faster element spreads, dynamic elements, and list items (up to 40% faster on benchmarks).
- Improved SVG/MathML namespace handling for dynamic elements and nested templates.
- Optimized template compilation by building single-element templates with DOM calls instead of parsing.
New Features
- Namespace preservation for dynamic elements inside SVG/MathML contexts.
- Optimized rendering of dynamic elements and list items.
Full Release Notes
### Patch Changes
- [#1496](https://github.com/Ripple-TS/ripple/pull/1496)
[`0473e93`](https://github.com/Ripple-TS/ripple/commit/0473e93006e53cd15fcf6d851443d427ccf13e8b)
Thanks [@leonidaz](https://github.com/leonidaz)! - Update `@tsrx/core` to ^0.2.3
and use its SVG and MathML tag-name predicates for dynamic class handling,
removing the compiler's duplicate tag-name list.
- [#1490](https://github.com/Ripple-TS/ripple/pull/1490)
[`ff3a26a`](https://github.com/Ripple-TS/ripple/commit/ff3a26acef0c9584cf41d32bc8cbcc39d863d74c)
Thanks [@leonidaz](https://github.com/leonidaz)! - Blocks keep the namespace
they were created in when they rerun. A dynamic element whose tag changes, an
`@if` that toggles, or an `@for` that grows inside an SVG that is only known at
runtime (children rendered into a component's `<svg>`, a leaf component rendered
there) now creates its elements in the SVG namespace instead of HTML, and a
nested template cloned in that context no longer throws before a namespaced
template has been parsed. A dynamic element whose tag becomes `foreignObject`
renders its children as HTML.
- [#1488](https://github.com/Ripple-TS/ripple/pull/1488)
[`b3bf787`](https://github.com/Ripple-TS/ripple/commit/b3bf78756d9235412a2af264e42897652e8f911e)
Thanks [@leonidaz](https://github.com/leonidaz)! - Build a template that is one
element with static attributes and at most a text child with DOM calls instead
of parsing it. Parsing a `<template>` has a fixed cost that dwarfs such an
element, and an app's first render pays it once per distinct template; a chain
of 100 single-element components mounts about 35% faster.
- [#1495](https://github.com/Ripple-TS/ripple/pull/1495)
[`1b8381f`](https://github.com/Ripple-TS/ripple/commit/1b8381f31f98f84049764ca56676fc320721e844)
Thanks [@leonidaz](https://github.com/leonidaz)! - Faster element spreads,
dynamic elements and list items. An element spread is applied from the element's
own render function instead of a render block of its own, and a spread object
identical to the one applied last is skipped without a diff (a spread of a
tracked object or of tracked values is always diffed). A dynamic element
(`<{tag}>`) is one block that owns its element and applies its attributes
itself; a tag that does not change keeps its element and diffs the attributes,
so a swap between variants with the same tag no longer recreates the element. An
`@if` whose condition reads tracked state is evaluated by the render function of
the enclosing content (a list item's, an element's), so the if keeps a block for
its branch but not one that runs the condition. A dynamic element or component
called inside an `<svg>` or `<math>` template receives the namespace as an
argument instead of a `with_ns` closure. A dynamic element without children is
driven by the render function of the content it sits in, with no block or
closures of its own (`_$_.dynamic`); a build that can hydrate lets a composite
block claim the server element while hydrating. With `textTypes`, an attribute
value TypeScript proves to be a string is set with a direct `setAttribute` call,
and a proven `class` takes the string-only path. On the SVG dashboard benchmark,
mounting is about 20% faster and swapping 150 dynamic icons 40% faster.
- Updated dependencies
[[`0473e93`](https://github.com/Ripple-TS/ripple/commit/0473e93006e53cd15fcf6d851443d427ccf13e8b),
[`b3bf787`](https://github.com/Ripple-TS/ripple/commit/b3bf78756d9235412a2af264e42897652e8f911e),
[`1b8381f`](https://github.com/Ripple-TS/ripple/commit/1b8381f31f98f84049764ca56676fc320721e844),
[`ff3a26a`](https://github.com/Ripple-TS/ripple/commit/ff3a26acef0c9584cf41d32bc8cbcc39d863d74c)]:
- @tsrx/ripple@0.2.3Related Repositories
affaan-m/ECC★ 285,772
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
react/react★ 251,624
The library for web and native user interfaces.
nodejs/node★ 122,521
Node.js JavaScript runtime ✨🐢🚀✨
Leonxlnx/taste-skill★ 100,621
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
louislam/uptime-kuma★ 92,731
A fancy self-hosted monitoring tool