Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/rojo-rbx/rojo/llms.txt

Use this file to discover all available pages before exploring further.

rojo syncback runs in the opposite direction of rojo serve. Instead of pushing files from disk into Roblox Studio, it reads a Roblox file and writes the instances it finds back to your project’s filesystem. This is how you migrate an existing .rbxl or .rbxlx place — or a .rbxm or .rbxmx model — into a Rojo project.

Supported input formats

ExtensionDescription
.rbxlBinary place file
.rbxlxXML place file
.rbxmBinary model file
.rbxmxXML model file

Basic usage

rojo syncback [project] --input <file>
  • [project] — path to the project file or directory. Defaults to the current directory.
  • --input / -i — path to the Roblox file to read from. Required.
# Syncback a binary place file into the current project
rojo syncback --input MyGame.rbxl

# Syncback a model file into a specific project
rojo syncback models/Tool.project.json --input Tool.rbxmx
Syncback reads your project file to understand where instances should live. Any instance that is referenced in the project (or is a descendant of one that is) gets placed in the appropriate file on disk.

Flags

--list
boolean
Print a list of all files and directories that would be added or removed to stdout before writing. Green lines are additions, red lines are removals. Can be combined with --dry-run.
--dry-run
boolean
Run syncback without writing anything to disk. Rojo prints how many files would be added or removed, then exits. Useful for previewing the effect of a syncback before committing to it.
--non-interactive / -y
boolean
Skip the confirmation prompt. By default, syncback tells you how many files it will write or remove and asks Is this okay? (Y/N). Pass -y to answer yes automatically, which is useful in CI or scripted workflows.

Interactive prompt

Unless --non-interactive or --dry-run is set, syncback always pauses before writing to disk:
Would write 14 files/folders and remove 2 files/folders.
Is this okay? (Y/N):
Type Y to proceed or anything else to abort without making changes.

Controlling syncback with syncbackRules

You can add a syncbackRules object to your project file to configure what syncback includes and excludes.
default.project.json
{
  "name": "my-game",
  "tree": { "$className": "DataModel", "$path": "src" },
  "syncbackRules": {
    "ignoreTrees": [
      "ServerStorage/ImportantSecrets"
    ],
    "ignorePaths": [
      "src/ServerStorage/Secrets/**"
    ],
    "ignoreProperties": {
      "BasePart": ["Color"]
    },
    "syncCurrentCamera": false,
    "syncUnscriptable": true
  }
}

syncbackRules fields

ignoreTrees
string[]
A list of paths in the Roblox instance hierarchy to skip. Paths are written as slash-separated instance names relative to the root, for example "ServerStorage/ImportantSecrets". Any instance at that path and all of its descendants are excluded from syncback.
ignorePaths
string[]
A list of glob patterns matched against the filesystem path an instance would be serialized to. Instances whose output path matches any pattern are skipped.When a pattern ends with /**, Rojo automatically generates an additional pattern that matches the parent directory itself (so both the directory and its contents are excluded). Set createIgnoreDirPaths: false to disable this behavior.
ignoreProperties
object
A map of Roblox class names to lists of property names that should not be synced back. Inheritance is respected — specifying "BasePart": ["Color"] also excludes Color from all classes that inherit from BasePart.
"ignoreProperties": {
  "BasePart": ["Color", "Material"],
  "Script": ["Disabled"]
}
syncCurrentCamera
boolean
default:"false"
Whether to include the Workspace.CurrentCamera instance in syncback. Defaults to false because the camera is typically ephemeral and not part of a project’s source.
syncUnscriptable
boolean
default:"true"
Whether to sync back properties that cannot be set by scripts (i.e., properties that are not scriptable in the Roblox Studio plugin). Defaults to true.
ignoreReferents
boolean
default:"false"
Whether to skip serializing referent properties such as Model.PrimaryPart. Defaults to false.
createIgnoreDirPaths
boolean
default:"true"
When true, glob patterns in ignorePaths that end in /** are automatically expanded to also match the directory they refer to. Set to false to disable this convenience behavior.

Combining flags for a safe workflow

A common workflow is to preview changes before applying them:
# 1. See what would change, without writing
rojo syncback --input MyGame.rbxl --dry-run --list

# 2. Apply the changes non-interactively
rojo syncback --input MyGame.rbxl -y
Syncback can overwrite or delete files in your project directory. Always commit or back up your work before running syncback on a project with uncommitted changes.

Build docs developers (and LLMs) love