Ripple: The Elegant TypeScript UI Framework

https://news.ycombinator.com/rss Hits: 8
Summary

Ripple is a compiler-first TypeScript UI framework for building fast, clean, reactive applications with minimal boilerplate and optimal performance. Why the Frontend World Needs Ripple in 2026 Front-end development has reached an unusual point in its history: writing code is easy β€” maintaining it is hard. AI accelerated code output, but did not solve code quality, consistency, or review overhead. Traditional frameworks are powerful but often come with: verbose state handling over-rendering components heavy abstraction layers confusing refs/signals/hooks bloated bundle sizes Ripple was designed for this moment. It prioritizes simplicity, clarity, and reactivity. β€œCode should read like it does.” What is Ripple? Ripple is a compiler-first, fine-grained reactive UI framework with: TypeScript-first components reactive variables with track() + @ no Virtual DOM automatic dependency tracking inline control flow scoped CSS Ripple’s Design Goals 1. Compiler Before Runtime The compiler performs: DOM dependency analysis dead CSS removal scoped styling code transformation 2. Reactive by Default let count = track(0); <button onClick={() => @count++}>{@count}</button> No useState, ref(), .value, $:, or signals. 3. Low Cognitive Load Less to memorize. Business logic remains obvious. 4. Granular DOM Updates Only updated nodes mutate β€” not whole components. Getting Started Initialize a new project: npx create-ripple-app ripple-todo-app Move inside: If integrating manually: npm install ripple ripple-compiler ripple-dom Scripts npm run dev npm run build npm run preview Folder Structure my-ripple-app/ β”œβ”€ src/ β”‚ β”œβ”€ App.ripple β”‚ β”œβ”€ index.tsx β”‚ └─ components/ β”œβ”€ public/ β”œβ”€ ripple.config.ts β”œβ”€ tsconfig.json β”œβ”€ package.json Verify Setup component App() { <h1>{"Hello Ripple"}</h1> } If it renders, you’re ready. Ripple in 2 Minutes: Core Syntax Reactive Variables Read + Write <button onClick={() => @count++}>{@count}</button> Reactive Collections const todos = #[]; const user = #{ name: "Tom" ...

First seen: 2026-01-11 05:56

Last seen: 2026-01-11 12:57