Awesome
<div align="center"> <br /> <img src="https://raw.githubusercontent.com/exhibitionist-digital/ultra/main/examples/ultra-website/public/ultra.svg" height="250" />Ultra 2.0
Zero-Legacy Deno/React Suspense SSR Framework<sup>*</sup>
</div>* If you want to get very meta (not facebook), Ultra can be viewed as a tiny bridge to utilise native browser features ๐ whilst using popular front-end libraries. ๐งฐ
๐ง Start your journey
Here's a basic Ultra project to set you on your way.
deno run -A -r https://deno.land/x/ultra/create.ts
โจ What's new
Ultra allows you to write web-apps which massively simplify your tool chain. You write ESM, we ship ESM. Where we are going, there is no "bundling" (it feels so 2018 just saying that word).
- Less opinionated, BYO routing, styling, data fetching, and head libraries
- Support for much of the React ecosystem by custom server/client controls<sup>**</sup>
- Native import maps in browser ๐ค
- Localised import maps for production ๐ฅ
- API routing
- Overhaul of internal source code
- Updated Deno Deploy support
** Examples include (but not limited to) react-query
twind
stitches
react-router
wouter
mdx
@__@
Does Ultra 'ship JS'?
Yes, Ultra creates rich web applications which allow complex client-side routing, allow components to persist through route changes (media players, interactive elements, etc).
Our goal is to both write AND ship source code that works the same way on server/runtime and client. We view the browser as more than just a "target". Browser is life, and JavaScript is good.
Can I use TypeScript and/or JSX?
If you want.
What native browser features should we all be using more?
Unbundled ESM, service workers, universal import maps, cascading style sheets.
Ultra always has been (and always will be) powered 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 have the Discord. Come say 'sup.
๐ง Contributions
The Ultra community welcomes outside contributions. See the Contributor Guidelines for details.
๐ฆฅ Wishlist
Here some things we are interested in for the future of JS and/or Ultra:
- React ESM exports
- AbTs: Anything but TypeScript
- Libraries supporting optimal JavaScript module design
- React resources for streaming head management
- React async/await support
- Native import maps support in Safari and Firefox
- Dynamic import support on Deno Deploy
- Native CSS modules
- More and better ESM CDNs
Thank you for going on this journey with us.