I think your app itself is requesting a presigned URL from S3 everytime you load the page, so you actually get a new presigned url to view the image.
If you don't specify the expiry date when you are creating the presigned url, then the default expiry will apply. This link has the expiry values.
Anyone with valid security credentials can create a presigned URL. However, in order to successfully access an object, the presigned URL must be created by someone who has permission to perform the operation that the presigned URL is based upon.
The credentials that you can use to create a presigned URL include:
IAM instance profile: Valid up to 6 hours
AWS Security Token Service : Valid up to 36 hours when signed with
permanent credentials, such as the credentials of the AWS account root
user or an IAM user
IAM user: Valid up to 7 days when using AWS Signature Version 4
To create a presigned URL that's valid for up to 7 days, first
designate IAM user credentials (the access key and secret access key)
to the SDK that you're using. Then, generate a presigned URL using AWS
Signature Version 4.
If you created a presigned URL using a temporary token, then the URL
expires when the token expires, even if the URL was created with a
later expiration time.
Depending on how you create the Presigned urls, they can be used either for object sharing (e.g. image viewing) or for object uploading to S3. They are different types of URLs as each one has a different set of permissions attached to it, so you can't use the same presigned url for both upload and download. Anyways, in both cases you can define an expiry time for the presigned URL.