works with react but still server-side only