Simple
Approachable
Approachable
Easy to understand: no macros, no category theory, no typed effects, few implicits, etc.
Scalable
Scalable
Simple abstractions that allow for precise control with no mental overhead, yet scale effortlessly for complex apps.
Native Scala.js
Native Scala.js
No dependencies on Javascript libraries or their concepts. No virtual DOM.
Expressive
Power of Scala
Power of Scala
Use Scala FP and/or OOP techniques instead of having to learn ad-hoc library features.
Observables
Observables
First-class streams and state variables in one integrated system – Airstream.
Diverse Building Blocks
Diverse Building Blocks
Everything is abstractable and composable – elements, attributes, attribute-value pairs, events, state, etc.
Safe
No FRP Glitches
No FRP Glitches
Exposing inconsistent state is considered normal in most popular streaming libraries. But not in our Airstream.
Memory Management
Memory Management
Unique subscription ownership mechanism provides fully automatic memory safety without boilerplate.
Scala.js > Typescript
Scala.js > Typescript
Scala's type system is richer, safer, and encourages better patterns than Typescript. Night and day.
Easy Integrations
Web Components
Web Components
Use Material UI or other Web Components just like any other JS dependencies.
React
React
Render Laminar elements inside React apps or the other way in just a few lines of code.
Anything Else
Anything Else
Laminar's direct API makes integrations with other JS / DOM / streaming / etc. libraries a breeze.
Well Loved
"Laminar has been a game changer for me. I never felt comfortable with the available Scala wrappers around React. Enter Laminar, which is lightweight and feels much more natural than what React ever did even when writing it in JavaScript."
"Having used react, cycle, etc, I've to say it's a delight to have Laminar on Scala.js. It just *feels* right, kudos to @raquo for learning and rethinking things instead of blindly following others."
"I've gotta say: Laminar is my favorite way of coding for the web by many miles. It's so ridiculously good!"
Get Started
When you have an hour, watch the video introduction below.
It explains both the big ideas and the mechanics behind Laminar.
Also, read about how and why Laminar came to be:
My Four Year Quest For Perfect Scala.js UI Development
Live app showing its own source code.
What sorcery is this?
Always current, explaining both high level ideas and gritty details. Worth reading back-to-back.
Quickstart, articles & videos, addons, starter kits, and other useful stuff.
Community
Our main chatroom is in Discord, join us there for news, tips & support!
Laminar is developed by Nikita Gazarov with generous support from my sponsors.
DIAMOND sponsor:
GOLD Sponsors:
Sponsorships enable me to spend more time on Laminar, Airstream, various add-ons, as well as documentation, learning materials, and community support. Thank you for making open source more sustainable. 🙏