# Introducing Inspector v2

**URL:** <https://forum.babylonjs.com/t/introducing-inspector-v2/60937>\
**Category:** Announcements\
**Tags:** inspector\
**Created:** [October 13, 2025, 7:41pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937 "2025-10-13T19:41:53Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 28, 2025, 12:05am UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/81 "2025-10-28T00:05:24Z")

</div>

Probably you may share the example?

As for me, currently I have the next error

`Could not resolve dependency:`  
`npm error peer @types/react@“>=16.8.0 <19.0.0” from @fluentui-contrib/react-virtualizer@0.1.0`  
`npm error node_modules/@fluentui-contrib/react-virtualizer`  
`npm error @fluentui-contrib/react-virtualizer@“0.1.0” from the root project`

But now after `npm i --force` and `npm run dev` everything seems to work. The testing branch is here - [GitHub - eldinor/React-and-Babylon.js-Inspector-v2 at test19](https://github.com/eldinor/React-and-Babylon.js-Inspector-v2/tree/test19) , would be nice not to use `npm i --force`

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 28, 2025, 3:55pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/82 "2025-10-28T15:55:51Z")

</div>

In your case, `npm i --force` is needed because your package.json has versions requirements that conflict. Specifically, for the error you are seeing above, it is because your package.json has ` "@fluentui-contrib/react-virtualizer": "0.1.0",` (indicating this exact version of this package is needed) and at the same time has `"@babylonjs/inspector": "8.33.3-preview",` which has its own peer dependency that is `"@fluentui-contrib/react-virtualizer": "^0.5.3",`. These two versioned dependencies on `@fluentui-contrib/react-virtualizer` are incompatible.

I’m guessing you have these explicit dependencies because you used the Inspector v2 samples as a starting point? Unfortunately those dependencies are explicitly listed in the samples because I couldn’t get codesandbox to work without them being explicit for some reason. I’ll need to investigate more so we don’t cause confusion on this.

In any case, the solution for your app would be to remove all the extra dependencies in the package.json and let npm resolve the peer dependency graph and package versions for you. E.g.

```json
  "dependencies": {
    "@babylonjs/inspector": "^8.33.3-preview",
    "react": "^19.1.1",
    "react-dom": "^19.1.1"
  },

```

☝🏻 That is what I have in my test project that I created from scratch with the commands from my previous post.

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 28, 2025, 6:08pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/83 "2025-10-28T18:08:08Z")

</div>

> [@ryantrem](#):
>
> I’m guessing you have these explicit dependencies because you used the Inspector v2 samples as a starting point?

That is true 🙂 The confusion came from Codesandbox example.

After removing extra dependencies finally everything works fine.

And now I have another question:  
Could it be possible to add some HTML to the ExtensionFeed description, for example the link to the source code of the extension?

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 28, 2025, 8:27pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/84 "2025-10-28T20:27:31Z")

</div>

We can definitely improve extension description support. Having just a string was a quick way to get started, but I definitely agree this is very limited. Some possibilities:

- Just allow for more well known properties. Right now the extension metadata is actually based off of package.json (because of the idea that one possible future direction for extensions would be to pull them from npm package feeds), so the simplest thing to do would be to just add and respect more package.json fields, like `repository`. This would probably be my vote right now.
- Allow for arbitrary html. This could work, but we’d have to sanitize it, and make sure it works ok in terms of default theming being applied.
- Allow for arbitrary markdown. This could be nice, but would require taking on a markdown library dependency, which would be the challenge.

If you think option 1 would work for your needs for now and have any interest in implementing it we’d be happy for the contribution. If not I could probably make the change later this week!

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 28, 2025, 10:28pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/85 "2025-10-28T22:28:36Z")

</div>

Option 1 seems to be logical, but there are other nice fields besides `repository` like `version`, `homepage`, `license`, and `people fields: author, contributors`

Option 2 (arbitrary html) also nice to have but probably we may create a Feature request to see the demand for it.

The big problem is where to find the installed extension after a teaching popup was closed. Probably there could be another button near “UnInstall” button, for example “Show” button which would call teachingMoment.

Also, would be great to have different colors for “Install” and “Uninstall” buttons.

> [@ryantrem](#):
>
> If you think option 1 would work for your needs for now and have any interest in implementing it we’d be happy for the contribution. If not I could probably make the change later this week!

I am still getting used to the Inspector v2 code, so better you make this change 🙂

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 29, 2025, 2:49pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/86 "2025-10-29T14:49:05Z")

</div>

I put another example from the Docs, GraphicsBudgetService into the testing branch. Now when showing the Inspector I have the next warning:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/8/5/8552fa29132b7cc68d6936bac0eeebf567baadeb.png)

Then after closing the error popup, I can install and uninstall the extension without any hassle.

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/4/6/4650e1977e559f4ab71013a0ed2641751aeded1c.png)

The testing branch is here - [GitHub - eldinor/React-and-Babylon.js-Inspector-v2 at Dynamic](https://github.com/eldinor/React-and-Babylon.js-Inspector-v2/tree/Dynamic)

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 30, 2025, 4:08pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/87 "2025-10-30T16:08:04Z")

</div>

If you’ve updated the version of the inspector package, it’s possible the local storage got in a bad state because of evolving code/patterns around extension management during our preview stage. If that’s the case, you could try clearing local storage. If it still repros, I can clone your repo and try to repro probably early next week. If it’s a bug we’ll definitely want to get to the bottom of it!

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 30, 2025, 5:42pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/88 "2025-10-30T17:42:25Z")

</div>

After clearing the local storage the error now appears not after loading the Inspector, but after the first attempt to install the extension. If I close the error popup and click Install again, everything works as expected.

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 30, 2025, 6:49pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/89 "2025-10-30T18:49:23Z")

</div>

Ok thanks for the update, I’ll have a look shortly!

---

<div class="post-metadata">

**Author:** ![cx20](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cx20/32/46_2.png) [@cx20](https://forum.babylonjs.com/u/cx20)\
**Post date:** [October 30, 2025, 8:07pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/90 "2025-10-30T20:07:27Z")

</div>

This may not be a bug, but the order of the displayed items seems to be different from before. Previously, they appeared to be sorted, but in v2 they no longer seem to be sorted. Is this the intended behavior?

> **[Babylon.js Playground](https://playground.babylonjs.com/#3I55DK%230)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL and WebGPU 3D scenes

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/3/0/307b6a2b1cdd83bb992a86b2108ad4febc0f1453.jpeg)

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 31, 2025, 12:15am UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/91 "2025-10-31T00:15:27Z")

</div>

It is kind of the intended behavior currently because getting the label is a little heavier so we can react immediately to changes (like the `name` property changing) and because of the virtualization we do to make scene explorer work with very large scenes. It’s definitely possible to have it sorted if folks find this valuable though!

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [October 31, 2025, 12:27am UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/92 "2025-10-31T00:27:52Z")

</div>

> [@ryantrem](#):
>
> It’s definitely possible to have it sorted if folks find this valuable though!

At least alphabetical sorting for identical nodes would be great (like in the old Inspector). Probably is possible also to add more settings for node sorting to make the using of the Inspector v2 even more convenient.

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [October 31, 2025, 6:52pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/93 "2025-10-31T18:52:02Z")

</div>

In this case the problem is that you are adding the service definition both statically (passed in with the `serviceDefinitions` property of the options) and also it is included in the list of service definitions for the dynamically installed extension, so it is double registering the same service. I sent a PR to show the change.

To make it easier to avoid such a problem, I think there are a couple things we could maybe do:

1. If the unique identity of the service conflicts with an existing one, and the service definition is actually the same object, the error could just tell you it is the same service being double registered (as opposed to two different services using the same identity). This probably would have given you more clues as to what was wrong.
2. It might help to converge the `serviceDefinitions` and the `extensionFeeds` options, such that there is only the concept of “extensions” but you could have some of them be pre-installed and optionally not uninstallable. Maybe collapsing these into one concept would make it easier to understand (though maybe more verbose in code), I’m not sure.

Happy to hear any other ideas that would help improve clarity or make issues easier to diagnose!

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [November 1, 2025, 1:05am UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/94 "2025-11-01T01:05:12Z")

</div>

Thank you very much!  
Now everything works as expected.  
I think I’ll simplify my testing repo to the bare minimum to avoid such issues 🙂

> [@ryantrem](#):
>
> To make it easier to avoid such a problem, I think there are a couple things we could maybe do

Option 2 seems to be less prone to user errors 🙂  
Will be there a way (or it already exists) for an extension to be pre-installed with possibility to uninstall?

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [November 1, 2025, 1:08am UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/95 "2025-11-01T01:08:27Z")

</div>

Another question.

Is it possible to add the ability to import GLB files (not just animations) into the scene via the Import extension? I believe this feature is in high demand.

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [November 4, 2025, 5:35pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/96 "2025-11-04T17:35:21Z")

</div>

> [@ryantrem](#):
>
> Hey @Dad72 - for preview, we don’t have a UMD package yet, and right now the plan is that UMD will be the way to use Inspector v2 directly in the browser without any bundling. I’ve clarified that in the original post under the [What does “preview” mean?](https://forum.babylonjs.com/t/introducing-inspector-v2/60937#p-264008-what-does-preview-mean-4) section. I will keep this thread updated as we make progress on the remaining feature and parity work, including when the UMD package is ready to go!

@Dad72 and anyone else who uses Babylon.js umd packages/bundles - we now have a umd package/bundle for Inspector v2:

- NPM - same as the esm bundle in that it uses a `-preview` version suffix and the `@preview` tag, so you can `npm install babylonjs-inspector@preview`. Here is the latest version as of this post: [https://www.npmjs.com/package/babylonjs-inspector/v/8.34.1-preview](https://www.npmjs.com/package/babylonjs-inspector/v/8.34.1-preview)
- You can also access it directly from the jsdelivr cdn. For example: [https://cdn.jsdelivr.net/npm/babylonjs-inspector@8.34.1-preview/babylon.inspector-v2.bundle.js](https://cdn.jsdelivr.net/npm/babylonjs-inspector@8.34.1-preview/babylon.inspector-v2.bundle.js)
- And it is available through the Babylon cdn here:
  - Latest: [https://preview.babylonjs.com/inspector/babylon.inspector-v2.bundle.js](https://preview.babylonjs.com/inspector/babylon.inspector-v2.bundle.js)
  - Specific version: [https://cdn.babylonjs.com/v8.34.1/inspector/babylon.inspector-v2.bundle.js](https://cdn.babylonjs.com/v8.34.1/inspector/babylon.inspector-v2.bundle.js)

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [November 4, 2025, 5:40pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/97 "2025-11-04T17:40:39Z")

</div>

> [@labris](#):
>
> Option 1 seems to be logical, but there are other nice fields besides `repository` like `version`, `homepage`, `license`, and `people fields: author, contributors`

I have a [PR](https://github.com/BabylonJS/Babylon.js/pull/17389) that adds all this extension metadata and improves the extensions dialog by exposing all the new metadata, changing the color of the Install/Uninstall buttons and changing their text to Get/Remove and adding icons, adding a green check for installed extensions, and some overall UX improvements in the extensions dialog.

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/7/9/79558cb013b8bb6f26f34aef856d923ed40a6c42.jpeg)

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [November 4, 2025, 5:42pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/98 "2025-11-04T17:42:49Z")

</div>

> [@labris](#):
>
> At least alphabetical sorting for identical nodes would be great (like in the old Inspector). Probably is possible also to add more settings for node sorting to make the using of the Inspector v2 even more convenient.

I thought about this some, and it will be a bit more involved to get predictable sorting behavior when entities are renamed or added, so I’ve added this to the list of feature requests in the [GitHub issue](https://github.com/BabylonJS/Babylon.js/issues/17293).

---

<div class="post-metadata">

**Author:** ![ryantrem](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/ryantrem/32/34010_2.png) [@ryantrem](https://forum.babylonjs.com/u/ryantrem)\
**Post date:** [November 4, 2025, 5:44pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/99 "2025-11-04T17:44:23Z")

</div>

> [@labris](#):
>
> Is it possible to add the ability to import GLB files (not just animations) into the scene via the Import extension? I believe this feature is in high demand.

I think this will be part of a broader effort for Inspector v2 around how we handle asset creation flows holistically. We are planning to tackle this after finishing parity, but be assured it is on our radar!

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [November 9, 2025, 1:45pm UTC](https://forum.babylonjs.com/t/introducing-inspector-v2/60937/100 "2025-11-09T13:45:14Z")

</div>

Seems it is impossible to dispose an animationGroup, for example in this sample PG - [https://playground.babylonjs.com/?inspectorv2=true#Z6SWJU#1144](https://playground.babylonjs.com/?inspectorv2=true#Z6SWJU#1144)

[Previous page](https://forum.babylonjs.com/t/introducing-inspector-v2/60937.md?page=4)

[Next page](https://forum.babylonjs.com/t/introducing-inspector-v2/60937.md?page=6)
