I, for one, am ok with the localStorage stash for later approach. Seems like a sensible fallback for when sendBeacon is not available. Before you go and do a lot of work though, it might be good to test how likely we are to get that localStorage data back and sent as an event later. We could run an experiment sending an event every time we add something to localStorage and another every time we find what we added in a subsequent browser session.
The reason for that experiment is that the time lag between adding the event and sending it, or the percentage of the time that it even happens at all, might make this solution less useful than you'd think at first.