Developer Update - 8 May 2025

Welcome to the Developer Update for May 8.

Today’s featured world is NSS Space Jam Hub by NSSA.

Announcements

Submissions for VRChat Pride are Open!

This June, we’ll be launching a Pride Parade Hub world – an inclusive space designed to highlight LGBTQ+ creators from across the platform.

But we need your content for it!

Specifically, we need your posters!

We’re looking for Groups that celebrate and support LGBTQ+ members, posters that send a positive message to the LGBTQ+ community, and more!

You can find the guidelines here. Likewise, you can submit your content here.

Submissions close on 12PM PST on May 30, 2025.

We’re Retooling Our Learning Channel

VRChat has a lot of moving parts! This means it can sometimes be complicated for newer users. To help them out, our User Support team is spinning up a new effort to educate users.

A large part of this effort involves retooling our Learning Channel on YouTube to focus on the ins-and-outs of VRChat.

As an example, you can check out our first two videos on Linking and Upgrading your Account and Setting up 2FA.

These videos are aimed at covering a wide variety of topics in a quick, 1-2 minute format that gives folks the information they need.

We’re aiming to work through our most commonly received questions and work down the list until we’ve reliably covered a good chunk of the current user experience.

2025.2.1 Was Released!

Last week, we released 2025.2.1 – bringing a small bio update (including the addition of pronouns!) as well as introducing localization to the mobile client.

You can watch Tupper tell you more about it here:

(Tupper did a great job while I was on vacation! Also, RIP to Sai. Again…)

As always, you can find the full patch notes here.

(There was also a small patch after release – you can find those notes here.)

(…and okay one more aside: there was another patch released moments ago – 2025.2.1p2! You can see more about it here.)

Cool Stuff: Now in SDK Beta!

Last Developer Update, we previewed a few new features for creators, including Udon network events with parameters as well as a few more things exposed to Udon.

You can read about those things here!

These cool new toys are available now to play with in the Open Beta SDK!

Persistence Data Loss on 2025.2.1 - Post Mortem

In the changelog for 2025.2.1p1, the patch released one day after the main update 2025.2.1 went live, we mentioned that there was a bug causing potential data loss in worlds using VRChat’s persistence feature. We want to give a bit more insight into this, as we consider persistence data very important.

Technical Notes

Only Udon Behaviors that had one or more variables of the following types synced (persisted) were affected: VRCUrl, VRCUrl[] and string[] (brackets denoting arrays). If a user attempted to load persistence data on an affected behavior, it would fail to decode and assign default values instead. These would then be re-serialized, overwriting the previous state on our servers.

The serialization format change only existed on 2025.2.1. This means users who updated from 2025.1.3p4 to 2025.2.1p1 directly are unaffected, as is anyone who launched 2025.2.1 but didn’t visit a world that had a behavior using the aforementioned types.

How We’re Trying to Avoid This in the Future

It is our goal to keep persistence data stable and compatible between versions. Our automated and manual tests did not catch this case, but we have identified the regions where we need to improve them.

This breakage slipping through has caused us to re-evaluate some internal priorities, and we will invest more into automated testing and infrastructure for our QA team dedicated to persistence. Additionally, we are looking into better tooling to recover lost data in such cases.

We apologize if your world was affected or you have lost a save state!

Conclusion

That’s it for this week! See you in two weeks on May 22!

7 Likes

What major worlds were affected?

What consideration is there for supporting the Unity Splines package in the SDK?
I have a few plans for projects that I simply cannot do until Splines are exposed to Udon.

1 Like

The Cinemachine Path component is exposed and accessible to Udon which provides a similar bezier style splines. Not everything in it though is exposed.

There is also a community available Udon Bezier creator here:

Since it is in Udon any math done is indeed much slower than using something from Cinemachine.

What are you looking for that Unity Splines specifically provides?

1 Like

Im sure you guys are already working on the (Help new users videos) But why not let the community help the community? Make a public Menu. It’s basically a fake working menu that can be navigated but douse nothing. This way Users can show other users how to use the Menu. The Menu will have a little dot that can be used to point at things for the other user to see.

This Menu would not show the users worlds or avatars or any personal info.

2 Likes

It’d also really help if persistent worlds had the ability to detect if something’s been corrupted or otherwise gone wrong, like with the 2025.2.1 bug.

These two Canny posts by BobyStar pitch new variables that would allow worlds to not only check if persistent data fails to load, but also if there isn’t any persistent data (e.g. no persistent data = new player, toggle on tutorials)

Adding functions for worlds to check persistence status would make the whole system more reliable, especially if another bug like this happens again (worlds would be able to tell the data failed to load and simply not apply or override any of it).

3 Likes

Any estimate to when that new Toon Shader will be released? I hope it’s soon cuz I wanna use it

2 Likes

By any chance, when the age verification and desktop selfie expression would be coming out for everyone?

I’m not sure! Basically, any that used the functions as written in the update.

:3

We don’t have any particular date or timetable set in stone, nor are we 100% sure that they will come to everyone soon. When we know for sure, we’ll let everyone know, though.

what I mainly need right now is “nearest point on spline”, where I pass in a position and it returns the nearest point to that that is on the spline.
is that possible with either of those solutions?