Explorer Search Improvements

Hey Developers,

We just added some new beta features to the Roblox Studio explorer filter! You can now search in Explorer by name, property, tags, classes, and subclasses.

1) first demo video

You can also search within a subtree or combine filter parameters.

2) search within subtree + filter combo

We’ve also added autocomplete functionality in some cases!

3) autocomplete

This new search syntax, in conjunction with the ability to bulk-select search results should greatly improve your Explorer search experience.

How to get these improvements

Available today as a bundled, opt-in beta feature called Advanced Explorer Filtering, these changes will be fully launched after we gather feedback from the community.

How it works

Here’s a walkthrough of the current search syntax (improvements and additions to come!)

Property Search

  • Properties can be searched through PropertyName=Value. Most properties are supported. This search works with partial matches, ignores spacing, and is case insensitive.

    • Locked=true will show you everything that is marked “Locked”. You should expect Terrain to come up, as it is technically a locked part. Locked=t will return the same result. Locked = true will also work.
  • Comparison operators: Health>50 will show every Humanoid with more than 50 health. This will work for ~=, >, <, <=, and >=. == will be an alias to =.

  • Instances are searchable by their name. Parent=Workspace will show you everything in the workspace.

  • Enums: Material=Plastic will show you every plastic part. This is a partial match, except when there is an exact match. Material=pla will show you every plastic AND SmoothPlastic part. An autocomplete will come up when you search for an enum property.

  • Fields are supported for vectors. Searching Position.X = 1 will show you everything with a position where X = 1. This will also work case insensitively and with comparison operators.

  • Vectors can also be searched for as a whole, with quotation marks. Position=“1,2,3” should give you everything with that exact position. This works with comparison operators, where every value is compared against the comparator. You can search for colors; for example, to find everything red, search Color="255,0,0”

4) property search

Bespoke Searches

  • classname:Part and c:Part will both show everything that is a Part.

  • is:BasePart will show everything that is a subclass of BasePart: Parts, MeshParts, etc.

  • tag:interactable will show everything that has the CollectionService tag of intractable. You can add this in the tag editor. Tags will autocomplete.

  • name:Dog will show everything with the name “Dog”. This is a legacy filter that has been carried over. Just typing the name (without name: prefix) will also search by name.

    • Note: A name is a sequence of characters that are alphanumeric, _, -, or . To specify a name with spaces or other symbols, you can wrap in double quotes.

      For example: “Red Team Spawn”. Searching for a name will show you everything with a piece of that name in its own, case insensitively. For example, Dog should show you Dog, Doge, Doggy, dog, but not Cat.

5) tag search

Ancestry Search

  • You can filter within a specific scope using the . operator. workspace.Model finds instances called ‘Model’ inside instances called ‘workspace’, similar to scripting.

  • Chaining . operators adds specificity

    • Animals.Dog.Tail will show you objects named Tail inside Dog inside Animals.
  • .* will match all children. Examples:

    • Cart.* will show you all children of an object named cart.
    • Cart.Barrier.* will show you all children of Barrier that is a child of Cart.
    • Cart.*.Weld will show you all grandchildren of Cart that are named Weld.
  • model.** will search for all descendants of model

  • .*.* will match all grandchildren. For example, model.*.* searches for all grandchildren of model.

  • These ancestry searches also work in conjunction with property search. For example, model.*.* visible=true searches for all grandchildren of model that are visible.

6) ancestry search

Combining Parameters

  • Unions: Cat or Dog searches for everything that has “Cat” or “Dog” in its name.

  • Grouping: You can also group search parameters.

    • Anchored=true CanCollide=true searches for everything that is anchored and canCollide.
    • (Anchored=true CanCollide=true) or (Anchored=false CanCollide=false) searches for everything that either is anchored and canCollide, OR isn’t anchored and cannot collide.

7) combining parameters

Explorer Header

  • We’ve added a new Explorer header, which includes (1) the number of matches for a search, (2) up and down arrows that allow you to navigate through search results, (3) a button that allows you to quickly select all search results, and (4) a search result refresh button. (See in demo below.)
    gif

  • We’ve also added a clear button to remove all text in the search field.


Reminder: you can use the following shortcuts to bulk-select search results (for more info, see Selection and Navigation Improvements in Explorer):

  • ⌘/CTRL + A – This selects all search results.
  • Shift + Select – If the first and last instances selected are both search results, Shift + Select will only bulk-select search results. In any other case, Shift + Select will select all instances (including hierarchy items).
  • Drag Select – This will only select search results.

We hope these features make searching easier and faster! Please let us know if you have any feedback, questions, or concerns.

Thank you!

381 Likes

This topic was automatically opened after 10 minutes.

Wow! This makes my workflow so much better, I appreciate it.

4 Likes

Super powerful, hoping we see further improvements here in terms of UI so we can use these features without memorizing search syntax, albeit the autocomplete is a huge help with this.

Can we get an X button in the search box area to clear the search term? Currently it’s annoying to get the explorer back into it’s default state because you need to manually click back into the box and use your keyboard to clear it. This is a large deterrent preventing me from adopting this feature for simple queries, using plugins to select things matching some filter is friendlier and easier.

24 Likes

The functionality this feature offers is absolutely mind-boggling, and opens the door for a lot of usecases. I’m not a builder in any regard, and I’m still excited for this! It will make optimization for maps easier by leaps and bounds. It’s insane how much functionality can be packed into such a small piece of UI.

I’d love to see a ‘search history’ tab being added. I’d probably end up writing a lot of search syntaxes to filter by size, color and position, and being able to re-use them would be awesome!

3 Likes

This is amazing! I am always look for what bloody tree does or doesn’t have certain properties like collision. This is extremely helpful when you have many assets and want to make sure they all the same properties without individually checking them & praying you didn’t miss one!

Definitely. Not sure when, but definitely.

22 Likes

There is a dropdown in the input box, but I can definitely see us wanting to improve this with more dynamic filters. Good idea.

9 Likes

Looking at how you can search them looks pretty interesting and more efficient!

However, some of the things that led me to get a few questions are:

  • Once using the advanced feature to search via the Explorer search bar, would it be able to understand if we put a semicolon between the object and its material that we want to know? For example: name:ROBLOX HQ ; is:Model;
  • As seen through the little tutorial on the topic, something that hasn’t been explained too much is if there is going to be furthermore information available globally at the Roblox Creator Documentation;
  • If we use .* two times to find the grand grandchildren of a folder (as a little sample), is the feature going to understand or it will completely bug by itself until you use .? For a little example of what I am thinking: ROBLOX HQ.*.Buildings.*.Doors (there might be others who would like to find in a complex way while using the ancestry formats).
1 Like

It ought to work. There are some known issues with ancestry issues, but it definitely should work.

Semicolon doesn’t do anything right now and will probably be ignored, so this’ll work by accident. Multiple filters will work on their own. Anchored=true classname:WedgePart will filter for both.

2 Likes

This is awesome. It can pretty much do what the Pick Pro plugin does, but for free!

And speaking of that, is there a way to select all instances that match the search string?

With the new Explorer Search Improvements, you can click a result and press Ctrl+A to select everything.

2 Likes

Amazing changes made for UX on the Explorer! Really liking all the more ease of access capability with the search function.

This was a well needed update and shoutout to the group of people who had implemented it! This will help a lot of developers who need to sort through massive projects in Studio with ease, including me.

Seems like a helpful update, loving the sound of it so far

This is truly an amazing update! Now, it is easier to select specific instances that you want to configure based on the properties! Locking parts without the command bar will become so much easier with this new update!

Yes! I always found looking on the Explorer very painful, thanks for this!
Also I haven’t seen a Select All/Replace All feature, could we have that? As currently the only way of doing that is selecting them by hand

1 Like

What are you hoping to replace? With the new Explorer Search Improvements, you can click a result and press Ctrl+A to select everything.

1 Like

:open_mouth: is there also a way for us to select all objects that fit this parameter? For instance, all those tree meshes in the second GIF.

Holy crap this is just amazing.

Great improvement!
Will make editing way less frustrating. I love it!