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:

  • oak: Koa like, light weight server framework
  • Ultra: frontend framework

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:

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.