Sorry for the epistle, but it may be helpful.
From experience with my VZ SV6, I found the idle stability was poor when the EVAP solenoid was activated by the ECU. Especially when cold started. The EVAP did not necessarily activate as soon as the engine was started, but started chattering about half a minute after engine start. In colder climates it may start even later?
Normally, the EVAP chatters (closed/open/closed cycles) and using inlet manifold vacuum, pulls pulses of air through the fuel system's carbon canister into the inlet manifold. The air from the canister can be loaded with fuel vapour eg, hot day fuel vapour pressure expansion from the fuel tank, excessive raw fuel after the fuel tank has been overfilled. This extra fuel will richen the fuel air ratio and consequently the O2 sensors will try to correct. I think the chattering of the valve stops a "full on" change to the air fuel mixture, as the inlet manifold chamber will mix or "blend" air drawn through the throttle plate and the EVAP and the crankcase ventilation (CV) metering. The EVAP cycles timing may be such that the O2 sensors don't/cannot chase the A/F mixture changes diligently, and start making large compensatory changes to ignition timing and fuel injection on/off times etc. I think the O2 sensors respond in a more subdued manner and idle speed quality reflects this condition.
Find the line to the EVAP near the inlet manifold, if it can be safely crimped to stop air flow, then evaluate your idle smoothness. In the VZ, it was solid vacuum lines, so I removed the quick connect fittings at the EVAP, and used rubber chair tips, 8mm or 10mm in diameter from memory, to block the air to the inlet manifold. My VZ idle improved to be very steady and the motor did not have any shakes etc. Reconnected the EVAP and idle was not as good.
My VF SV6 S1 cold idle feels a bit unstable but when up to operating temperature the idle is acceptable. When cold started, I put it down to the O2 sensors not being in the loop and the EVAP having a chatter as well. So, unless it gets bad at operating temperature, I presently have to accept the designers' compromises between engine performance and pollution controls.
If bad when hot, then the usual items come into play. Plugs, injectors, ECU, EVAP leaking, vacuum leaks, CV blockages, fuel pump, wiring, earthing, faults etc. etc. Some of these faulty components don't give fault codes.
Hope you can solve your problem.