Blender 5.2 LTS shipped on 14 July 2026. It changed how Python talks to a Geometry Nodes modifier.
If your add-on sets a Geometry Nodes input from a script, that line is dead now.
I sell eighteen Blender add-ons. I opened every one and counted. Two use the old way, and both broke.
What the release note says
The 5.2 Python API notes give it four lines and one commit, 1561c1ea4a.
The modifier now has real RNA properties. It no longer keeps input values as custom properties.
Old code treated the modifier like a dictionary. You wrote to a key named after the socket identifier. For attributes you wrote two more keys, one ending in use_attribute and one in attribute_name.
New code goes through modifier.properties.inputs. You set value, or set type to ATTRIBUTE and fill in attribute_name. Output attributes moved under modifier.properties.outputs.
That same commit also made node tool inputs assignable from Python. The break and the feature landed together.
One more thing on that page. Socket identifiers on the Compare and Random Value nodes changed too, in commit 3a5cd7862b.
If you look sockets up by identifier, check those two nodes by hand.
Three of my eighteen build one, two write to one
Three of my add-ons create a Geometry Nodes modifier. They are Lego Generator, Surface Blend and Transition FX.
Only two of those three ever set an input from a script. Those two are the ones that broke.
That is the honest number. Not eighteen, not zero. Two.
The one that survived did it by accident
Lego Generator is 487 lines. It builds a fresh node group for every object it converts.
Brick size, voxel size, shell thickness — all of it is baked into the nodes while the group is built. The modifier is created, pointed at the group, and never touched again.
No socket writes. No drivers. It opens in 5.2 and works.
I did not design that. Rebuilding the group was simply easier than wiring a panel to it.
One line against sixty-eight
Surface Blend is 629 lines. Every input write goes through one small helper, called from nine places.
The broken line sits inside that helper. One edit fixes the whole add-on.
Transition FX is 27,742 lines. It writes 57 socket values directly, scattered through the file.
It also builds 11 old-style property paths as strings, for drivers and for keyframes. Every one of those paths points at a key that no longer exists.
Same bug. One edit in one add-on, sixty-eight in the other.
The difference is not skill. It is whether somebody wrote a helper function on the first day.
It will not fail quietly
I have not put 5.2 on the studio machines yet, so I read the 5.2 source instead.
In 5.1 the Geometry Nodes modifier registers an ID-property handler. That is the only reason dictionary-style writing ever worked.
In 5.2 that registration is gone from the modifier. It moved down to the new properties struct.
I tested what that means on 5.1, using a Subdivision modifier, which never had the handler. Writing to it by key raises a TypeError: id properties not supported for this type.
So expect a traceback in 5.2, not a silent no-op. Loud is better. Your users report it on day one.
The fix is six lines
Ask the modifier for properties, with a default of None.
If it is there, you are on 5.2 or later. Take the socket out of properties.inputs by identifier and set value.
If it is None, you are on 4.5, 5.0 or 5.1. Use the old key.
I wrote that as a six-line function and ran it on 4.5.3, 5.0.1 and 5.1.1. Same result on all three.
One catch, straight from the source. Assign the node group before you touch properties, or the pointer resolves to an empty struct.
Four things to do this week
- Search your add-on for square-bracket writes on a modifier variable. That is the entire audit.
- Search for driver and keyframe paths built as strings. Those break in exactly the same way.
- Route every input write through one setter, even when you only call it twice.
- Open and re-save any asset file holding node tools. Blender 5.1 already required that.
Why this is the job, not bad luck
I have written before about what a support period costs a seller. This is that cost with a number attached.
5.2 is an LTS, supported until July 2028. It is the release people will sit on for two years.
My add-ons declare minimums from Blender 3.0 up to 5.0. The fix has to run on all of them, which is why it is a branch and not a rewrite.
The same version gave us remote asset libraries, which I liked much less once I measured it.
None of this is a bug in your code. A string changed, and the day is gone.
Fix the two add-ons. Then write the helper you did not write the first time.


