mrkeyoor.com_
Sat 12 Sept 13:54 UTC
Webevaluationupdated 12 Sept 2026

Babylon.js review

Babylon.js is a TypeScript engine for drawing and interacting with 3D scenes in a web browser. It handles the browser graphics layer for games and visual applications, with npm packages plus online tools for trying scenes, inspecting assets, and writing shaders.

trackingstars / 7d
Verdict

Our Babylon.js checkout installed 1,401 packages and used 1,401 MB in 137 seconds, then the test command ended with 1 failed file despite 5,013 passing tests. That contributor cost is substantial, although an application can start with a focused @babylonjs/core install instead of the whole monorepo. Use Babylon.js when your browser project needs a broad 3D engine and serious authoring tools; choose a thinner renderer for a small scene or a 2D library for sprites.

We ran it

Lab card: what happened when we ran Babylon.jsScreenshot of Babylon.js (www.babylonjs.com)
Install✓ · 137s1401 packages · 1401 MB
Buildn/ano build script
Tests✗ · 175sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo9136 files~1,050,202 lines of source · 779.4 MB · 1 CI workflows

Answers from our run

Does Babylon.js build from source?

Dependencies installed in 137 seconds (1401 packages), and the project has no separate build step. We cloned commit 5560048 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Babylon.js's tests pass?

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

Does Babylon.js have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use Babylon.js?

Production teams planning to load the engine from Babylon's public CDN: the README explicitly limits that CDN to learning and small experiments.

What are the alternatives to Babylon.js?

Three.js, PlayCanvas Engine, PixiJS. Our Babylon.

Setup3/5Simple app install; the 1,401-package contributor setup is heavy
Docs4/5README is brief, with deeper docs and browser tools elsewhere
Community5/526,052 stars, a same-day push, and weekly feature releases
Maturity4/5Version 9.26.0 is active; one test file failed in our run

Who it’s for

Web teams building 3D games, product viewers, simulations, or XR scenes in JavaScript or TypeScript.
Developers who want typed ES modules and the option to import individual engine classes for tree shaking.
Graphics teams that will use the browser playground, asset sandbox, shader editor, and Inspector during development.
Contributors comfortable working in a large npm workspace with separate build and browser-test paths.

Who it’s NOT for

Production teams planning to load the engine from Babylon's public CDN: the README explicitly limits that CDN to learning and small experiments.
Small 2D projects that do not need a 3D scene engine: PixiJS has a narrower 2D rendering focus.
Contributors who require every pinned commit to pass the standard test command: our run of commit 5560048 ended with 1 failed test file.
WebGPU XR teams that require an end-to-end pixel harness in CI today: issue 18765 says the available harness crashes the renderer tab on the Azure Linux agent and is not wired into CI.
Renderers that need mixed-metallic glTF PBR output accepted without visual validation: open issue 16840 reports incorrect energy conservation for those materials.

Setup reality

Our Node 22 sandbox installed 1,401 packages in 137 seconds and used 1,401 MB. The lab found no default build script or target, so it skipped the build step. Tests exited 1 after 175 seconds: 356 test files passed, 1 failed, and 1 was skipped; 5,013 tests passed, 1 was an expected failure, and 60 were skipped. npm audit found 0 known vulnerabilities.

Application setup is much smaller in concept: the README offers babylonjs or scoped @babylonjs ES modules with typings. Repository work requires a supported Node release, npm 11.18+, workspaces, and a specific build command such as build:dev, build:umd, or build:es6.

The public Babylon CDN is for learning and experiments, not production. Contributors also face browser and graphics-specific checks beyond the unit command; issue 18765 documents a WebGPU XR harness that runs locally through SwiftShader but crashes after its first rendered frame on the Azure Linux agent.

The app package is smaller than the 779.4 MB repository

Babylon.js gives browser developers a scene engine. The README's starter creates an engine, scene, camera, light, sphere, and ground, then runs a render loop against a canvas. Applications can install the older babylonjs package or use scoped ES modules such as @babylonjs/core. Individual imports support tree shaking; separate packages cover loaders and extensions. That lets an application pay for less than the full contributor checkout.

The online tools shorten the first hour. A browser playground runs API examples, the Sandbox accepts Babylon and glTF scenes, and a shader tool provides a place to work on GLSL. Release 9.26.0 also added an OpenUSD WebAssembly scene loader, object-ID geometry textures, Inspector v2 contribution APIs, and initial Babylon Lite support in Inspector v2. This is an engine with debugging and content tools around it.

Contributors inherit a 1,401 MB workspace

commit 5560048 contained 9,136 files and roughly 1,050,202 lines of source before installation. The checkout itself measured 779.4 MB. After npm finished, dependencies occupied another 1,401 MB. Those figures describe repository development on our box, not the size of @babylonjs/core inside a finished bundle. Forks and engine contributions need storage and CI capacity beyond the one-line consumer install.

The root package requires Node ^20.19.0, a supported Node 22 release, or a supported Node 24 release, plus npm 11.18 or newer. Its workspaces span packages/**/*, and there is no single root build command. Instead, maintainers choose jobs such as build:dev, build:umd, build:es6, or narrower source and asset builds. The contribution guide asks pull requests to run build:dev, unit tests, and relevant visualization tests. Picking the correct lane is part of working in this repository.

What happened when we ran it

Our sandbox installed 1,401 npm packages in 137 seconds, leaving 1,401 MB on disk. The lab's standard build check found no default script or target, so the build step was skipped. That result does not say the repository cannot be built; it says this monorepo expects one of its named build variants rather than a plain build command. We did not run a substitute build command, and there is no build timing to report.

Tests ended with exit code 1 after 175 seconds. Vitest reported 356 passing files, 1 failed file, and 1 skipped file out of 358. At test level, 5,013 passed, 1 was marked as an expected failure, and 60 were skipped out of 5,074. The failing file stopped during an import from packages/dev/smartFilterBlocks/src/blocks/index.ts; the log tail points at the line that re-exports compositionBlock.js. It does not show enough to assign a cause.

Npm audit reported 0 known vulnerabilities across the installed dependency set: 0 critical, high, moderate, or low findings. Our repository scan found 1 GitHub Actions workflow, no Dockerfile, no root tests directory, and npm workspaces. The README also displays an Azure Pipelines build badge, so the GitHub workflow count is not a complete picture of upstream automation. These measurements cover commit 5560048 in an unprivileged 3-CPU, 8 GB Node 22 container.

WebGPU XR still lacks one end-to-end CI harness

Open issue 18765 documents a WebGPU XR pixel harness that is available on a branch but not wired into CI. The report says it runs through SwiftShader on a machine without a GPU and that the relevant regression has a unit test. On the Azure Linux agent, however, the browser renderer crashes after the first frame. Teams shipping WebGPU XR should keep their own device and browser acceptance tests instead of treating the existing unit coverage as an end-to-end rendering check.

Another open report, issue 16840, concerns mixed metallic values in glTF PBR materials. Its author says the current calculation is not energy conserving and supplies furnace and iridescence comparisons. This is a narrow rendering case, but exactly the kind that screenshots and reference scenes catch better than API tests. A product whose approval depends on physically based material fidelity should run its own asset corpus across intended browsers and GPUs before locking an engine version.

Releases 9.23, 9.25, and 9.26 arrived in three weeks

Version 9.23.0 shipped on August 27, 9.25.0 on September 3, and 9.26.0 on September 10, 2026. Those releases include work on WebXR, Gaussian splatting, WebGPU fixes, OpenPBR, loaders, Inspector v2, and OpenUSD. Frequent releases are useful for browser graphics because GPU and browser behavior moves quickly. They also make version pinning and visual regression tests important; a team can choose when to absorb engine changes instead of receiving them with every install.

GitHub recorded the last push on September 12, 2026, with 26,052 stars, 8 open issues, and 16 open pull requests. The low issue count is partly shaped by project policy: the contribution guide sends questions to the official forum and reserves GitHub issues for bugs and feature requests. Combined with the weekly releases and same-day push, the activity points to active maintenance rather than a quiet issue tracker being mistaken for health.

Use the full engine only when the scene needs it

Babylon.js is a sensible choice for a browser project that needs a scene graph, typed modules, asset loaders, inspection, and an established playground in one ecosystem. Start with scoped ES module imports, host production files on your own CDN, pin the engine version, and save reference screenshots for the materials and devices that matter. The 1 failed file in our 5,074-test run is a reason to check the exact commit, not a reason to dismiss 5,013 passing tests.

Three.js is the better comparison when you want a renderer-first library and will assemble more structure yourself. PlayCanvas Engine is worth testing when its runtime and editor workflow match the team. PixiJS removes the unused 3D surface for a 2D product. Babylon.js earns the heavier commitment when its engine-level tools replace code you would otherwise have to select, connect, and maintain.

Alternatives

ProjectWhat it isPick it when
Three.js gh↗A JavaScript 3D library with a renderer-first API and a large example collection.pick this instead when you want a thinner rendering layer and prefer assembling more of the application structure yourself.
PlayCanvas EngineA web graphics runtime covering WebGL, WebGPU, WebXR, and glTF.pick this instead when the PlayCanvas runtime and its editor-centered workflow fit your team better than Babylon's code and browser tools.
PixiJSA browser renderer focused on fast 2D graphics rather than full 3D scenes.pick this instead when sprites, interfaces, or other 2D content are the job and a 3D engine would add unused surface area.

What people are saying

  1. [velocity-scout] BabylonJS/Babylon.js

Sources

  1. Babylon.js repository and README
  2. Babylon.js measured commit 5560048
  3. Babylon.js root package configuration
  4. Babylon.js contribution guide
  5. Babylon.js 9.26.0 release
  6. WebGPU XR end-to-end CI issue 18765
  7. glTF PBR mixed-material issue 16840

More web reviews

Folo · react-navigation · 30-Days-Of-JavaScript · html5-boilerplate · p5.js · lighthouse · the whole board →