Getting Started

Installation

Three ways to install | pick the one that fits your workflow. The Studio command bar option gets you running in under 30 seconds without leaving Studio.

Open Roblox Studio, press View → Command Bar, paste the line below, and hit Enter. RoExpress is downloaded from the Creator Store and placed in ReplicatedStorage automatically.

Studio | Command Bar
local H=game:GetService"HttpService";loadstring(H:GetAsync"https://raw.githubusercontent.com/unofficialrobloxtutor/RoExpress/main/install.lua")()

When it runs you should see this in the Output window:

Studio | Output
[RoExpress] Downloading from GitHub (main)... [RoExpress] Done -> ReplicatedStorage/RoExpress (22 modules) [RoExpress] require: local RoExpress = require(game.ReplicatedStorage.RoExpress)

Then require it from any script:

local RoExpress = require(game.ReplicatedStorage.RoExpress)
If the command fails with a permissions error, go to Home → Game Settings → Security and make sure Allow HTTP Requests is on. This is only needed for the install step | RoExpress itself does not require HTTP access in published games.

What the installer does

  1. Uses HttpService:GetAsync to fetch install.lua from the GitHub repository.

  2. Runs the fetched script with loadstring(). loadstring is available in Studio's command bar context.

  3. The installer fetches each of the 22 module source files directly from GitHub raw, creates ModuleScript instances, and sets their Source property.

  4. Parents the completed RoExpress hierarchy to ReplicatedStorage. Re-running removes the old install first so you always get a clean copy.

Full install.lua

The script fetched from GitHub. You can read it before running: raw.githubusercontent.com →

local HttpService       = game:GetService("HttpService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local BRANCH = "main"
local BASE   = "https://raw.githubusercontent.com/unofficialrobloxtutor/RoExpress/" .. BRANCH .. "/src/"

local function fetch(path)
    local ok, r = pcall(HttpService.GetAsync, HttpService, BASE .. path)
    if not ok then error("[RoExpress] Failed to fetch " .. path) end
    return r
end
local function ms(name, source, parent)
    local m = Instance.new("ModuleScript")
    m.Name, m.Source, m.Parent = name, source, parent
    return m
end

local existing = ReplicatedStorage:FindFirstChild("RoExpress")
if existing then existing:Destroy() end

print("[RoExpress] Downloading from GitHub (" .. BRANCH .. ")...")

local root = ms("RoExpress", fetch("init.luau"), ReplicatedStorage)
for _, name in { "App","Base64","Benchmark","Bridge","Broadcast","Harpy",
                 "Listener","Network","Port","Promise","Router","Tamper",
                 "TokenBucket","TypeCoercer","Version" } do
    ms(name, fetch(name .. ".luau"), root)
end

local codec  = ms("Codec",  fetch("Codec/init.luau"),  root)
ms("LZ77", fetch("Codec/LZ77.luau"), codec)
ms("LZH",  fetch("Codec/LZH.luau"),  codec)

local stream = ms("Stream", fetch("Stream/init.luau"), root)
ms("Channel", fetch("Stream/Channel.luau"), stream)
ms("Schema",  fetch("Stream/Schema.luau"),  stream)
ms("Types",   fetch("Stream/Types.luau"),   stream)

print("[RoExpress] Done -> ReplicatedStorage/RoExpress (22 modules)")

Wally is the standard Roblox package manager. Use this method if your project already uses Rojo and a CI pipeline.

  1. Add RoExpress to your wally.toml:

[dependencies]
RoExpress = "unofficialrobloxtutor/roexpress@2.4.0"
  1. Run the install:

wally install
  1. Require from any script (Wally places packages in ReplicatedStorage/Packages by default):

local RoExpress = require(game.ReplicatedStorage.Packages.RoExpress)

Download the latest release from GitHub and drop it into your place file manually.

  1. Go to the GitHub releases page and download RoExpress.rbxm from the latest release.

  2. In Roblox Studio, right-click ReplicatedStorage in the Explorer → Insert from File → select the downloaded file.

  3. Require it:

local RoExpress = require(game.ReplicatedStorage.RoExpress)
Manual installs do not auto-update. When a new version ships you will need to repeat this process. Wally and the command bar installer always pull the latest published version.

Next steps

Once RoExpress is in ReplicatedStorage, head to the quick start:

Where to go What you will find
Quick Start Server and client setup in under 20 lines
App Full routing and middleware API
Network Client request, retry, and Promise API
Route Organisation Keeping routes clean as the project grows