>>ChrisM+(OP)
Since the geojson for the timezone data is a static file you can avoid using a database entirely and ship it to your app.
If you'd like to avoid shipping a giant geojson, with the generosity of CDN providers you can actually hit the npm-hosting servers with HTTP Range requests and do this completely on demand from the client: https://github.com/kevmo314/browser-geo-tz