A(nother) large piece of custom code for us is likely to be the processing of dimensions in to a form that AGOL and Collector can cope with. This introduces the headaches of maintaining a list of what to process, creating / updating / deleting points, lines and polygons based on dimensions over night and then pushing these out to devices when they next sync.
It also means that people using Collector to collect dimensions have to create approximations constructed from line features, which Desktop editors then turn in to actual dimension features.
The way we collect information is agreed with an industry regulator, so we have to capture positions of assets as dimensions (accurate to 10cm) from fixed features in the basemap (buildings, kerbs, etc). We use simple, aligned and rotated dimensions.