Supported instances and file mappings
Script Sync supports four instance classes:
- Script
- LocalScript
- ModuleScript
- Folder
Script Sync uses these default mappings:
| File or directory on disk | Studio instance |
|---|---|
| name.luau | ModuleScript |
| name.server.luau | Script with server RunContext |
| name.client.luau | Script with client RunContext |
| name.local.luau | LocalScript |
| name.legacy.luau | Script with legacy RunContext |
| name.plugin.luau | Script with plugin RunContext |
| name/ | Folder |
| name/init.*.luau | A script named name that contains children |
Set up Script Sync
- Select one or more folders in Studio's Explorer.
- Right-click the selection and choose Sync to….
- Choose or create a local directory.
- Right-click the folder again and choose Script Sync → Reveal in Explorer on Windows or Reveal in Finder on macOS.
- Open the directory in an external editor.
For VS Code, Roblox recommends installing both the Luau Language Server extension and its companion Studio plugin. The companion provides Studio data-model information to the language server.
Conflicts and Team Create
When Studio and disk differ as synchronization starts or resumes, Script Sync displays a resolution dialog. It lists scripts that would be added, modified, or deleted on each side before offering Keep Studio and Keep Disk.
The default Resume conflicted sync on place open setting is Do not resume, which requires manual conflict resolution. Studio can instead be configured to prefer the disk version or the Studio version.
Script Sync works with Team Create and displays an Explorer indicator when a collaborator is synchronizing an instance. Roblox warns that collaborators who synchronize and externally edit the same script at the same time can overwrite one another's changes.
Use Git with synchronized files
Script Sync handles file synchronization, not version control. Roblox states that version-control systems such as Git can be used with the files it writes to disk.
A basic Git sequence is:
Code: Select all
git init
git add .
git commitCode: Select all
git status
git diff
git diff --cachedDelete synchronized roots correctly
Deleting a top-level synchronized instance directly from disk can cause Studio to report an error. Roblox documents this procedure for deleting a synchronization root:
- In Studio, right-click the synchronized script or folder.
- Choose Script Sync → Stop Sync.
- Select the option to delete the corresponding file or folder from disk.
- Delete the script or folder in Studio.
Script Sync versus Rojo
Roblox describes Script Sync as a good fit when code should be edited or versioned externally while the rest of the project remains managed in Studio. Roblox recommends a third-party tool such as Rojo when the filesystem should be the project's source of truth or the entire project must be represented in version control.
Rojo projects use .project.json files. Their instance descriptions can define an instance tree, filesystem paths, classes, and properties. Rojo can build XML (.rbxlx) or binary (.rbxl) place files with rojo build, and its server-and-plugin workflow can live-sync project files into Studio.
In short, Script Sync serves a Studio-managed, code-focused workflow. Rojo serves a filesystem-first workflow that can describe and build a broader Roblox instance tree.