Read this page as markdown — for coding agents, or for anyone who prefers the source.
Browser support
Which browsers Bananai works in, and what a game may ask for beyond that.
The portal
The site and its games are served to these browsers and anything newer:
| Browser | Oldest version |
|---|---|
| Safari on macOS | Safari 12 |
| Safari on iPhone and iPad | iOS 12 |
| Chrome, on any system | Chrome 61 |
| Firefox | Firefox 60 |
| Microsoft Edge | Edge 79 |
iOS 12 is the last system for the iPhone 5s and iPhone 6, so every iPhone from 2013 on can open the site. A browser below this list may still show the pages about each game, which are plain HTML, but the catalogue and the games will not start.
This is checked, not hoped for: npm run check:browsers, run before every
deploy, fails if the portal's own scripts or the SDK use anything newer.
Older systems are not supported and are not planned: Internet Explorer, the original Android browser of Android 4, and anything from before 2017. Going below the floor would mean a second, older copy of every game.
Games
A game may need more than the portal does. A game in WebGL2, for example, needs iOS 15 or Chrome 56, and Space Game is one. What the portal guarantees is the shell and the SDK at the floor above; what a game needs beyond them is its own.
If you are building a game, the SDK at
/sdk/v0/bananai-sdk.js runs at the floor, so
nothing you take from us raises it. Two things raise it most often by
accident:
ctx.roundRectexists only from Safari 16 and Chrome 99. Check it before calling it, or draw the path yourself. p5.js 1.11 calls it, without checking, wheneverrect()is given a corner radius.- ES modules (
<script type="module">) need Safari 11 and Chrome 61, so they are fine at the floor; a bundler set to a newer target is not.
You can test your own files the way we test ours: an esbuild transform with
target: ['safari12', 'chrome61', 'firefox60'] that changes your code means
the code uses syntax the floor does not have.