DataStore2 News/Changelog

This will be used for news or changes for DataStore2 so that you can use the “Watch” feature and keep up to date without getting notifications for questions and whatnot.



This topic was automatically closed after 1 minute. New replies are no longer allowed.

DataStore2 is going through a code refactor. I’ve recently uploaded this free model, and I would like current consumers of DataStore2 to try this version and tell me if anything breaks. You should not have to touch any of your code–just plug this one in instead of the old one and it just works.

If you’re interested in the code or want to check my work, feel free to on this PR: Split DataStore2 into multiple files, make implementation more generic by Kampfkarren · Pull Request #39 · Kampfkarren/Roblox · GitHub


The new DataStore2 code refactor is now live on the official build. Please tell me if you find any bugs.

It has also been published to GitHub as 1.1.3:


1.1.4 and 1.1.5 have been published on the main build. 1.1.4 adds SaveAsync, which is equivalent to Save except it doesn’t yield. Both include fixes for crashes/bugs.


1.1.6 has been released with a minor bug fix.

  • Fixed a bug where getting combined data store default values would be identical.

However, due to this issue, you’ll need to push this yourself instead of getting the MainModule. For this change, luckily it’s only a few characters long.

1 Like

Both 1.1.7 and 1.2.0 have been released.

1.1.7 fixes a new issue with data not correctly saving when servers are forcefully shut down:

1.2.0 adds DataStore2.SaveAll(player) to save all data stores of a player, as well as no longer saving if data hasn’t changed.

Because of the last bug report, these are not yet up on the free model. However, you can copy and paste the init.lua file and paste it into the DataStore2 module.

1 Like

Following from last post, 1.2.1 has also been released that features a minor bug fix to :Save().

1 Like

I’ve released a survey for DataStore2 users, it would help the development of DataStore2 if you took it. Not all questions are required, so answer as many as you want.

The survey has ended, thanks for your answers.

1.3.0 is now out, and is still not available under the free model. The good news is, you can now just download an rbxmx, drop it into Roblox studio, and it’ll work! Major changes include being able to opt out of using the berezaa method! This means you’ll be able to mirgate new games super easily now. Also, a bunch of async versions of the current methods were added that use promises instead of yielding.

Also, I now have complete documentation set up, so tell me if you find any issues with it. I’m going to be linking that instead of the giant mess that the thread is.

  • Added :GetAsync(), :GetTableAsync, and :IncrementAsync(), which are promise versions of their non-async counterparts.
  • :SaveAsync() now returns a promise.
  • If data can’t save when a player leaves, it’ll no longer halt Studio.
  • Added a Settings module and DataStore2.PatchGlobalSettings to manipulate settings of DataStore2.
  • Added a setting (SavingMethod) for using standard data stores instead of the berezaa method. It can currently be set to “OrderedBackups” (the default) or “Standard”.

Thanks again for using DataStore2!


1.3.1 is out, featuring some important bug fixes.


Currently, :Set has a bug where it can yield depending on the order in which you use it (before a :Get).

It turns out the solution for this is very challenging. This leads me to ask a question:

Is this bug fine to keep, at least for now? The only time this should happen is before a :Get, and if you’re using the most updated version, you already are affected by this bug.

  • Yes, it’s fine that :Set can sometimes yield. I don’t have code that relies on it never yielding.
  • No, this is breaking/would break my code, as I expect :Set to never yield, even if :Get was never called.

0 voters



This release contains a bug where calling :Set() before calling :Get() can yield. This will not be an issue for most consumers, but be aware of it.

  • Added DataStore2.SaveAllAsync.
  • Fix :IncrementAsync throwing an error on combined data stores.
  • Fix :Set on combined data stores having the potential to yield.
  • Fix a crash relating to backups.
  • Fix GetTable not working appropriately when using different default table keys.
  • Fix GetTable not working appropriately when using combined data stores.
  • Fix :IncrementAsync not returning a Promise.
  • Fix OnUpdate being fired twice when using Update to update data.
  • Fix BindToClose memory leak, breaking other BindToClose scripts, and potential error.