mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Webevaluationupdated 26 Aug 2026

qwik review

Qwik is a TypeScript framework for server-rendered web applications that resume in the browser instead of rebuilding the application through hydration. It serializes event listeners, component relationships, and state into HTML, then fetches an interaction's code when the user needs it.

+1stars / 7d
Verdict

Our Qwik checkout installed 2,079 packages and occupied 1,584 MB, then both its build and test commands exited 1. Qwik deserves a prototype when hydration is a measured bottleneck and the team accepts a different component model. Keep Qwik 2 away from an irreversible migration until the beta APIs and the router behavior your application depends on have passed your own production-shaped tests.

We ran it

Lab card: what happened when we ran qwikScreenshot of qwik (qwik.dev)
Install✓ · 33s2079 packages · 1584 MB
Build✗ · 5s
Tests✗ · 28sran, no count parsed
Repo4227 files~292,787 lines of source · 34.7 MB · 5 CI workflows · Dockerfile

Answers from our run

Does qwik build from source?

Dependencies installed in 33 seconds (2079 packages), and the build failed. We cloned commit 74b342c into a clean Debian container with 3 CPUs and no project-specific setup.

Do qwik's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use qwik?

Teams requiring a stable major release today: the main branch README says Qwik 2 is beta and sends Qwik 1 users to a separate branch.

What are the alternatives to qwik?

Astro, Next.js, SolidStart. Our Qwik checkout installed 2,079 packages and occupied 1,584 MB, then both its build and test commands exited 1.

Setup3/5Install passed; the obvious build and test commands both failed
Docs4/5Concepts and source workflows are detailed, though split across pages
Community5/522,050 stars and same-day issue and pull request activity
Maturity3/5Established project, but the current Qwik 2 line remains beta

Who it’s for

Teams building interactive, server-rendered sites where initial JavaScript work is a measured problem.
TypeScript developers willing to learn signals, QRLs, and Qwik's $ boundaries.
Projects that can evaluate Qwik 2 as a beta before committing a production migration.
Framework contributors comfortable with a large pnpm monorepo and optional Rust tooling.

Who it’s NOT for

Teams requiring a stable major release today: the main branch README says Qwik 2 is beta and sends Qwik 1 users to a separate branch.
Developers who need arbitrary class instances or streams in resumable state: Qwik's serialization guide says those values cannot cross a $ boundary.
Router-heavy applications unwilling to test beta regressions: open issue 8966 reports previously visited route loaders being fetched again on later SPA navigations in beta.38 through beta.40.
Contributors expecting pnpm build and pnpm test to work after install in a plain Node container: both commands exited 1 in our sandbox, and the documented initial source build is pnpm build.local.
Windows contributors who depend on the supplied Dev Container: the contribution guide warns that host volume permissions and ownership may prevent it from working properly.

Setup reality

Our sandbox install succeeded in 33 seconds, adding 2,079 packages and using 1,584 MB. The build exited 1 after 5 seconds because pnpm build printed its option list and told us to use pnpm build.local for an initial build. Tests exited 1 after 28 seconds; the log tail only showed the command wrapper failing, without a test name or assertion.

Creating an app uses npm create qwik@beta or the pnpm, Yarn, or Bun equivalent and needs no hosted credential in the starter command. Source work is stricter: the checked commit declares Node 22.18 or newer, pnpm 11.22 or newer, and pnpm build.local before development.

The full optimizer build also needs Rust and wasm-pack. Qwik offers Nix and a Docker Dev Container, though its contribution guide warns about Windows volume permissions. The repository is a 4,227-file monorepo with about 292,787 source lines, so framework contribution is a different commitment from trying a generated app.

Qwik serializes the work hydration normally repeats

Qwik serializes 3 categories of runtime information into HTML: event handlers, component boundaries, and application state. A small loader can catch an interaction and request the matching function without downloading and executing every component first. This is Qwik's central bet: page startup should not grow in direct proportion to all the interactive code present on that page.

That architecture matters only if your application has a startup problem worth changing frameworks for. Our checkout contained 4,227 files and roughly 292,787 lines of source, so adopting Qwik means buying into a sizable framework rather than adding a small optimization library. The reward is automatic splitting around QRLs and deferred code. The price is a programming model designed around code that may execute later, in another environment, after its surrounding scope has been serialized.

Dollar-sign boundaries rule out custom class instances

Qwik's $ boundaries allow only serializable data, and the docs exclude custom class instances and streams. component$, onClick$, and useTask$ are visible reminders that a closure may cross from server work into browser work. Qwik handles promises, dates, URLs, maps, sets, DOM references, and QRL-wrapped closures. A captured unsupported value can survive static analysis and then fail at runtime.

This is more than punctuation to memorize. State shape, module boundaries, side effects, and browser-only work all need to fit the resumability rules. React developers will recognize JSX and components, while the execution model remains different enough to warrant a real feature spike. The 34.7 MB checkout includes an optimizer, router, React integration, CLI, documentation, and end-to-end packages in one workspace. Debugging can therefore cross generated chunks and serialization boundaries that a conventional client-rendered component never creates.

What happened when we ran it

Our sandbox installed the commit 74b342c checkout in 33 seconds. Pnpm added 2,079 packages, and the installed tree occupied 1,584 MB. Installation was successful in the fresh Debian container with 3 CPUs and 8 GB of RAM. That is a heavy contributor environment before an editor cache or browser test artifact enters the picture, even though someone creating a normal Qwik application will install a smaller project than the framework monorepo.

The build exited 1 after 5 seconds. Its final output was a list of flags followed by Use pnpm build.local for initial build, which means the root pnpm build command behaves as a command dispatcher rather than the documented first build. The test command also exited 1 after 28 seconds. Its tail contained an execution wrapper with exit code 1 and Test failed, but no failed test name or assertion. We cannot tell more from that log, and we will not assign it a cause.

The contribution guide confirms the intended sequence: install dependencies, run pnpm build.local, then choose narrower build or test commands. A full build adds Rust and WebAssembly work; build.local copies optimizer binaries instead. The repository declares Node 22.18 or newer and pnpm 11.22 or newer. Five CI workflow files and a Dockerfile are present, while our scan found no directory literally named tests; test code instead lives across package and end-to-end workspaces.

Qwik 2 beta has open router and reactivity defects

Open issue 8966 reports that Qwik 2 beta.38 through beta.40 refetch route loaders from previously visited pages during later SPA navigations. Issue 8968 gives a beta.41 reproduction where a render crash in one sibling leaves an unrelated sibling's task and DOM updates frozen after the first click. Both reports include reproductions, but neither had a maintainer resolution when fetched. The main README labels Qwik 2 as beta and sends Qwik 1 users to a separate branch.

Project activity is not the concern. GitHub recorded a push on August 26, 2026, showed 22,050 stars, and listed 122 combined issues and pull requests. The latest GitHub release endpoint returned @qwik.dev/core@2.0.0-beta.38, published July 16, 2026. Its notes include changes to resume responsiveness, server rendering, async computed state, and error handling. The 5 CI workflows also indicate active automation. Those signals describe a maintained beta whose next major release is still unsettled.

The 1,584 MB checkout makes a prototype mandatory

Start with one route that resembles the hardest page you intend to ship. Include authenticated loaders, third-party components, error boundaries, analytics, and the deployment adapter you would use in production. Inspect shipped JavaScript and interaction behavior on a slower phone. Qwik's architecture can reduce eager browser work, but the repository run does not measure user-facing speed, and the project's broad performance claims are no substitute for your own page and traffic pattern.

The framework is easiest to recommend for a team that has already found hydration or eager JavaScript in a profile. A content-heavy site with a few interactive islands should compare Astro. A company whose risk sits in ecosystem coverage and staffing should compare Next.js. Qwik becomes the interesting choice when resumability addresses a known cost and the team is ready to design around serialization. Our 33-second install got the source onto disk, but the two exit-1 commands and current beta defects make a contained trial the sensible next decision.

Alternatives

ProjectWhat it isPick it when
Astro gh↗A content-focused web framework that adds client-side interactivity through selected islands.pick this instead when most pages are content and only a few components need browser JavaScript.
Next.js gh↗A React framework with server rendering, routing, and a much larger package ecosystem.pick this instead when React compatibility and hiring familiarity outweigh Qwik's resumability model.
SolidStartA full-stack Solid framework built around fine-grained reactive primitives.pick this instead when signals appeal to you but Qwik's serialization boundaries do not.

What people are saying

  1. [velocity-scout] QwikDev/qwik

Sources

  1. Qwik repository
  2. Qwik README
  3. Qwik contribution guide
  4. Qwik resumability concept
  5. Qwik serialization boundaries guide
  6. Qwik 2 beta.38 release
  7. Qwik Router loader refetch issue 8966
  8. Qwik sibling reactivity issue 8968

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →