[Studio Beta] Find/Replace All Refresh

Hi Creators,

We’re excited to announce that the new, faster Find/Replace All widget is now in beta. These enhancements enable you to work more efficiently with larger numbers of instances and more complex places in Roblox Studio.

Rebuilt in Luau with a more efficient architecture, the widget delivers much smoother performance when searching, navigating, and replacing thousands of matches.

Features

Find Next/Previous

Quickly move between results, wrapping from the last match back to the first (and vice versa). Collapsed files automatically expand to show the selected result.

Replace

Replaces the selected match and automatically moves to the next, opening and expanding files as needed.

Replace All

Replaces matches across all files with a confirmation prompt.

Expand/Collapse Files

Collapse files to hide matches or expand them to view all.

Improved Selection Behavior

Single-click opens matches in a temporary tab; double-click opens them in a permanent tab. Matched text is highlighted in the editor.

Enable the Beta

To start using the new Find/Replace All in Studio Beta, follow these steps:

  1. Open Studio and go to the ‘File’ menu.
  2. Click ‘Beta Features’.
  3. Check the box for ‘Improved Find All/Replace All’ and click Save.
  4. Restart Studio if prompted.

Getting Started

  1. Enable ‘Improved Find/Replace All’ in Studio’s ‘Beta Features’ menu in the ‘File’ dropdown.
  2. Open Find/Replace All:
    • In Studio: In the ‘View’ dropdown menu, under ‘Show’, click Find All/Replace All.
    • In Next Gen Studio: In the ‘Script’ tab, click Find, then choose Find All/Replace All.
  3. Alternatively, use the shortcut Cmd+Shift+F (Mac) or Ctrl+Shift+F (Windows) to open it directly.

Best Practices

  • Shortcuts: Cmd+Shift+H (Mac) / Ctrl+Shift+H (Windows) opens the widget with the Replace panel visible. If text is highlighted in the editor, it is automatically prepopulated in the widget.
  • Large Searches: There is a soft limit of 20,000 matches. If your search returns more than this, only a subset will be displayed. To replace more than 20,000 matches, run Replace All repeatedly until no results remain.
  • Regex Validation: The search box will highlight in red when an invalid regex is entered, so you can quickly identify and fix regex errors.

Special thanks to @MoonRocketApollo, @Rusi_002, @idevride, @swmaniac, @montximontxi, @notchickennnnn, @yohooyohoo, @ignotuscaligo, and @bezzie_boi for helping us get here!

Happy developing!

143 Likes

This topic was automatically opened after 10 minutes.

Great update! However I have found a small issue:
Whenever I want to find/replace with a long file name/location, the window unfortunately shows me the first words of the location/name, instead of the last. Making it a little bit more difficult to find the script I want to edit.

15 Likes

See: [Studio Beta] Find/Replace All Refresh - #46 by swmaniac
How does the memory work over the long term for this widget? iirc Luau doesn’t really release strings so I’m concerned that using it a bunch could result in what’s essentially a memory leak (it’s not really because the Luau VM still has references, but they aren’t exposed to Luau).

Also what flavor of Regex does this new version use? I don’t even know what the old version used, but it feels like this should be documented.

22 Likes

Cool idea but bad implementation…
its always like this tbh
in general its cool but it feels like none of you really tested it tbh

1st its not auto selecting the text box when opening the menu
2nd when you search something and close the plugin again, it still shows the marked results in every script

How could these errors not have been detected before?

18 Likes

Good to see this revisited, now seems like a good time to raise this usability issue.

8 Likes

*Redacted original reply*

Turned out to be a typo, team did good on the rework. :+1:

3 Likes

Ctrl+Shift+F does not focus the panel or search input. As a result, it’s actually good news to me that this can be turned off. Please fix and I will use this, it looks cool.

5 Likes

Because it’s a beta feature and beta features may lack features.

1 Like

Yes, but Find/Replace is a small thing (along with the upcoming features) - They could’ve delayed it by a short period of time & included the rest


Redacted :right_arrow_curving_down:

6 Likes

I’m not sure if this was mentioned or even possible, but something I’d love to see is being able to undo a “replace all” rather than having to back up the codebase before doing this.

3 Likes

I think they just want feedback as soon as possible. That way if they do need to remake the architecture or design then they would have an easier time cause it still has little features at moment.

3 Likes

Thanks for catching that! The features listed under “What’s Next” (regex error highlighting, Replace panel shortcut, and prepopulating the search bar) are already implemented in this beta. The earlier wording was just a mix-up. Appreciate everyone’s patience, and more improvements are on the way!

4 Likes

We’ll be updating the widget soon so long file names and paths cut off at the start (not the end). That way, you’ll always see the script name. Stay tuned

5 Likes

Thanks for the feedback! We’re actively working on adding this feature now. We’ll share an update soon!

6 Likes

There are a couple of bugs:

  • When I press ctrl + shift + f, it doesn’t work the first time
  • When I close the plugin/widget, it doesn’t cancel the search and everything in code remains highlighted

I’ve encountered this while flipping the fast flag too, has it not been fixed yet?

2 Likes

I understand Roblox’s push for the studio redesign, but the Find/Replace All feature feels out of place alongside the old studio UI. Are there plans to have this feature’s theme automatically adjust to match the Roblox Studio theme a developer is using?

4 Likes

I’m confused by the difference and Ctrl + Shift + F isn’t opening it at all for me, which has been a slight annoyance.

I assumed removing the functionality with F was intentional with the new studio UI stuff. I guess I’m wrong though? How might I fix it not working?

Just realized other people said basically the same thing

2 Likes

Looking at the GIFs, I can say only one:

Why there’s literally 1 line of text, same 1 line of empty space, and then next text? Make it densier. In cases like right/left window it will work well, but not if it’s placed at the bottom.

2 Likes

Isn’t this only the case for compile-time strings, since those get given a strong reference in the parsed Proto’s constants. I’m not going to claim I know how Luau’s GC works but it’d be very unusual for runtime-created strings to not be collected.

3 Likes