I implemented something like this a couple years ago and the geometry files used for timezone lookup were surprisingly large (~200 MB at decent precision)! I ended up simplifying the geometries drastically to minimize data requirements and compute burden of the lookups, but if you need higher precision, server reverse geocoding may be your only option in constrained environments.