### Ultra 2.0 #### Zero-Legacy Deno/React Suspense SSR Framework* [![Discord][discord-badge]][discord] ![GitHub Workflow Status](https://github.com/exhibitionist-digital/ultra/actions/workflows/ci.yml/badge.svg) [![Deno module](https://shield.deno.dev/x/ultra)](https://deno.land/x/ultra) ![Deno compatibility](https://shield.deno.dev/deno/^1.27.1)
\* 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. ```sh 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** - 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](https://discord.gg/XDC5WxGHb2). Come say 'sup. ### ๐ŸงŸ Contributions The **Ultra** community welcomes outside contributions. See the [Contributor Guidelines](./CONTRIBUTING.md) for details. ### ๐Ÿฆฅ Wishlist Here some things we are interested in for the future of JS and/or Ultra: - React [ESM exports](https://github.com/facebook/react/issues/10021) - [AbTs: Anything but TypeScript](https://tc39.es/proposal-type-annotations) - Libraries supporting [optimal JavaScript module design](https://jaydenseric.com/blog/optimal-javascript-module-design) - React [resources](https://github.com/reactjs/rfcs/pull/219) for streaming head management - React [async/await support](https://github.com/reactjs/rfcs/pull/229) - [Native import maps](https://caniuse.com/import-maps) support in Safari and Firefox - [Dynamic import](https://github.com/denoland/deploy_feedback/issues/1) support on Deno Deploy - [Native CSS modules](https://css-tricks.com/css-modules-the-native-ones/) - More and better ESM CDNs **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