Great article! I am currently working on a team where we help product teams adopt new technologies, and we are currently seriously looking at server components with Next.js. Server components offer a lot of advantages in terms of both composition patterns and performance. Server actions are a great way to encapsulate fetching behavior and offer a better pattern than using custom React hooks. Custom hooks, while useful violate basic software design principles because all consumers must depend on the implementation, not the interface of a hook, meaning you can't pass them in as properties and such.
I am a highly experienced polyglot developer with 8 years at AMZN and multiple startups. I work across the stack from data pipelines, to APIs and frontend. I am very experienced in recruiting and team building, with experience across a broad range of industries. Contact me if you need a solid, seasoned professional to grow your teams and your business.
I am a highly experienced polyglot developer with 8 years at AMZN and multiple startups. I work across the stack from data pipelines, to APIs and frontend. I am very experienced in recruiting and team building, with experience across a broad range of industries. Contact me if you need a solid, seasoned professional to grow your teams and your business.
I am a highly experienced polyglot developer with 8 years at AMZN and multiple startups. I work across the stack from data pipelines, to APIs and frontend. I am very experienced in recruiting and team building, with experience across a broad range of industries. Contact me if you need a solid, seasoned professional to grow your teams and your business.
I've been using Rust and WASM for my latest front-end project, and I think this setup is a viable alternative to commonly used JS frameworks for those willing to put in some effort to ramp up on new technology. Addressing the concerns from the article:
"No universal import system" - Rust has it's own module system and Cargo is used for managing dependencies, no need to worry about different module systems.
"Layers of minification, uglification, and transpilation." Just compile Rust to WASM file for the browser, same as using any other compile target.
"Wildly different environments." Something that you'll still need to deal with. Some runtime dependencies are system-specific (code running on the browser usually needs access to Web APIs, and JavaScript, code running on the server can't access WebAPIs but can access the system clock and filesystem. Sometimes separate libraries or separate runtime configs are needed (e.g. configurable time source)
"Overemphasis on file structure." Not a problem for imports, but you may still have file structure dependencies things like CSS, image resources etc.
"Configuration hell." Pretty much non-existent once you have your Rust compiler setup locally.
"Development parity." Just use trunk: https://trunkrs.dev/, to watch, build and serve, config is minimal.
Highly-experienced polyglot engineer with a history of making a large financial impact on cross domain, business critical applications seeking the opportunity to do more of the same. My experience includes Amazon (8 +years), and more recently series A-C startups in various industries.
It's not what you need, it's what you want but just don't know it yet. Use Rust/WASM and you get a superior package manager in Cargo. Rust gets you a solid type system that's built in instead of an add-on like TypeScript or Flow, and there is no need for a complicated build pipeline with Babel and WebPack, just a single compile target. Overall, I find working with Rust/WASM to be a better developer experience the working with the NPM/Js ecosystem.
I think WASM will win. I've been using JavaScript for 25+ years, and I just wrote a SPA using Rust/WASM using the Leptos framework: https://github.com/leptos-rs/leptos, and now I don't want to go back to JavaScript. Cargo is a superior package manager, with Cargo I might actually be able to let me my project sit for a year or two and go back and build to a working runtime without having to do a lot of dependency updates (good luck doing that with NPM). Rust has a solid type system, and with the borrow checker along with pattern exhaustive matching I can write something that I know is solid and will be difficult to break. There is no need to have multiple stages build pipeline running through Babel and Webpack which need to be properly configured; simply compile Rust to the WASM target and that is it. The WASM bundle is also likely to be smaller than a corresponding JavaScript bundle. Additionally, with Rust it is easier to do low-level stuff in the client efficiently such as feature extraction from image binaries. Also, the application I wrote with WASM is faster than a similar app I wrote in React, although I attribute that mostly to the fact that Leptos does not use a virtual DOM as React does.
I am a highly experienced polyglot developer, 8+ years at AMZN and multiple startups. I work across the stack from data pipelines, to APIs and frontend. I am very experienced in recruiting and team building