Ukraine usually does not go public with details of military operations or the decisions behind them. Ukrainians, especially the troops, respect this because it keeps the Russians guessing. Most of these details are revealed to NATO allies with the understanding that they will not be leaked to the public. So far this has worked. Occasionally Ukraine will allow Western reporters access to military people involved in a specific operation. Such was the case with the initial weeks of the air war and how Ukraine has consistently prevented the far larger Russian air force from gaining air superiority over Ukraine. The answer was simple. Although the Russians successfully used ballistic and cruise missiles for SEAD (Suppression of Enemy Air Defenses) attacks on the first days of the war, the Russians did have air superiority, to varying degrees, for several weeks until the Ukrainians could repair their air defenses. During that period, it was up to the small Ukrainian fighter interceptor force to prevent the Russians from obtaining complete air superiority. Ukraine lost a lot of interceptor aircraft and many of their best pilots in this effort. The Russians believed their massive surprise attacks with missiles had worked. It had, to a certain extent but the Ukrainian expected it and quietly made preparations to deal with it since 2015. The Ukrainians still had operational interceptor aircraft after that first strikes and pilots with a lot more flight time and training than their Russian counterparts. There were more Russian fighter aircraft but the Ukrainians were able to deny Russia air superiority. Another surprise for the Russians was the speed with which the Ukrainians restored their damaged air defense systems.
Ukrainian commanders understood Russian tactics and procedures because they had gone to the same Soviet types of command and staff schools as their adversaries. When Ukraine became independent in 1991 changing military procedures seemed to be unnecessary. Ukraine saw no possibility of fighting NATO or Russia. That all changed in 2014 when Russian made a limited attack to seize Crimea and two eastern provinces. From 2015, when the fighting in eastern Ukraine became a stalemate, until February 2022 air power was not a factor in Donbas because Russia insisted on portraying the Ukrainian separatists in Donbas as a local group fighting for independence from Ukraine. That was never true and there were more and more Russian troops there, pretending to be locals. Russia could not employ air power because the separatists never had any and Russian forces were technically not involved. The separatists could claim to have some captured air defense weapons, so the Ukrainian did not use their aircraft near the combat zone. That was the ceasefire line where Ukrainian troops and volunteers halted the Russian advance.
Another reason for not using aircraft near or over occupied Donbas was an incident in July 2014 when a Malaysian B-777 airliner was shot down by the Ukrainian separatists using a Russian Buk M2 (SA-17) self-propelled anti-aircraft system that could hit aircraft at altitudes up to 25,000 meters (82,000 feet). The B-777 and the 298 people aboard crashed in separatist territory and Russia claimed that the Ukrainians fired the missile. There was an international uproar and Russia was forced to allow Dutch (the aircraft was flying from Netherlands) accident investigators to recover the bodies and examine the wreckage and recover some aircraft components. That included fragments of the missile that brought down the airliner that serial numbers on some of the missile components showed it was a version of the Buk-M2 that only Russia had. Witnesses later revealed that the Russian Buk M2 had recently crossed the border and turned over to separatists who were actually Russian troops trained to use it. The Buk M2 operators thought they were firing at a Ukrainian military transport. That Russian Buk M2 was driven back to Russia after the airliner was shot down.
Other Russian anti-aircraft systems had shot down Ukrainian transports operating near the front line but never spotted one flying over separatist territory like the Malaysian airliner. By the end of 2014 the Ukrainians stopped operating transports or combat aircraft near the front line. Russia continued to station Buk M2 vehicles on the border between Russia and separatist occupied Donbas even though there was nothing to shoot at. International airlines no longer flew anywhere near Donbas. The only aircraft still used were UAVs, and Ukraine had more of those and used them to find targets for Ukrainian artillery.
All this demonstrated to the Ukrainians that the Russians could not be trusted and that if the war resumed, it was better to prepare for that. That meant that by 2022 Ukrainians had upgraded and expanded their air force and air defense systems for use against Russian forces if there was another war. There was, and it began February 24th with the Russians using a plan that sought to avoid a protracted battle against Ukrainian artillery and air power. This daring plan involved a rapid advance on the Ukrainian capital Kyiv and another northern city Kharkiv. There were smaller attacks in Donbas and in southern Ukrainian using forces based in Crimea. The Russians misjudged the determination and capabilities of the Ukrainians and the main attack from the north was halted and forced to retreat. The Russians suffered heavy losses. Russia was surprised to discover that the upgrades to Ukrainian air-defense systems and combat aircraft prevented Russia from gaining air superiority and freely using their larger air force against Ukrainian targets. The Russians had more modern combat aircraft than the Ukrainians but not that many and were reluctant to risk losing a lot of these aircraft. The Ukrainians were using older Russian designed fighters, like the MiG-29.
Russia was also dismayed that their new EW (Electronic Warfare) systems were soon rendered ineffective because the Ukrainians were able to develop countermeasures faster than the Russians could cope with. It took some weeks for the Russians to realize that the Ukrainian commanders had developed a different military doctrine that stressed flexibility and decentralized command and control of combat units. The Ukrainians were also armed with a lot of portable (carried by individuals) anti-tank (like Javelin) and anti-aircraft (like Stinger) weapons. These were more capable and deadly than the Russian models. These allowed Ukrainian ground forces to quickly destroy the ground offensive and make it very dangerous for Russian helicopters or any low flying jets or bombers. Russia had few smart bombs and its fighter-bomber pilots were trained to come in low to accurately deliver unguided bombs. With all those modern portable anti-aircraft weapons in use, Russia had to change tactics and that ended up having fewer jet fighters operating over Ukraine.
In addition to the troublesome Ukrainians, Russia also suffered heavy losses from warplanes that had equipment failures and crashed. Four of these occurred over Ukraine while two others were in Russia during training missions. This might be sanctions related, in situations where Russia was forced to obtain less reliable tools and components to keep aircraft flying. Another problem is that Russian warplanes are spending a lot more hours in the air during 2022 and the Russian shortage of maintainer personnel becomes a safety factor that air unit commanders ignore in order to keep aircraft flying.