French President Emmanuel Macron signed his unpopular pension reform into law on Saturday, prompting accusations from unions and the left that he was showing "contempt" for those behind a three-month protest movement.
The amendments became law after the text was published before dawn in France's official journal, with the livid opposition claiming that Macron had moved to smuggle it through under cover of night.
The publication came just hours after the approval on Friday by the Constitutional Council of the essence of the legislation, including the headline change of raising the retirement age from 62 to 64.
The standoff with unions and the left has become the biggest challenge of the second mandate of Macron, who will now address France on the crisis on Monday evening, the Elysee presidential palace said.
Trade unions called for mass Labour Day protests on May 1, and sometimes violent demonstrations erupted in several cities including Paris overnight after the court verdict was announced.
Socialist leader Olivier Faure said Macron's swift signing of the law showed "disdain" towards the protest movement while hard-left MP Francois Ruffin called it a "democratic hold-up".
"A law enacted in the middle of the night, like thieves," tweeted French Communist Party chief Fabien Roussel. "Everyone on the street May 1."
"Macron tried to intimidate all of France in the middle of the night," tweeted hard-left leader Jean-Luc Melenchon, calling Macron a "thief of life" who showed an "absurd display of arrogance".
The CGT union leader Sophie Binet called the move "totally shameful".
Prime Minister Elisabeth Borne vowed Saturday the government would press ahead with more reforms.
"We are determined to accelerate" the pace of reforms, she told the national council of Macron's Renaissance party.
"We want to build a France of full employment ... to guarantee equal opportunity," she said.
The western city of Rennes was again the scene of clashes Saturday afternoon as police used tear gas on projectile-throwing protesters, AFP correspondents said.
A bank was damaged while radical protesters also stormed the lobby of a luxury hotel. One policeman was injured and eight people arrested.
- 'Not defeated' -
The nine-member Constitutional Council ruled in favour of key provisions of the pension reform, including raising the retirement age to 64 and extending the years of work required for a full pension, saying the legislation was in accordance with French law.
Six minor proposals were rejected, including forcing large companies to publish how many over-55s they employ, and the creation of a special contract for older workers.
The appearance of the text in France's Official Journal -- the gazette of record -- means it has now been enacted into law.
But the constitutional court's decision could prove a hollow victory for Macron, as analysts say it has come at a major personal cost for the 45-year-old.
The president's approval ratings are near their lowest levels ever, and many voters have been outraged by his decision to ram the pensions law through parliament without a vote, using a legal but controversial mechanism denounced by opponents as anti-democratic.
Polls consistently show that two out of three French people are against working a further two years.
Macron has called the change "necessary" to avoid annual pension deficits forecast to hit 13.5 billion euros ($14.8 billion) by 2030, according to government figures.
France lags behind most of its European neighbours, many of which have hiked the retirement age to 65 or above.
"Stay the course. That's my motto," Macron said Friday as he inspected Notre Dame Cathedral in Paris, four years after a devastating fire nearly destroyed the gothic monument.
Government spokesman Olivier Veran said Macron's address Monday evening would be in the spirit of "pacification".
But the left-wing Liberation daily headlined: "Not defeated: opponents of the reform are not going to disarm".
- 'Tidal wave' on May 1 -
Binet and other union bosses have called for a "popular and historic tidal wave" of people on the streets to oppose the reforms on May 1.
Unions rejected an offer by Macron for talks on Tuesday, saying they would only meet after May 1.
Last month, a strike by Paris garbage workers left the capital strewn with 10,000 tonnes of uncollected rubbish.
As a prelude to the May 1 protests, railway unions are calling for a day of "railway anger" on April 20.
In a second decision on Friday, the constitutional court rejected a bid from opposition lawmakers to force a referendum on an alternative pension law that would have kept the retirement age at 62.