How do you keep your forked modules up to date?

Hello
If I need to fork some of the Roblox default modules (for example the module taking input from the touchscreen controls), how can I keep it up to date later when Roblox releases new versions of the module?
I guess any new version released by Roblox will break my game without any warning?

Thanks

u shouldnt need to fork them unless your making changes to them, methods in the PlayerModule like :GetControls() arent changing any time soon so you shouldnt need to worry about your game breaking

Any idea how to get input from the default touchscreen thumbstick (static/dynamic) without forking the Player module?

you dont need to fork the PlayerModule it should always appear in PlayerScripts anyway, so you can just run:

local PlayerModule = require(Player.PlayerScripts:WaitForChild("PlayerModule"))
local Controls = PlayerModule:GetControls()

without doing anything beforehand

1 Like

1. Track Roblox’s Updates

Roblox frequently updates its CoreScripts, including default modules. Unfortunately, these updates aren’t always well-documented, so you’ll need to monitor changes manually:

  • Check Developer Forums: Roblox developers sometimes announce changes to input systems.
  • Inspect Live Modules: If you suspect an update, you can compare Roblox’s latest version of the module with your fork.

2. Use a Version Control System

Before modifying a module, save the original version. You can use:

  • GitHub or another VCS: Keep track of your changes so you can reapply them to new versions.
  • A separate place in Roblox Studio: Store a copy of the unmodified module inside a non-executing folder for reference.

3. Manually Merge Updates

When Roblox releases an update:

  1. Get the latest module: If it’s a built-in CoreScript, extract it from StarterPlayerScripts or another relevant location.
  2. Compare it with your fork: Use a diff tool (like WinMerge, Beyond Compare, or Git) to see what changed.
  3. Reapply your modifications: Merge necessary changes while keeping your custom logic intact.

4. Minimize Forking

If possible, avoid forking entire modules. Instead:

  • Use API hooks: Some modules allow for user customization without full forking.
  • Listen for events: Instead of modifying input directly, hook into existing event listeners when possible.

5. Test Regularly

Roblox updates can drop unexpectedly. Before pushing updates to your game:

  • Test in Roblox Studio with the latest version.
  • Check for deprecated functions or breaking changes.

if I read the Controls as you suggested, where should I read them, so I can change the player direction/speed accordingly?
is it better to use Heartbeat or BindToRenderStep?