I have deployed a ReactJS based application to AWS S3 bucket. Additionally, I had to use CloudFront due to react-router issues, please see S3 Static Website Hosting Route All Paths to Index.html. Now, with CloudFront I have to re-create the distribution when I change endpoints (e.g. API host, callback URL etc), is this the way it works?
No you don't have to re-create Cloudfront distribution.
A common practice is to append a hash to the static asset, eg:
<script src="myapp.bundle.js?v=12345678"></script>
The hash is usually the MD5/SHA1 hash of the file. Some may use the timestamp of the time you build the code. So after you update the file content and issue a new deploy, a new hash should be used. Consider the following flow as the client:
myapp.bundle.js?v=1
myapp.bundle.js?v=1
for any subsequent requests.myapp.bundle.js?v=2
insteadThe hash appending is usually done by build tool such as gulp and webpack with plugins.