Ultra

Zero-Legacy Deno/React Suspense SSR Framework

README


ULTRA


Modern Streaming SSR React Framework in Deno


[![Discord][discord-badge]][discord] [![GitHub Workflow Status][actions-badge]][actions] deno module
deno compatibility



Ultra is a web-app 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


🏄 If you want to dive right in,
the easiest way. Less words, more ESM.


‼️ v1.0.0 @__@


- Total overhaul of transforms, migration to brand new
- Esbuild removed!
- Unfettered support for React 18!
- Tests!
- Example integration with @mdx-js/mdx!
- Improvements to API routes!
- Updated docs!
- New website!

Migration notes:

Previous v0.8.0 (and earlier) projects need to update the server import. We
removed the mod.ts file for simplicity.

  1. ``` js
  2. import ultra from "https://deno.land/x/ultra/server.ts";
  3. ```


Community


We now have a Discord. Come say HI.


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:

  this means using React Lazy imports will not work. If you try to deploy
  anything with dynamic imports, the project will fail.
  if using API routes, there is a good chance any requests made in your
  components may fail during SSR.

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:

- Better
- Native import maps: Browser support for
  import maps is still a bit sketchy. Instead of using import map polyfills,
  Ultra inlines your imports directly into the served ES modules.
- Dynamic import support
  on Deno Deploy

Thank you for going on this journey with us.

[docs-badge]: https://img.shields.io/github/v/release/exhibitionist-digital/ultra?label=Docs&logo=deno&color=000000&
[docs]: https://ultrajs.dev/docs
[discord-badge]: https://img.shields.io/discord/956480805088153620?logo=discord&label=Discord&color=000000&&logoColor=ffffff
[discord]: https://discord.gg/XDC5WxGHb2
[actions-badge]: https://img.shields.io/github/workflow/status/exhibitionist-digital/ultra/fmt%20+%20lint?color=000000&logo=github&label=Tests
[actions]: https://github.com/exhibitionist-digital/ultra/actions


Contributions


The Ultra community welcomes outside contributions. See the