What does Deno lack for web app development?
by mmyoji
2 min read
This is just my personal feeling. Don't take it seriously.
Conclusion
Yes, if you use it as a part of your web application or the app is a small one.
What is enough
Deno itself has already been v1.x and it has built-in useful tools like linter, formatter, testing, bundler, etc. A lot of libraries supporting ESM can be used as well. You can deploy your app to Deno Deploy easily or to arbitrary Cloud service as you want.
So why is it for limited use cases?
I think there're missing things when you use Deno as your main web app development platform.
What is NOT enough
- Dependency management tool
- Fullstack web app framework
- ORM libraries
- Error detection tool
[RESOLVED] Dependency management tool
Deno supports
lock file
with --lock
option. But it doesn't have built-in tool compatible with
npm outdated
. In addition, when you use Node.js on GitHub, you can catch up
the latest version of dependencies and upgrade them almost automatically with
using dependabot.
There are 3rd party tools for dependency upgrade:
Both of them assumes that you have deps.ts
. But import map is not
supported.
If you use import map, build your own tool like dedep/udd and setup your own
GitHub Action, then upgrading libraries would be much easier.
[UPDATED 2022-05-13] udd
supports import map
(ref).
Fullstack web app framework
There are some framworks for Deno like:
Next.js-like frameworks (aleph.js and fresh) are still in unstable state. When they're stable, we can say Deno has fullstack frameworks.
ORM libraries
There isn't a sophisticated ORM library like prisma in Deno although I don't think ORM library always be a best/necessary tool.
I found some ORM, query builder, database migration tools for Deno:
- denoDB · MySQL, SQLite, MariaDB, PostgreSQL and MongoDB ORM for Deno
- oslabs-beta/dORM: SQL ORM for Deno
- halvardssm/deno-nessie: A modular Deno library for PostgreSQL, MySQL, MariaDB and SQLite migrations
Error Detection tool
As of Deno Deploy, it supports Crash Reports:
100 crash reports per deployment, 100 logs per crash report
ref: Pricing & Limits | Deploy Docs
Sentry doesn't support Deno yet. see: Support for Deno server · Issue #3009 · getsentry/sentry-javascript
If a rich error detection tool isn't necessary for you, you just can catch an error and send it to a chat tool like Slack or Discord. That's enough.
Summary
For simple applications, you don't need those tools.
However, I cannot recommend Deno for everyone who want to do everything around web app development.
I hope the ecosystem would be much better soon.