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

As we await the official release of React 18, here some things we are interested in for the future of JS and/or Ultra:

Thank you for going on this journey with us.