How three.js is put together
three.js is a browser-side JavaScript 3D rendering library published as the npm package 'three' (v0.185.0), built as pure ES modules with no runtime dependencies. The core library lives in src/ and is bundled by Rollup into multiple builds (three.module.js, three.cjs, three.webgpu.js, three.tsl.js) exposing WebGL/WebGPU renderers plus scene-graph, materials, loaders, and node-based shader systems. The repo also ships a browser-based 3D editor (editor/), a Chrome DevTools extension (devtools/), a manual (manual/), and Node.js tooling under utils/ including a local static file server for development. Data flow is client-only: user code constructs scenes/cameras/renderers that draw to canvas via WebGL/WebGPU APIs; the editor persists project state to window.localStorage.
Languages
Frameworks
Infrastructure
Major components
Core library (src/, build/)
The three.js scene graph, math, materials, geometries, loaders, and WebGL/WebGPU renderers, pre-bundled into ESM/CJS/WebGPU/TSL entry points.
Editor (editor/)
A full in-browser 3D scene editor with command-based undo history, sidebar property panels, menubars, viewport controls, and localStorage-backed configuration.
DevTools extension (devtools/)
A Chrome DevTools extension (background, content-script, bridge, panel) for inspecting live three.js scenes.
Dev server & tooling (utils/)
Node.js utilities including a zero-dependency static file server with MIME handling, range requests, and directory listings, plus build/changelog scripts.
Test infrastructure (test/)
Puppeteer-driven unit tests (headless/headful) over UnitTests.html pages, e2e screenshot tests, WebGPU e2e, and tree-shaking bundle checks.
Documentation (manual/, docs pipeline)
HTML tutorial pages under manual/pages plus JSDoc-generated API docs and an llms.txt builder.
Linting & code style (eslint.config.js)
Flat ESLint config enforcing the mdcs style guide, single quotes, prefer-const, JSDoc type checks, and compat/browser-API rules across src, examples, editor, manual, test, and utils.
A quieter week focused on renderer disposal, shadow-map reliability, and editor group selection.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week focused on renderer disposal, shadow-map reliability, and editor group selection.
Week of 2026-08-17
A large week dominated by a brand-new suite of GPU-native unit tests that caught many real math bugs in TSL.
Week of 2026-08-10
Gaussian Splatting matured rapidly while a new SunLight with cascaded shadows landed in WebGLRenderer.
Week of 2026-08-03
Gaussian Splatting arrived as a full TSL-based renderer with glTF import, alongside a direct render pipeline option.
Week of 2026-07-27
WebXR received major quality upgrades including MSAA anti-aliasing, while the inspector tool gained split-screen views.
Over the past five weeks, three.js development has centered on its next-generation WebGPU renderer and the TSL shader language, with a big push on GPU-native unit testing, new lighting features like cascaded shadow maps for sun-like lights, and a fast-growing Gaussian Splatting pipeline. The visual editor and inspector tools also saw steady polish, while numerous loaders (FBX, USD, Rhino3dm, SPZ, 3MF) gained fixes and new capabilities. Later weeks shifted toward cleanup and hardening: async renderer disposal, memory-leak fixes, and better test coverage.
Week by week
2026-08-24A quieter week focused on renderer disposal, shadow-map reliability, and editor group selection.latest6 changes
Feature
Async renderer disposal
The renderer gained a dispose() method that can clean up asynchronously, making shutdown safer.
Fix
Lighter anti-aliasing pass
The SSAO-style post-processing pass now uses single-sample render targets to save memory.
Fix
Dynamic shadow map detection
The node-based lighting system now notices when shadow map sizes change so shadows update correctly.
Feature
Editor group selection
The built-in scene editor now lets users select whole groups of objects at once.
Chore
More GPU unit tests
New GPU tests cover area lights, point lights, environment lighting, and post-processing utilities.
Chore
Removed ecsy example
An outdated example using the ecsy library was removed from the examples collection.
2026-08-17A large week dominated by a brand-new suite of GPU-native unit tests that caught many real math bugs in TSL.6 changes
Chore
GPU-native TSL unit tests
A new testing system runs shader-language functions directly on the GPU, with broad coverage of math, color, packing, and logic operations.
Fix
Batch of TSL math bug fixes
The new tests exposed and fixed bugs in rotate(), sinc(), determinant(), faceForward(), gain(), and pcurve() functions.
Feature
Volumetric fog example
A new example demonstrates realistic fog rendered through post-processing.
Refactor
Tree-shaking friendly nodes
Shader node code was restructured so unused parts can be stripped from builds, shrinking bundle sizes.
Feature
SunLight moved to addons with two cascades
The sun-lighting feature became an official add-on and now uses two shadow cascades instead of more.
Fix
WebGL readback cleanup
Fixed leftover GPU buffer bindings after asynchronous pixel reads that could cause glitches.
2026-08-10Gaussian Splatting matured rapidly while a new SunLight with cascaded shadows landed in WebGLRenderer.6 changes
Feature
SunLight with cascaded shadow maps
WebGLRenderer gained a dedicated sun light that renders sharp shadows over large outdoor scenes using cascaded techniques.
Refactor
Gaussian splat performance work
Splat rendering got faster bounding-box generation, packed colors, per-mesh culling, and correct sorting when objects move.
Feature
View-dependent splat shading
Gaussian splats now use spherical harmonics so they change appearance realistically as the camera moves.
Feature
Order-independent transparency pass
A new render pass lets transparent objects blend correctly regardless of draw order.
Feature
SPZ v4 and 3MF beam lattice support
Loaders added support for the newest SPZ splat format and basic beam-lattice geometry in 3MF files.
Feature
Multi-touch trackball controls
The orbit-style camera control now supports rotating with multiple fingers on touch devices.
2026-08-03Gaussian Splatting arrived as a full TSL-based renderer with glTF import, alongside a direct render pipeline option.6 changes
Feature
Gaussian Splat renderer and loader
A complete splat-rendering system using the shader language shipped, working on both WebGPU and WebGL and loading via glTF.
Feature
DirectRenderPipeline
WebGPURenderer gained a simpler direct rendering mode for scenes that don't need intermediate passes.
Refactor
Rhino3dm loader improvements
The Rhino 3D file loader got faster loading, physically-based materials, and editor import support.
Fix
Depth-of-field memory leak fixed
The depth-of-field effect no longer leaks GPU memory when it is set up repeatedly.
Feature
FBX multi-clip timelines
FBX animation files containing several clips on one timeline now load correctly.
Fix
Physical material specular fix
Node-based physical materials had broken specular highlights that were corrected.
2026-07-27WebXR received major quality upgrades including MSAA anti-aliasing, while the inspector tool gained split-screen views.6 changes
Feature
MSAA for WebXR
VR/AR sessions on WebGPU now support multi-sample anti-aliasing for smoother edges in headsets.
Feature
Inspector split screen and revisions
The debugging inspector added side-by-side views, grid layouts, and revision history.
Fix
WebXR transmission fix
Glass-like transmission materials now render correctly during VR sessions.
Feature
Object3D.dispose()
Scene objects gained a standard way to release their resources when removed.
Feature
GLTFExporter copyright notice
Exported glTF files can now include a custom copyright notice.
Fix
XR camera restore and loader fixes
Camera settings are restored after VR sessions end, and image loading regressions were repaired.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 225 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required