- Dominic, a seasoned web developer with experience in Inferno JS, React, and Svelte, created Ripple, a TypeScript-first UI framework. ๐จโ๐ป
- Ripple aims to combine the best features of modern JS frameworks, focusing on developer experience and performance. ๐
- Ripple uses a custom file extension to tightly integrate with TypeScript, enabling better tooling and IDE support. ๐งฐ
- Components in Ripple are declared with the
componentkeyword and allow JSX-like syntax within TypeScript. ๐งฉ - Ripple's reactivity system builds on signals but simplifies their usage with a track function and ampersand notation for easier reading and writing. ๐ฆ
- Reactive collections (Arrays, Sets, Maps) are supported with reactive variants like RippleArray, which tracks updates and exposes reactive properties. ๐ฆ
- Dynamic components are supported via Tracked objects, allowing components to be swapped at runtime based on state changes. ๐
- Ripple leverages fine-grained reactivity for industry-leading performance and memory usage, avoiding the overhead of virtual DOM diffing. โก
- Side effects are managed using an
effectfunction, designed to be predictable and composable, addressing common issues in React. ๐งช - Ripple enforces a clear separation between logic and rendering by restricting JSX-like syntax to component bodies. ๐งฑ
- Control flow is simplified with
ifblocks andfor-ofloops, the latter including a built-in index label. ๐น๏ธ - Ripple templates are a superset of JSX, which might be polarizing but aims to summarize the best practices from the last decade of frontend development. ๐จ
- The framework emphasizes components, fine-grained reactivity, predictable side effects, and TypeScript as essential elements of modern web development. โ
- Ripple is a valuable exploration of how to package these elements for an improved developer experience, even if it's not immediately adopted for large-scale projects. ๐ก





