- v2.3.8Latest
- v2.3.7
- v2.3.6
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.7
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.1
- v2.0.0
- v2.0.0-beta.19
- v2.0.0-beta.18
- v2.0.0-beta.17
- v2.0.0-beta.16
- v2.0.0-beta.15
- v2.0.0-beta.14
- v2.0.0-beta.13
- v2.0.0-beta.12
- v2.0.0-beta.11
- v2.0.0-beta.10
- v2.0.0-beta.9
- v2.0.0-beta.8
- v2.0.0-beta.7
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- v2.0.0-alpha.19
- v2.0.0-alpha.18
- v2.0.0-alpha.17
- v2.0.0-alpha.16
- v2.0.0-alpha.15
- v2.0.0-alpha.14
- v2.0.0-alpha.13
- v2.0.0-alpha.12
- v2.0.0-alpha.11
- v2.0.0-alpha.10
- v2.0.0-alpha.9
- v2.0.0-alpha.8
- v2.0.0-alpha.7
- v2.0.0-alpha.6
- v2.0.0-alpha.5
- v2.0.0-alpha.5
- v2.0.0-alpha.4
- v2.0.0-alpha.3
- v2.0.0-alpha.2
- v2.0.0-alpha.1
- v2.0.0-alpha.0
- v1.0.1
- v1.0.0
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.7.0
- v0.6
- v0.5
- v0.4
- v0.3
- v0.2
- v0.1
- v0.0
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 customrenderToString
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
indeno.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:
- Dynamic imports are not supported, this means using React Lazy imports will not work. If you try to deploy anything with dynamic imports, the project will fail.
- Recursive requests are not supported, 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 Deno support in Vercel
- React 18 native ESM exports
- 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
- Native CSS modules
Thank you for going on this journey with us.