Event Registration automatically adds to contact list
Currently, when you have a non-member sign up for an event, they are automatically added to the contact list. If you have a large event that is not for members only, you very quickly exceed your account limit for contacts, which then prevents more people from registering until you manually archive the non-members. It would be great to have a check box on the event setup that says "Add registrant to contact list". Simple upgrade that would save a ton of time.
There is a section in the event setup to add Guests to the contact list. The options are "Do not add new guests to contacts list", "Add new guests to contacts list only if email entered" and "Add all new guests to contacts list". Members are already on your contact list, so I assume that is why Wild Apricot says "Add Guests to contact list". So this feature already exists and has for years.
This, but from my (limited) experience with ICS I would add a few points that make it a bit more complex:
The link should be public, calendar apps have (at least most of them) no ability to sign in to your app.
Since the link is public, it should be impossible to guess or you're leaking user events to the whole world (in some cases it might be ok, but in most it's not). For example, /users/1/calendar.ics is not a good url, because it's easy to get someone else's id and fetch their calendar.
You should provide a way to reset a calendar link if it leaks somewhere
Because you can't control in how many calendars the user will subscribe and how often they will query your endpoint, it might be a good idea to pregenerate ICS file and store it somewhere like S3 (with a CDN in front) so you don't have to worry about multiple requests putting a strain on your server.
You have to figure out what to do with past events. If you decide to keep them in ICS forever, the file might grow quite big. On the other hand, if you only put future events and past ones from e.g. last week, things will disappear from users' calendars, so you need to make sure it's ok.