My dynamic product pages are marked as duplicate content by Google (Internal duplicate). They are structurally similar, but present different information about each product (price, description, image...). They have little in common except the layout. Their meta tags are also different. Each page is on a separate URL (/product/[productID]). Pages have a fair amount of content and the content is meaningful (people actively visit the pages and some even have some strong backlinks). I have never had this issue before and my other product category on the same site is indexing fine.
Has anyone experienced a similar problem? What could be causing this? Any help is welcome.
(I use next.js and everything is rendered server-side)
Also, my site is relatively new and doesn't get much traffic. Is there any chance that this will be fixed when the site gets bigger?
UPDATE
I added self-referencing canonical tags to the pages. However, this did not solve the issue. Google still sees pages as duplicates and indexes only one page.
Also, on live tests, URLs are rendered correctly by Google