Welcome to the Developer Update for August 13, 2026!
Today’s featured world is 忘郷 by enoki_noko.
Announcements
Big Things Coming: Moonchaser!
On August 28, we’ll be hosting our own music event: Moonchaser! This is the month of eclipses, apparently, so we’re celebrating.
We’ll have more information soon, so keep an eye on our socials.
2026.3.1 is Out!
It’s a big one: this release updated the User Profile, Nameplates, and added Profile Decorations.
You can read the notes here.
Or, just watch me yap:
We know folks have feedback – we’re addressing as much of it as we can! We want to make it clear we intend to continue to iterate on this design.
We actually have an update that will be coming out (very) soon. It might already even be out when this goes out… so uh, if it is, awesome. If not, soon?
(strasz update: it came out. yay! we’ll have more, likely.)
SDK Updates!
Billboarding… But Make it Performant
As a world creator, you may have found yourself in need of a way to make an object always face the local player, sometimes called Billboarding. Doing this with transforms requires update loops in Udon, which are expensive. We’re adding native support for this to make it easier and more performant to implement!
Three new methods will be available!
(Note: always subject to change until release!)
VRCBillboard.Register(Transform target); // upright, tracks yaw only (side-to-side)
VRCBillboard.Register(Transform target, bool allowTilt); // allows up-and-down pitch changes as well
VRCBillboard.Unregister(Transform target); // cleanup is automatic but can be triggered manually
Easier Avatar Bone Tracking
Currently, if you want to attach an object to a bone on someone’s humanoid avatar, you have to manually move and rotate the object every frame to follow the bone, like this:
void Update()
{
Vector3 pos = Networking.LocalPlayer.GetBonePosition(HumanBodyBones.Head);
Quaternion rot = Networking.LocalPlayer.GetBoneRotation(HumanBodyBones.Head);
transform.SetPositionAndRotation(pos, rot);
}
This works, but it’s a little inconvenient since again, update loops like these can be expensive in Udon.
We’re planning to add native support for this as well, so you can attach a transform to a bone on a user’s avatar by doing something like this instead:
Networking.LocalPlayer.AttachTransformToBone(transform, HumanBodyBones.Head);
You only need to do this once – after the transform is attached, VRChat handles tracking the bone for you. If you need to remove it again later, you’ll be able to detach it by doing this:
Networking.LocalPlayer.DetachTransformFromBone(transform);
Advanced Contact Proximity Parameters
When a contact receiver is hit by a contact sender with at least one matching tag, it can generate a “proximity” parameter for the avatar’s animator that indicates how close the sender is to the center of the receiver (or optionally to a face of the receiver if it’s a box).
In an upcoming SDK update, we’re planning to intoduce several more parameters to give more info about the contact. These include:
- A “sender type” parameter that identifies what kind of content the contact sender belongs to.
- The local position of the middle point of the contact sender relative to the contact receiver.
- The velocity and speed of the contact sender relative to the contact receiver.
- The rate at which the proximity value is changing.
- Up to sixteen Boolean parameters, one for each tag the receiver uses, to indicate which tags the sender has in common with this receiver.
If multiple senders are in contact with the receiver at the same time, the values above will represent the sender that has the highest proximity.
These are being planned in response to community feedback surrounding a need for this info and the potential to improve the performance of existing avatars by eliminating complex work-arounds used to derive this info in other ways. Thanks to everyone giving us feedback!
Here’s a quick preview of the inspector. As always, this feature is still in progress and subject to change!
Soba!
Sorry, just wanted to jumpscare you with that header.
We’re still working our way to a Closed Beta. The language itself is in good shape. We’ve got non-behavior classes, structs, interfaces, static variables, nested types, custom interfaces and exception logs that include a full stack trace of user code.
The biggest of those is classes that don’t inherit from a behavior. In Udon, every piece of code has to live on an UdonBehaviour, so your systems are shaped by the GameObject hierarchy whether or not that has anything to do with the problem you’re solving.
In Soba, you can write plain classes that hold your data along with the logic that operates on it, pass them between SobaBehaviours, and touch the scene only where your code actually needs to.
What’s left is the part that doesn’t demo well. We’ve built a lot of Soba quickly, and we’re now going through it feature by feature to confirm that what’s implemented actually works in a real client and is fully covered by tests.
That pass is turning up gaps, which is what it’s for, and it’s where most of our time is going right now.
Alongside that task: editor tooling, validation, error messages, and documentation.
A Closed Beta is only useful if the participants can actually build things with it, so we’d rather finish that first. Soba is designed to sit alongside Udon, not replace it. We’re not putting a date on Closed Beta here. In March, we said we were hard at work getting it ready, and that turned into five more months.
We’d rather under-promise than do that twice, but we nevertheless wanted to provide an update of some kind.
Fixing Accessory Bugs
We’ve been tackling a lot of small bugs and improvements here and there for Accessories but one worth highlighting is a new dropdown list to select which bone you want to parent an accessory!
This list allowed us also to now support non-humanoid bones, which are usually common on more complex avatars like quadrupeds and others that have some interesting mechanics.
If you want to change which bones are displayed in your avatar preview when the dropdown is open you can toggle the eye button between Humanoid (only humanoid bones), Rig (non-humanoid bones that are parented to a humanoid bone) and Extra (non-humanoid bones that aren’t parent to a humanoid bone).
Website Performance Rank Consistency
We’ve shipped an update to vrchat.com/home which makes the avatar performance ratings displayed on the website more closely match what you see in the VRChat client.
You should see fewer unexpected “Security Checks Pending” results, as previously it would sometimes choose the wrong version of the avatar to display the performance rating for. It is now using identical logic to the VRChat client!
A Little Note on the Trampoline
We’ve gotten a few questions on the Trampoline. So we wanted to address them:
Hey, the Trampoline is exclusive to VRC+ for more than August. What gives?
You’re right! Some of our Items this year will be VRC+ Exclusive, rather than the Monthly Drops we’ve been doing.
What’s the difference?
VRC+ Exclusive Items are Items that will stay in your Inventory as long as you have VRC+, similar to the VRC+ Exclusive Warp Effect and Warp Tunnel Loading Screen. No need to rush. These are always available when you have an active VRC+ subscription.
VRC+ Drops are Items that are only available to VRC+ subscribers during a particular time frame. This is what the majority of the VRC+ content has been so far.
In other words, we plan for VRC+ to get either a new Exclusive or a drop each month.
Why one over the other? We’ll still figuring that out.
Conclusion
That’s it for this time. See you in two weeks!



