Skip to content

Nova for Roblox developers

If you write Luau on Roblox, Nova should feel familiar within the first few minutes. This page is the high-level map. The API reference has the exact details.

The five things to know

  1. The DataModel is the same. Instances, services, game:GetService(), Instance.new(), Script/LocalScript/ModuleScript, require, and client-server replication work the way you expect.
  2. The language is Luau. task, typeof, continue, compound assignment, type annotations, signals, attributes, and tags are available.
  3. The target is roughly the 2022 Roblox API. Many later features are also present, but the compatibility pages are the source of truth.
  4. The server is authoritative. Use RemoteEvent/RemoteFunction, validate on the server, and expect filtered replication.
  5. A few modern systems are missing. They are listed below, with the workaround you will actually use.

What maps directly

Roblox Nova
game:GetService("Workspace") Same
Instance.new("Part") Same
Script / LocalScript / ModuleScript Same
task.spawn, task.wait, task.delay Same
RemoteEvent / RemoteFunction Same
TweenService / TweenInfo Same
CollectionService tags Same
DataStoreService Same core API, platform-backed
Sound, SoundGroup, sound effects Same
Terrain, MeshPart, CSG unions Same
UserInputService, ContextActionService Same core
ScreenGui, Frame, TextLabel, ImageLabel Same core

What is different

Modern UI layout

These are not implemented yet:

UIListLayout, UIGridLayout, UITableLayout, UIPadding, UIScale, UICorner, UIGradient, UIStroke, CanvasGroup, UIAspectRatioConstraint, UISizeConstraint, UITextSizeConstraint.

A modern interface that relies on automatic layout will not lay itself out. Use a manual layout pass, 9-slice images, and explicit sizing. See Build a UI without UIListLayout.

Modern spatial queries

WorldRoot:Raycast, RaycastParams, RaycastResult, and OverlapParams are missing. Use:

  • Workspace:FindPartOnRayWithIgnoreList
  • Workspace:FindPartsInRegion3WithIgnoreList

See Physics and spatial queries.

Avatars

Classic R6 and R15 rigs work. These do not:

  • Bone / skeletal skinning
  • HumanoidDescription
  • SurfaceAppearance
  • WrapLayer / WrapTarget / layered clothing

Use classic body parts, clothing assets, and baked textures. See Animation and avatars.

Chat and localization

TextChatService and its configuration classes are missing. Use the legacy chat/bubble chat or a custom UI. LocalizationService/LocalizationTable are missing; use a string module or per-locale places.

Platform services

VR, video, voice, Open Cloud, packages, EditableImage, and EditableMesh are not implemented yet. These need a design change, not an API shim.

The development loop

  1. Open the editor from https://www.novalabs.top.
  2. Write a server script in ServerScriptService.
  3. Test with Play Solo, then a local server with two clients.
  4. Check the Output window for unknown classes, missing members, and permission errors.
  5. Publish through the official platform.

There is no public engine build or self-hosted server. Nova is closed source; the runtime is provided by the platform.

A small example

This is ordinary Roblox-style Luau:

-- ServerScriptService/Hello.server.lua
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(character)
        local humanoid = character:WaitForChild("Humanoid")

        humanoid.Died:Connect(function()
            print(player.Name, "died")
        end)
    end)
end)

The same script runs on Roblox. That is the point: port the API gaps, not the whole mental model.

How to use the reference

  • Start at the class index, search for the class, then read its status.
  • A class marked Supported can still have missing members. Open the Modern Roblox API not in Nova section on that page.
  • Datatype pages tell you whether Vector3, CFrame, TweenInfo, and friends are registered.
  • The compatibility page ranks the biggest gaps.

Next