MCPcopy Index your code
hub / github.com/dimforge/rapier.js

github.com/dimforge/rapier.js @v0.19.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.19.3 ↗ · + Follow
1,527 symbols 3,414 edges 124 files 627 documented · 41%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

crates.io

<a href="https://discord.gg/vt9DJSW">
    <img src="https://img.shields.io/discord/507548572338880513.svg?logo=discord&colorB=7289DA">
</a>
<a href="https://github.com/dimforge/rapier.js/actions">
    <img src="https://github.com/dimforge/rapier.js/workflows/main/badge.svg" alt="Build status">
</a>
<a href="https://opensource.org/licenses/Apache-2.0">
    <img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg">
</a>






<strong>
    <a href="https://rapier.rs">Website</a> | <a href="https://rapier.rs/docs/">Documentation</a> |
    <a href="https://github.com/dimforge/rapier.js/tree/master/testbed2d/src/demos">2D examples (sources)</a> | 
    <a href="https://github.com/dimforge/rapier.js/tree/master/testbed3d/src/demos">3D examples (sources)</a>
</strong>

2D and 3D physics engines for the JavaScript programming language (official bindings).


Building packages manually

From the root of the repository, run:

./builds/prepare_builds/prepare_all_projects.sh
./builds/prepare_builds/build_all_projects.sh

Note that prepare_all_projects.sh only needs to be run once. It needs to be re-run if any file from the builds/prepare_builds directory (and subdirectories) are modified.

The built packages will be in builds/rapier2d/pkg, builds/rapier3d/pkg, etc. To build the -compat variant of the packages, run npm run build in the rapier-compat directory. Note that this will only work if you already ran prepare_all_projects.sh. The compat packages are then generated in, e.g., rapier-compat/builds/3d/pkg.

Feature selection

Multiple NPM packages exist for Rapier, depending on your needs: - @dimforge/rapier2d or @dimforge/rapier3d: The main build of the Rapier physics engine for 2D or 3D physics simulation. This should have wide browser support while offering great performances. This does not guarantee cross-platform determinism of the physics simulation (but it is still locally deterministic, on the same machine). - @dimforge/rapier2d-simd or @dimforge/rapier3d-simd: A build with internal SIMD optimizations enabled. More limited browser support (requires support for simd128). - @dimforge/rapier2d-deterministic or @dimforge/rapier3d-deterministic: A less optimized build but with a guarantee of a cross-platform deterministic execution of the physics simulation.

Bundler support

Some bundlers will struggle with the .wasm file package into the builds above. Alternative -compat versions exist which embed the .wasm file into the .js sources encoded with base64. This results in a bigger package size, but much wider bundler support.

Just append -compat to the build you are interested in: rapier2d-compat, rapier2d-simd-compat, rapier2d-deterministic-compat, rapier3d-compat, rapier3d-simd-compat, rapier3d-deterministic-compat.

Nightly builds

Each time a new Pull Request is merged to the main branch of the rapier.js repository, an automatic canary build is triggered. Builds published to npmjs under the canary tag does not come with any stability guarantee and does not follow semver versioning. But it can be a useful solution to try out the latest features until a proper release is cut.

Extension points exported contracts — how you extend this code

Vector (Interface)
(no doc) [2 implementers]
src.ts/math.ts
PhysicsHooks (Interface)
(no doc) [1 implementers]
src.ts/pipeline/physics_hooks.ts
IntoTypeValue (Interface)
(no doc) [1 implementers]
src/geometry/feature.rs
DebugInfos (Interface)
(no doc)
testbed2d/src/Gui.ts
InstanceDesc (Interface)
(no doc)
testbed3d/src/Graphics.ts
Rotation (Interface)
(no doc) [1 implementers]
src.ts/math.ts
SharedShapeUtility (Interface)
(no doc) [1 implementers]
src/geometry/shape.rs
DebugInfos (Interface)
(no doc)
testbed3d/src/Gui.ts

Core symbols most depended-on inside this repo

map
called by 215
src/geometry/collider_set.rs
into
called by 178
src/dynamics/rigid_body_set.rs
intoRaw
called by 127
src.ts/geometry/shape.ts
free
called by 110
src.ts/geometry/broad_phase.ts
get
called by 72
src.ts/coarena.ts
createCollider
called by 71
src.ts/pipeline/world.ts
createRigidBody
called by 66
src.ts/pipeline/world.ts
cuboid
called by 66
src/geometry/shape.rs

Shape

Method 1,202
Class 213
Function 79
Enum 25
Interface 8

Languages

TypeScript62%
Rust38%

Modules by API surface

src.ts/geometry/collider.ts123 symbols
src.ts/dynamics/rigid_body.ts109 symbols
src.ts/geometry/shape.ts93 symbols
src/geometry/collider.rs75 symbols
src/dynamics/rigid_body.rs69 symbols
src.ts/pipeline/world.ts67 symbols
src.ts/dynamics/impulse_joint.ts57 symbols
src.ts/control/ray_cast_vehicle_controller.ts52 symbols
src/control/ray_cast_vehicle_controller.rs51 symbols
src/control/character_controller.rs39 symbols
src.ts/math.ts39 symbols
src.ts/control/character_controller.ts37 symbols

For agents

$ claude mcp add rapier.js \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact