You can use the 'pause_collection' parameter and set 'behaviour' to 'keep_as_draft' to keep the subscription active. And add an automatic resume date with 'resumes_at' and your new date.
https://docs.stripe.com/billing/subscriptions/pause-payment
For example : My customer has 1 year subscription, form 1st january 20XX to 1st january 20XX+1, i want to offer him 30 days free. His subscription will run to 31st january.
I set pause_collection and keep his sub active. Next, i set his next facturation to a new date, that i set in 'resumes_at'.
There is no proration by doing so.