This is a precautionary tale ...
I've had an application that add XData to entitys for identification and references to databases containg catalog information
... fairly simple app.
Over time the requirements for a string element in the XData has grown.
Recently it reached critical mass
The string is saved as normal in the XData and all processes work as expected.
BUT, the AUDIT command actually checks the length of XData strings and truncates the string to 255 characters.
ie
Auditing AutoCAD Data...
Pass 1 400 objects auditedAcDbBlockReference(232ED)
XData String Length 301 > 255 Truncate to 255
AcDbBlockReference(232FC)
XData String Length 301 > 255 Truncate to 255
.... so the data was hosed ... and it would only happen after an AUDIT.
My solution was to save the data as an XRecord and Dictionary attached to the entity.
Required a breaking change to the app but it's a lot more managable that not being able to read the data.