Search Engines Have Learned
Loading Content via Load Instead of User Events
When the website’s DOM tree is loaded, the outcomes are fired from the browser. Search engines such as Google itself permits the loading of events during crawling. This allows the site content to be indexed once the execution of the load events is fulfilled.
However, user-events are not loaded. So, actions like clicking or touching the events and subsequent changes are not considered while indexing.
Push-States and URLs
A URL allows the accessibility to a site for Google to index it. Since click events make the content appear when an individual user triggers them, they cannot be considered too.
Every URL created using push state must have a real and existing URL since Google cannot index exclusively realized URLS through push state API.
This works for Social networks as well. Sites that have a real URL can be shared. Apps like Facebook and Twitter fetch content from a site, possible only with a real URL.
The focus here is to make content that is easily available, irrespective of the crawler or the browser.
You need to guess the kind of effort that is practical for your project.