At least 80 people, including children, have been killed and more than 50 injured after a 25-tonne lorry mowed down crowds for more than a mile before the driver got out and sprayed fleeing revellers with bullets as terror struck Bastille Day celebrations in the southern French city of Nice.
It happened on the famous Promenade des Anglais after a firework display. The driver was shot dead and guns and grenades were found inside the lorry.
President Francois Hollande said the attack was of a “terrorist nature”.
He extended a state of emergency across France by three months.
France had been on high alert following last November’s attacks in Paris in which 130 people died and hundreds were wounded.
The state of emergency had been due to end on July 26.
“France is badly hit,” Mr Hollande said, adding that “we need to do everything we can to fight against” such attacks.
“All of France is under the threat of Islamic terrorism,” he said, adding that “several children” were among those killed.
The president added that “operational reserves” would be deployed to support the army and security forces across the country, with particular focus on the borders.
About 50 people were injured, 18 of them critically, in the incident on Thursday, which was Bastille Day – France’s national day.
Prosecutor Jean-Michel Pretre said the lorry drove 2km (1.2 miles) through a large crowd, the AFP news agency reported.
One image on Twitter showed about a dozen people lying on the street.
Interior Ministry spokesman Pierre-Henry Brandet denied earlier reports of hostage situations and said the driver of the lorry had been “neutralised”.
He added that officials were investigating whether the driver acted alone.
Identity documents belonging to a 31-year-old French Tunisian were later found in the bullet-riddled truck after the gunman at the wheel was shot dead by police marksmen, security sources said.
The source added: ‘The identification of the truck driver is still underway.’ The recovered papers indicate the man is a resident of Nice.
The truck driver was said to have shouted ‘Allahu Akbar’ – God is greatest – before being killed. Pro-ISIS groups have been celebrating the attack, orchestrated to coincide with France’s most important national holiday, but as yet the terror group has not officially claimed responsibility.
A huge cache of guns, grenades and ‘larger weapons’ were later found inside the lorry, which mounted the pavement at approximately 40mph and steered directly towards hundreds of people watching a fireworks display.
Around 100 revellers are then said to have dived into the sea as panic ensued and holiday crowds desperately ran for their lives.
Some reports spoke of shots being exchanged between police and the occupants of the lorry but these have not been confirmed.
Social media video showed people running through the streets in panic following the incident.
A journalist with the Nice Matin newspaper reported from the scene that there was “a lot of blood and without doubt many injured”.
A reporter for the AFP news agency said the incident took place as the firework display was ending, adding: “We saw people hit and bits of debris flying around.”
Another image on Twitter showed a white lorry stopped in the middle of the promenade with damage to its front, and four police officers observing it while taking cover behind a palm tree.
One eyewitness told BFM TV: “Everyone was calling run, run, run there’s an attack run, run, run. We heard some shots. We thought they were fireworks because it’s the 14th of July.
“There was great panic. We were running too because we didn’t want to stick around and we went into a hotel to get to safety. ”
US President Barack Obama condemned “in the strongest terms” what he said appeared to be “a horrific terrorist attack in Nice”, the White House said.
The president had been briefed about the situation “and his national security team will update him, as appropriate”, National Security Council spokesman Ned Price said.
On Friday, flags in France will be flying at half-mast, and Nice’s jazz festival has been cancelled.