Skip to content

Conversation

@raphamorim
Copy link
Member

@raphamorim raphamorim commented Oct 2, 2025

This PR introduces Lip Gloss in JavaScript, powered by WebAssembly.

The primary goal of this work is to explore how Lip Gloss’s styling and rendering capabilities can be brought to the JavaScript ecosystem, enabling developers to use familiar styling primitives directly in web and Node.js environments.

Although not a current team priority, we’re developing this in the open to encourage community feedback, experimentation, and contributions.

Overview

  • This implementation should be considered a proof of concept. APIs and integration details are subject to change.
  • Lip Gloss core logic is compiled to WebAssembly, with bindings to make it usable in JavaScript.
  • The intention is not to fully stabilize or productionize this immediately, but to gather insights into feasibility and developer interest.

Status

  • Performance and developer ergonomics may evolve significantly as we iterate
  • Gather early feedback from the community

Usage

npm i --save @charmland/lipgloss

Check npmjs.com/package/@charmland/lipgloss for more details regarding API.

raphamorim and others added 17 commits October 2, 2025 07:45
Add comprehensive JavaScript bindings for lipgloss with WebAssembly support.
Includes support for styling, colors, borders, positioning, tables, lists, and trees.

- WebAssembly build target with TinyGo
- JavaScript API for Node.js, Bun, and Deno
- Complete style system bindings
- Memory management optimizations
- Test suite and examples
Built with TinyGo for JavaScript bindings support.
- Used task build command for proper tinygo build
- Applied wasm-opt optimization with -O3
- Updated wasmExec.js from tinygo targets
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants