Primate Framework Challenges JavaScript Ecosystem Fragmentation with Unified Stack Approach
Creator argues current meta-frameworks tie developers to specific stacks, while Primate offers a single application model supporting multiple languages and execution environments.
The creator of Primate, a new web framework, has published an article on the Superarch blog titled "Primate Is the Last Great Web Framework," arguing that the current JavaScript ecosystem suffers from excessive fragmentation and tight coupling between frontends, backends, and runtimes. The author contends that unlike meta-frameworks which lock users into specific stacks, Primate aims to own the entire development stack while allowing independent selection of frontend libraries, backend languages, and execution environments.
Drawing on experience with PHP frameworks such as Yii and Laravel, the author notes that these tools provided a coherent system where the framework owned the stack, including databases, templates, routing, and validation. In contrast, the JavaScript ecosystem prefers composition over cohesion, requiring developers to glue together separate tools for servers, databases, and frontends. The author argues that while each piece may be excellent individually, the lack of ownership over the seams leads to subtle failures where these tools meet.
Meta-frameworks are described as improving coherence but at the cost of significant lock-in. For instance, Next.js is tied to React, meaning switching to a different view layer like Solid or Svelte requires moving to a different meta-framework with entirely different conventions and backend assumptions. This pattern repeats across the ecosystem, with each frontend library getting its own meta-framework that solves similar backend problems in slightly different ways, forcing developers to relearn routing and deployment details with every switch.
Runtime fragmentation is highlighted as a worsening factor, with Node, Deno, and Bun being capable but often treated as incompatible or requiring Node-compatibility shims. Primate claims to support multiple runtimes, including Node, Deno, and Bun, without requiring runtime-specific code or bridging packages. The framework allows developers to run the same application on any of these runtimes without changing a single line of code, ensuring that the execution target does not dictate the application architecture.
The framework supports independent choice of frontend libraries such as React, Svelte, and Marko, as well as backend languages including TypeScript, Go, Ruby, and Python. Developers can write one route with React, another with Svelte, and another with Marko, while keeping the same backend model. The author acknowledges a current limitation where different frontend frameworks cannot share layouts, as a layout is rendered by a single frontend, though this may become possible later with web components.
Specific commands for running the framework were provided in the source material: `deno run -A npm:primate` for Deno and `bunx --bun primate` for Bun. The author emphasises that the point of Primate is not novelty or benchmark performance, but rather removing coupling, lock-in, and decisions made by others, allowing developers to stay within an official stack where the seams are the framework's responsibility.

