A library that makes document.createElement() so awesome, you may not need React, Vue, or others.

RawJS is a better way to call document.createElement(). Create full HTML element hierarchies, build complex CSS styling, and wire event handlers, all without leaving JavaScript. RawJS is inspired by the belief that web frameworks ought to be disbanded in favor of web standards.

See the demo project.

RawJS isn't so much a library as it is a mindset.

At 2.3 KB, RawJS doesn't do much. What RawJS really does is open you up to the idea of zero-magic code. This is about clever use of the JavaScript language to DIY things like data-binding, controllers, list synchronization, and reusable components.

See how simple RawJS apps can be.

With RawJS, you can build seriously difficult UI in vanilla JavaScript.

And with outstanding results.

Think collaborative text editors, animators, and drag and drop design tools.

RawJS was initially built for Squares, a mobile media consumption app with a highly advanced UI. Squares was able to leverage the power of RawJS to craft an experience that feels so silky smooth, many users believe it's built with native technologies. RawJS has since grown and is now powering a variety of mission-critical web and mobile apps.

Check out Squares.

Wisdom > Party Tricks

Considering leaving React for something else? Don't be seduced by demos of databinding done with a few keystrokes less than last years framework. Excessive focus on optimizing for code length (especially in toy examples) often risks deoptimizing for actual time drains.

The RawJS mindset is about focusing on questions that matter.

How long with it take to find and fix bugs as our app grows?
How easily can our code be reused and refactored?
How do we reduce unexpected behavior?
Does this hold strong if we need to do something outside the box?

No hidden magic makes RawJS play nice with everything else.

Are you a Tailwind user? Or DaisyUI? Framework7? Are you a Svelte user, but you need to go raw with one component? No problem. RawJS returns plain HTMLElement objects. It has no virtual DOM of its own, so it's never an obstacle in the way of anyone else's.

Bet on time-tested web standards.

Way back it was all about Backbone.js. Then it was Knockout. Then Angular. Then Ember. Then React. Then new Angular. Then Vue. Then React again. Now it's Svelte. And there are about 500 others that were once “the current thing”.

Web frameworks have the lifespan of a gnat. You can exit the rat race by using RawJS to make subtle changes (but big improvements) to the ergonomics of creating DOM element heirarchies, which have been around since the 90's.

Not the fashionable web framework of the week.

Ready for production

RawJS has been the foundation of many apps. It's API design is complete and there are no known bugs. And it's unlikely to ever change in the future because it reached a point where there is both nothing left to add and nothing left to remove.

Check out RawJS on GitHub