Skip to content

feat(roblox): support React Luau projects with roblox-ts rules#23

Open
howmanysmall wants to merge 5 commits intomillionco:mainfrom
howmanysmall:feat/support-react-luau
Open

feat(roblox): support React Luau projects with roblox-ts rules#23
howmanysmall wants to merge 5 commits intomillionco:mainfrom
howmanysmall:feat/support-react-luau

Conversation

@howmanysmall
Copy link

References

  • None found in commit messages for this PR range.

Summary

Adds Roblox/React Luau support with framework detection and a --framework override, plus roblox-ts specific lint rules. Updates docs, oxlint config, and test fixtures to validate Roblox-specific behavior.

Test Plan

  • Tests pass
  • Manual testing completed

Implement auto-detection for Roblox environments built with roblox-ts.
This includes specialized linting configurations that suppress
web-specific rules (like DOM/CSS animations and JSX accessibility) while
maintaining core React correctness checks.

Also adds a `--framework` CLI flag to override automatic detection and
improves source file counting for projects not using Git.
Introduces four new rules specifically for Roblox development with
React:
- `rbx-no-uncleaned-connection`: ensures .Connect() in useEffect has
cleanup
- `rbx-no-print`: warns against print() and warn() in production code
- `rbx-no-direct-instance-mutation`: prevents direct assignment to
ref.current properties
- `rbx-no-unstored-connection`: ensures connections outside of effects
are stored

These rules are only enabled when the framework is detected as
`roblox-ts`.
Additionally, `prefer-dynamic-import` is now disabled for Roblox
projects as
it is not supported by the environment.
@vercel
Copy link

vercel bot commented Feb 18, 2026

@howmanysmall is attempting to deploy a commit to the Million Team on Vercel.

A member of the Team first needs to authorize it.

"prepublishOnly": "bun run build"
},
"dependencies": {
"@rbxts/react": "^17.3.7-ts.1"
Copy link

@vercel vercel bot Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test fixture roblox-next-conflict does not contain a next dependency, making the priority test ineffective.

Fix on Vercel

@howmanysmall
Copy link
Author

Should probably mention that --framework was added as a safety valve, not a replacement for auto-detection. Auto-detection works for common setups, but since real repos are messy (monorepos, migrations, split dependencies, custom tsconfig layouts, etc), it can guess wrong. When that happens, react-doctor runs the wrong rule profile and the output gets noisy or misses important checks. The override lets users force the intended framework in CI and local runs, so results stay consistent and relevant without changing project structure. Figured it'd be a "better safe-than-sorry" type deal.

Prune the Bun lockfile by removing workspace package definitions and
their associated dependency trees. This significantly reduces the size
of the lockfile and removes unused dependencies.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant