[Update] Jan 8, 2026
[Update] May 20, 2025
Hello, everyone!
We are excited to announce a new Luau feature available in the Roblox engine: require by string! With this feature, you’ll be able to use string paths to require modules instead of navigating with Instances, making your code compatible with Luau code written for other runtimes and easier to read and write.
Details
String Path Resolution
Require-by-string allows you to require modules using relative paths.
- The
/symbol is used as a separator in paths. - Relative paths must start with
./,../, or@self/.
For example, each pair of require calls below are now equivalent.
require("./MySibling")
require(script.Parent.MySibling)
require("../SiblingOfMyParent")
require(script.Parent.Parent.SiblingOfMyParent)
require("../../SiblingOfMyGrandparent")
require(script.Parent.Parent.Parent.SiblingOfMyGrandparent)
require("@self/MyChild")
require(script.MyChild)
Autocomplete
To aid with development, autocomplete suggestions will pop up in Script Editor for each component as you type out paths in a require expression.

Type Checking
With strict mode enabled, you’ll also receive a type error for any path that cannot be resolved to a ModuleScript.

Conclusion
This new feature, along with the early preview for Studio Script Sync, will make it easier for you to work with Luau written outside of Roblox. We’re excited for you to try out require-by-string, and we welcome your feedback. Please share your thoughts and experiences in this thread!
FAQs
Does require-by-string wait for ModuleScripts to replicate?
No, but waiting for game.Loaded to be fired using game.Loaded:Wait() will be sufficient when your scripts are not in Workspace. Otherwise, you can use Instance:WaitForChild() for manual synchronization.
Are absolute paths supported?
No. We intend to remain aligned with open-source Luau, which does not support requiring absolute paths. However, we are already working on solutions to make it easier to access common libraries regardless of where your scripts are in the experience or on the file system.
Are aliased paths supported?
Not yet, but we’re working on it! Support for aliases in require paths is an important step toward full cross-platform compatibility.
How does this work with external tools?
In our initial release of require-by-string, the treatment of ModuleScripts named Init/init diverged from the behavior of tools like Rojo. This behavior has now been amended to improve compatibility.
Please refer to this update for more information: https://devforum.roblox.com/t/introducing-require-by-string/3405078/146?u=subatomicturtle.
Documentation
For additional information about require, please visit our documentation .