PGlite – Postgres in WASM
github.comFitting PostgreSQL into a 12MB binary with a simple API is amazing!
I was so excited to try it out it that I just released an in-browser PostgreSQL playground on top of PGlite.
It's also open source and easy to integrate:
Awesome! Will check it out
This is awesome. Are extensions like PostGIS supported? I wish react-native natively supported WASM. It would be cool to run this client-side instead of sqlite.
join us on the Extism discord https://extism.org/discord, we're working on some things that will enable this. would love to hear what you're thinking!
This is super cool. Postgres is slowly overlapping on every part of the data stack, even SQLite isn't safe!
Related (but different):
Postgres WASM - https://news.ycombinator.com/item?id=33067962 - Oct 2022 (185 comments)
Interesting that it could be done at all - but having a hard time coming up with any real world use cases for this. Are there any?
Code testing is a big one for me. I'm currently using in-memory sqlite for tests and I'm often running into differences between sqlite and postgres (default values, JSON handling, etc). This could allow me to use the real thing without running a full Docker instance.
I think performance and cost are the big motivators here.
I work on a web framework for building data apps like reports and dashboards, and we use duckDB’s WASM runtime for interactions (e.g when a user changes a date range filter). It’s really fast, and you don’t spend snowflake credits.
No one using postgres in the cloud is going to use this as an alternative, but there are at least two use cases where this could be very useful:
- You want your app to be local first (snappy, great offline support, etc) but sync data to a server. This is the ElectricSQL use case.
- You want a serious data store in-browser. SQLite via wasm already fits this use case, but it's nice to have options.
It can persist data to indexedDB, so web applications can use it if they want a more flexible alternative
That's neat, I wonder what the overhead is though.
How is this different than the one done by CrunchyData here https://www.crunchydata.com/blog/crazy-idea-to-postgres-in-t...
The previous PG WASM projects from Crunchy and Snaplet have run Postgres in a VM and required a large 32MB download.
This is pure WASM, no VM, 3.7MB download. Plus it has persistent storage.
This seems possible due to the separation of Postgres storage and compute work done by Neon?
Yup, this is based on work by Neon. Also the Neon model allows you to sync in a database on demand, whilst scaling to zero when you’re not using it.
This is amazing! I’ve been wanting this to exist for years for use in unit tests. This made my day (and maybe upcoming work week)