Project Search & Replace 2.0 Roadmap

This blog is quiet, but Project Search & Replace is still alive and well. If you are over in the Discord, you’ll see that I’m actively answering questions that crop up. If you have a support issue or a question, please drop by.

I wanted to post about the current state of the asset and its future. I’m currently still supporting 1.0, but generally not building new features on it. If its not too hard I may whip something up in response to a support request, but generally work on 1.0 is complete.

With the advent of Unity’s built-in Quick Search and Rider’s ‘Find Usages’ features I was unsure whether I wanted to explore a new improved version of PSR. But I have come to the conclusion that there is sufficient interest and I feel that PSR can provide functionality other tools do not.

I also feel comfortable enough with the prototyping I have done to confidently state that a 2.0 release will be coming. I have solved the major technical problems. There are still major subsystems to develop around indexing and asset import, and the UI is in very early days. This will be a radical departure from 1.0 for a number of reasons.

Now when will 2.0 release? I am hoping by the end of the year. I have switched studios, moving to Seattle and life is really getting in the way. I had a really good cadence at prototyping 2.0 but alas my time is dedicated now to getting my house ready for sale and all those other mundane life things. Once I’m settled I believe 2.0 will get out the door by the end of the year.

So where is 2.0 at? What makes it different than 1.0? Well… a lot of things.

  • Assets are indexed into a database instead of doing a linear search over all components every time.
  • Full Text Search of items allows for search of properties, prefabs, and objects simultaneously in a more ‘natural’ search mode.
  • Searches occur on their own thread, so they are not blocking the UI.
  • Searches are practically instantaneous after indexing occurs.
  • Searching is no longer heavily tied to UI, meaning that a search can more easily be executed via code.
  • The tool’s window uses the new UIToolkit with a tabbed interface. This also allows for very long scrolling lists and eases feature development in some key areas.

Please note: the following screenshots are EARLY DAYS AND NO WHERE NEAR THE FINAL UI!

An example of searching for the term ‘ChildPref’ which provides a number of different results: Prefabs and instances of those prefabs.
Right clicking on a result allows you to open a new search in a new tab.
In addition to natural language search, searching for specific objects or prefabs is supported. For example this material is used in the prefabs CubeFab1 and CubeFab3.

The underlying search engine also searches MonoBehaviour properties and has many features not yet exposed by the UI.

Much work that is unseen is the amount of unit testing required to ensure searches return correct results.

There is a lot of work to do still including:

  • Updating and re-indexing assets automatically upon import.
  • Chaining search filters together (search for X then Y).
  • Filtering by search scope (aka scene view, prefab stage view, etc)
  • Replace actions (replace property, swap prefab, custom script).
  • Iterating over the UI experience to provide a smoother intuitive flow.

Do you have ideas of features you’d like to see in 2.0? Something perhaps that didn’t get into 1.0? Let me know. I’m available in the Discord, and feel free to DM me there as well. Thanks!