Skip to main content
Module

x/ultra/README.md

๐Ÿ’Ž Modern Streaming React Framework in Deno
Go to Latest
File

ULTRA

Modern Streaming React Framework

ultrajs.dev

GitHub Workflow Status deno module deno compatibility


Ultra is a web framework that leans hard into your browserโ€™s native features. Embrace the future of ES Modules, Import Maps, and Web Streams. All while supporting some of the non-standards that many normal people love for some reason (JSX and TypeScript).

Itโ€™s driven by the following hot-takes:

  • ESM is non-negotiable in {currentYear}
  • SSR is non-negotiable in {currentYear}
  • Bundling is an anti-pattern in {currentYear}
  • Data can be requested anywhere, and is accessible on the server, always
  • Lazy routing with dynamic imports trumps FS routing
  • Less magic in tooling and frameworks is a good thing
  • Simplify your workflow and tech stack at all costs - life is too short
  • Streams are neat

๐Ÿ‘ฏ Community

We now have a Discord. Come say HI.


๐Ÿ™Œ next

We are working towards the next milestone. v1.0.0 ๐Ÿ—ฟ


๐Ÿšง v0.8.0

Heaps of updates in v0.8.0! Because of these new features. Please ensure you are using at least Deno v1.20.3

  • Vendored dependencies! We have a script that can take your CDN deps and make them local.
  • API routes! (Thanks @Industrial)
  • Option to disable streaming ๐Ÿ˜ฑ. Passing the env disableStreaming=1 will force Ultra to use a custom renderToString equivalent - returning a fully resolved, suspense compatible, html page! (BETA)
  • Websocket refresh in dev mode. Ultra will restart on local changes.
  • Full support for react@18: There were some updates to how streams are handled in the latest rc.
  • Tighter integration with Deno config file. Specifiying your importMap in deno.json is required
  • Removal of makefile in favour of deno task
  • Legacy: We also export an Oak compatible ultraHandler for support inside of an pre-existing Oak project

Notes on using Deno Deploy

We aim to support Deno Deploy as a first class target for Ultra, but there are a few things to consider before deploying:

NOTE: These above issues are not a limitation when deploying to a service like Fly.io, and if you require either of the above, we recommend using Fly.io with a custom dockerfile.


โœจ Wishlist

Here some things we are interested in for the future of JS and/or Ultra:

Thank you for going on this journey with us.