Every major technology shift happened when one part of the stack collapsed with another.

For example: Web apps collapsed cross-platform development. Instead of developing two or three versions of your app, you now develop one, available everywhere!

Node.js collapsed client and server development. You get one language instead of two! You can share code between them!

Docker collapsed the distinction between dev and prod.

React collapsed HTML and JS, Tailwind collapsed JS and CSS.

Sync engines collapse the database and the server. If your database is smart enough and capable enough, why would you even need a server? Hosted database saves you from the horrors of hosting and lets your data flow freely to the frontend.

Source: Sync Engines are the Future

A quick and dirty overview of popular JS frameworks. Also downloadable in PDF format.

Framework

Developed By

Where to Use

Key Features

Limitations

Blazor

Microsoft

Uis, full-stack applications using C#

– .NET libraries and tools

– C#, not Javascript

– WebAssembly C# execution (near-native)

modern browser support

– works with any JS library

– not widely used or adopted

– best for Microsoft-oriented teams

– slower than React (no Virtual DOM)

React.js

Facebook

Ideal for building interactive UIs, complex SPAs, and mobile applications.

– Component-based architecture
– Virtual DOM (very fast UI)
– Large ecosystem of libraries

– Steeper learning curve for beginners
– Can lead to boilerplate code in larger apps

Angular

Google

Suitable for enterprise-level applications and complex SPAs with dynamic views.

– Two-way data binding
– Dependency injection
– Powerful routing model

– Performance overhead in large apps
– Steeper learning curve due to comprehensive tools

Vue.js

Evan You

Great for small to medium-sized projects, and when progressive adoption is needed.

– Easy integration
– Incremental adoption
– Strong community support

– Smaller ecosystem compared to React/Angular
– Fewer enterprise opportunities

Svelte

Rich Harris

Best for performance-sensitive applications and smaller projects.

– Easy and concise syntax
– Scoped styles
– No virtual DOM

– Newer framework with limited community support
– May require adjustment for existing devs

Ember.js

Yehuda Katz

Excellent for ambitious web applications needing convention over configuration.

– Built-in routing and data management
– Rich community resources

– Larger application size
– Steeper learning curve due to complex concepts

Backbone.js

Jeremy Ashkenas

Good for lightweight projects where flexibility is needed.

– Lightweight framework
– Modular development approach

– More boilerplate code required
– Manual code organization can complicate scaling

Aurelia

Rob Eisenberg

Suitable for large applications needing a modern framework with modularity.

– Modular architecture
– Supports TypeScript
– Powerful router

– Limited ecosystem compared to established frameworks
– Somewhat less mature tooling

Mithril.js

Mithril Team

Best for small projects where performance is critical.

– Lightweight and fast
– Strict structure for consistency

– Potential overhead with bundle size
– Vendor lock-in concerns

Polymer

Google

Ideal for developing web components and applications with reusable components.

– Focus on reusable components
– Interoperable with any JS framework

– Steeper learning curve
– Limited community support compared to larger frameworks

Alpine.js

Alpine.js Team

Best for smaller projects needing interactivity without heavy frameworks.

– Lightweight
– Declarative syntax
– Component-based architecture

– Relies on DOM manipulation
– Learning curve for newcomers to its reactive model