Skip to main content

Order

A configurable module-loader framework for Roblox featuring fast lookups, cyclic dependency support, and a fully customizable initialization pipeline.

v3.0.0RobloxLuauGitHub ↗

Why Order?

Order removes the barriers between modules so you can focus on building great experiences.

Cyclic Dependency Support

The standout feature of Order. Modules can freely reference each other — no more restructuring your code to avoid circular imports. Order handles the complexity behind the scenes through a metatable-based approach.

Effortless Module Loading

Replace require() chains with a single call: shared("ModuleName"). Resolve modules by name, partial path, or direct instance reference — Order finds them for you.

Customizable Init Sequence

Define your own initialization pipeline. The default Prep → Init pattern gives you a synchronous setup phase followed by an async runtime phase, and you can override or extend this per-task or project-wide.

Task Priority Control

Set a Priority value on any task to control its position in the load order — higher values go first, negatives last. Gain fine-grained control over startup without tangling dependency chains.

Multi-Place Universe Support

First-class support for Roblox game universes. Map Place IDs to named types, then define which Code Groups are active per type — share exactly the right code across your lobby, game servers, and more.

Built-In Developer Tools

Toggle verbose module loading logs and cyclic-dependency analysis straight from Settings.luau. Silent mode keeps production output clean while keeping Studio output rich.

Clean, Intuitive API

Order's API is designed to stay out of your way. Here's how common patterns look in practice.

-- Load a module by name (no path required)
local DataManager = shared("DataManager")

-- Or by partial path for disambiguation
local GetRemote = shared("lib/GetRemote")

-- Or by direct ModuleScript reference
local Util = shared(game.ReplicatedStorage.Shared.Util)