---
title: "Chaoming Li (@chaoming) | Hashnode"
description: "Tech entrepreneur. Read the latest articles by Chaoming Li on Hashnode."
url: "https://hashnode.com/@chaoming"
---

@chaoming

# Chaoming Li

@chaoming · Sydney, Australia · Joined November 2020

Tech entrepreneur

### [How to Detect Visitor Country and Currency in JavaScript (No Backend Required)](https://chaoming.hashnode.dev/how-to-detect-visitor-country-and-currency-in-javascript-no-backend-required?utm_source=hashnode&utm_medium=feed)

Detect a visitor's country and currency with one JavaScript API call — no backend, no API key required. Includes vanilla JS and React code examples.

7 min read · [chaoming.hashnode.dev](https://chaoming.hashnode.dev/how-to-detect-visitor-country-and-currency-in-javascript-no-backend-required?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/how-to-detect-visitor-country-and-currency-in-javascript-no-backend-required/6a4e3d0b923573d74ddb6eb7) [Jul 8](https://hashnode.com/posts/how-to-detect-visitor-country-and-currency-in-javascript-no-backend-required/6a4e3d0b923573d74ddb6eb7)

### [Introducing InAppAI: Open-Source AI Agents for React](https://chaoming.hashnode.dev/introducing-inappai-open-source-ai-agents-for-react?utm_source=hashnode&utm_medium=feed)

Add AI agents to your SaaS that take action, not just answer questions. Learn how Tools, Context, and Agents work together.

4 min read · [chaoming.hashnode.dev](https://chaoming.hashnode.dev/introducing-inappai-open-source-ai-agents-for-react?utm_source=hashnode&utm_medium=feed)

[Jan 15](https://hashnode.com/posts/introducing-inappai-open-source-ai-agents-for-react/6968ccb5ded83f3443c8d6f3)

### [Firebase + Reactjs = Fireactjs, the open source framework for building user portals](https://chaoming.hashnode.dev/firebase-reactjs-fireactjs-the-open-source-framework-for-building-user-portals?utm_source=hashnode&utm_medium=feed)

Most web applications require user authentication to access their features. As a web developer and a technical founder, I just wished that there was a package allowing me to skip all the development work to set up the user sign-up, sign-in, change pa...

2 min read · [chaoming.hashnode.dev](https://chaoming.hashnode.dev/firebase-reactjs-fireactjs-the-open-source-framework-for-building-user-portals?utm_source=hashnode&utm_medium=feed)

[Nov 19, 2022](https://hashnode.com/posts/firebase-reactjs-fireactjs-the-open-source-framework-for-building-user-portals/6378b215f90c2f14faeec741)

### [I created a React country and state field package that can detect the user's IP geolocation](https://chaoming.hashnode.dev/i-created-a-react-country-and-state-field-package-that-can-detect-the-users-ip-geolocation?utm_source=hashnode&utm_medium=feed)

For users, picking their countries from a long list of options in the country field is quite an annoying thing. To solve the UX issue, I created a country and state field package for React developers. The fields can detect the user's IP geolocation, ...

2 min read · [chaoming.hashnode.dev](https://chaoming.hashnode.dev/i-created-a-react-country-and-state-field-package-that-can-detect-the-users-ip-geolocation?utm_source=hashnode&utm_medium=feed)

[Nov 15, 2022](https://hashnode.com/posts/i-created-a-react-country-and-state-field-package-that-can-detect-the-users-ip-geolocation/637378f3d962164a0ae5438f)

### [How to pre-fill user country and state fields in Reactjs forms](https://chaoming.hashnode.dev/how-to-pre-fill-user-country-and-state-fields-in-reactjs-forms?utm_source=hashnode&utm_medium=feed)

Learn how to detect the user's country and state based on his or her IP address, and pre-fill the order forms in React

3 min read · [chaoming.hashnode.dev](https://chaoming.hashnode.dev/how-to-pre-fill-user-country-and-state-fields-in-reactjs-forms?utm_source=hashnode&utm_medium=feed)

[1](https://hashnode.com/posts/how-to-pre-fill-user-country-and-state-fields-in-reactjs-forms/6331aa534dd8b2344a7694ab) [Sep 26, 2022](https://hashnode.com/posts/how-to-pre-fill-user-country-and-state-fields-in-reactjs-forms/6331aa534dd8b2344a7694ab)
