diff --git a/README.md b/README.md
index 4eccb16b6..eded6369a 100644
--- a/README.md
+++ b/README.md
@@ -110,6 +110,15 @@ Dioxus apps are styled with HTML and CSS. Use the built-in TailwindCSS support o
+
+## Truly fullstack applications
+
+Dioxus deeply integrates with [axum](https://github.com/tokio-rs/axum) to provide powerful fullstack capabilities for both clients and servers. Pick from a wide array of built-in batteries like WebSockets, SSE, Streaming, File Upload/Download, Server-Side-Rendering, Forms, Middleware, and Hot-Reload, or go fully custom and integrate your existing axum backend.
+
+
+

+
+
## Experimental Native Renderer
Render using web-sys, webview, server-side-rendering, liveview, or even with our experimental WGPU-based renderer. Embed Dioxus in Bevy, WGPU, or even run on embedded Linux!
@@ -124,7 +133,7 @@ Render using web-sys, webview, server-side-rendering, liveview, or even with our
Get started quickly with a complete set of primitives modeled after shadcn/ui and Radix-Primitives.
-

+
## First-class Android and iOS support
@@ -136,28 +145,6 @@ Dioxus is the fastest way to build native mobile apps with Rust. Simply run `dx
-## Productive, typesafe, fullstack web framework
-
-Directly call your backend from your frontend with our built-in type-safe RPC using [`server_fn`](http://crates.io/crates/server_fn). Supports streaming, suspense, bundle splitting, websockets, and more.
-
-```rust
-fn app() -> Element {
- let mut fortune = use_signal(|| "Fetch a fortune!");
- rsx! {
- h1 { "{fortune}" }
- button {
- onclick: move |_| async move {
- fortune.set(fetch_fortune().await.unwrap());
- }
- }
- }
-}
-
-#[server]
-async fn fetch_fortune() -> ServerFnResult {
- "Dioxus is super productive!".to_string()
-}
-```
## Bundle for web, desktop, and mobile
diff --git a/examples/01-app-demos/websocket_chat.rs b/examples/01-app-demos/websocket_chat.rs
index d86a22668..28b770900 100644
--- a/examples/01-app-demos/websocket_chat.rs
+++ b/examples/01-app-demos/websocket_chat.rs
@@ -13,8 +13,6 @@ use serde::{Deserialize, Serialize};
use uuid::Uuid;
fn main() {
- println!("IP and PORT: {:#?}", std::env::var("IP"));
- println!("IP and PORT: {:#?}", std::env::var("PORT"));
dioxus::launch(app);
}
diff --git a/notes/fullstack-websockets.avif b/notes/fullstack-websockets.avif
new file mode 100644
index 000000000..a9fc2c0a1
Binary files /dev/null and b/notes/fullstack-websockets.avif differ