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
This is a near full rewrite of Ultra. It includes:
- Removal of Oak, in favour of
std/http
library. This makes it heaps easier to deploy to multiple targets - Addition of
preloadmodule
link
header attributes for core and application level assets - Main
app
entry point added toimportMap
- Deno Deploy support via GitHub Actions
- Fly/Docker support
- Example projects moved into their own repo for easier hacking
As we await the official release of React 18, here some things we are interested in for the future of Ultra:
- Deno vendor: Serve remote packages locally
- Vercel support
- React 18 ESM support
- 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.
- Simpler alternatives to esm.sh
- Dynamic import support on Deno Deploy
- Native CSS modules
- A custom
request
context hook - Meaningful Puppeteer tests
Thank you for going on this journey with us.