Alternatives to Instance.Changed?

I’m trying to create a plugin that keeps track of your Studio History. I am doing that through Instance.Changed, but I ran into some problems:

  1. The event returns read-only properties aswell.
    I fixed this by checking if the property can be changed through a pcall function.
  2. Whenever you change something like a Part’s Size, CFrame also gets included which messes up basically everything.
    I am currently looking for a solution to this. In fact, this is the reason I made this post.
  3. The event fires everytime a property changes, including Position, Size and Orientation.
    This isn’t a major issue and I added a cooldown. What I mean by that is, let’s say you are dragging a part. Well the output gets flooded by changes, making Studio laggy. This also makes it hard to keep track of any changes, because it includes CFrames, Positions, Orientations even though they have nothing to do with Size. Basically my 2nd complaint.

I already know about Instance:GetPropertyChangedSignal(), but I would have to check every single property.

1 Like

Consider using the new ReflectionService API! You can get the list of properties that a given class can have, and with that you can tell which of those properties are read-only or not. Then use Instance:GetPropertyChangedSignal to detect changes to set-able properties!

3 Likes

Oh thank you! I’ll mark this as the solution.