explaingit

ripple-ts/ripple

7,344JavaScriptAudience · developerComplexity · 3/5Setup · moderate

TLDR

A TypeScript UI framework for building web interfaces with fine-grained reactivity, a custom .tsrx component format, and a companion compiler that can target React or Solid instead of Ripple's own runtime.

Mindmap

mindmap
  root((Ripple))
    What it does
      UI framework
      Fine-grained reactivity
      Custom component format
    Tech Stack
      TypeScript
      JavaScript
    Features
      track function
      Reactive data structures
      Scoped styles
      VS Code extension
    Compile Targets
      Ripple runtime
      React
      Solid
    Audience
      Frontend developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a reactive web app where only the exact parts of the page that depend on changed data update, not entire sections.

USE CASE 2

Write UI components in the .tsrx format and compile them to React or Solid output so you can migrate away from Ripple later.

USE CASE 3

Use the VS Code extension to get syntax highlighting and real-time type checking for .tsrx component files.

Tech stack

TypeScriptJavaScript

Getting it running

Difficulty · moderate Time to first run · 30min

Uses a custom .tsrx file format requiring the VS Code extension or ESLint/Prettier integrations for a smooth development experience.

The explanation does not mention the license.

In plain English

Ripple is a TypeScript framework for building web user interfaces. TypeScript is a programming language that adds type checking to JavaScript, and a UI framework provides the structure for building interactive web pages. Ripple was created by a developer who has previously contributed to React, Svelte, and other well-known UI frameworks. The central idea is fine-grained reactivity, which means the framework tracks exactly which parts of your page depend on which pieces of data, and updates only those parts when the data changes. This is meant to make updates faster and more predictable than approaches that re-render larger sections of the page at once. Reactive state is created with a function called track, and the framework also provides reactive versions of common data structures like arrays, objects, maps, and sets that automatically trigger updates when modified. Components, the building blocks of a Ripple app, are written in a file format with the .tsrx extension. This is a TypeScript variant with its own syntax: instead of returning markup from a function as in React, you write the markup directly inside the component body. The component keyword, if and for blocks in the template, and built-in error boundaries are all part of the syntax. The framework includes developer tooling: a VS Code extension provides syntax highlighting, autocomplete, and real-time diagnostics. Prettier and ESLint integrations are also available. Component styles are scoped automatically to prevent one component's CSS from affecting another. A companion project called TSRX lets you write components in the same .tsrx format but compile them to React, Solid, or Ripple's own runtime, so you are not locked into Ripple's runtime from the start. Getting started requires running a single CLI command, and a playground is available online.

Copy-paste prompts

Prompt 1
I'm starting a new project with the Ripple framework. Show me how to create a component in .tsrx that tracks a counter state with the track function and displays the count.
Prompt 2
How do I use Ripple's reactive array to build a todo list where adding or removing items automatically updates only the changed part of the page?
Prompt 3
I want to try the TSRX compiler to write a component that compiles to React output instead of Ripple's runtime. Show me the setup and an example component.
Prompt 4
How do I add scoped CSS to a Ripple .tsrx component so its styles don't affect other components on the page?
Open on GitHub → Explain another repo

← ripple-ts on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.