The last version of KanjiBox (2.1.3 currently in the store) finally cut support for iOS 3 and even jumped to requiring iOS 4.3. This was based on my (mistaken) assumption that all devices (except for 1G devices: stuck on 3.x) could at least run 4.3.
As it turns out, 2G devices (iPhone and iPod Touch 2nd generation) can only go as high as iOS 4.2.1.
Since it was reasonably little work to add back support for iOS 4.2, I just made the necessary changes, and a new update (KanjiBox 2.1.4) should soon be in the store, that supports all devices 2G and up.
Now if you are curious as to the reasons why KanjiBox is routinely forced to drop support for older devices (and why I love you but Apple loves your wallet more), feel free to read the rantish explanation below:
KanjiBox is not an incredibly CPU-heavy application and, most importantly, its CPU needs do not grow exponentially (unlike many modern applications and modern OSes): if anything, each version tends to be a little more optimised…
It also does not rely on very advanced features of the OS. And when it uses recent OS additions (such as Game Center), it does so in an optional way that does not break backward compatibility.
In such conditions, there is very little practical reason that KanjiBox should not run on nearly all previous versions of iOS (let’s say at least iOS 4 and up).
The only reason it does not, is that Apple does not want it to.
Apple has a well-documented, quasi-official policy of aggressive planned-obsolescence with its line of iDevices. It has rarely been more obvious than with the latest iPhone “4S” and its exclusive Siri feature, which is entirely server-based and could perfectly well run on absolutely every Apple device with a microphone and internet access ever made. But doesn’t, because Apple is a hardware company, and needs to sell you new hardware at regular intervals.
I wouldn’t care, and you might not either, except for another aspect of Apple policies: pushing App developers themselves to drop support for older versions of iOS, with each new release.
This is done by ensuring that each new release of iOS developing tools (necessary to build new versions of an app) only allow testing on the latest one or two versions of iOS: for no reason other than commercial, each new install of the iPhone SDK erases older versions of the SDK. For example, current SDK only lets me test my applications with iOS Simulator version 5 and 4.3, while the previous version allowed me to test on 4.1 and 4.2 (but did not support 5).
Although there are still ways to release apps with support for older devices, it requires a lot more effort to make sure they are fully compatible (with more uncertainty) and it is generally just easier and safer to bump up the iOS requirement. Which is just what Apple wants.
My general point is not that Apple is evil (or at least, no more evil than any company trying to sell you something), but that you should take with a big grain of salt anything that is meant to convince you that your 18 month old device is already completely outdated and could not possible run an application made today.