There are several strategies for dealing with risks:
To avoid risks - just to avoid risky projects or certain complex project items. This may lead to missing good opportunities as well.
To restrain risks - put enough effort into an estimate which will be used if the risk happens.
To mitigate risks - anticipate some measures that will reduce the potential damage in case they happen.
To dodge risks - just to cross fingers and hope that the risks will pass you by. This strategy is not suggested unless you are extremely lucky.
Existing source code, ongoing project
Integration with popular 3rd party API or usage of popular libraries, plugins, or CMSs which the team used before
Integration with less popular 3rd party API or usage of less popular libraries, plugins, or CMSs which the team used before. Usage of custom libraries developed by another team which were used before
Usage of a new framework, API, library, plugin. Integration with an unpopular CMS or tool which the team didn't hear about before
Not enough available developers
Time and materials project with an unstable workload
Fixed cost project with a very brief or vague specification
The product owner has poor availability for a technical team
A distributed project where a technical team needs to work with another team of the same company (Could also be in different time zones)
A distributed project where a technical team needs to work with an external team
The client has already defined deadlines that are tighter than the technical team estimated
The team doesn't have a tester or QA hours were cut