{"id":1568,"date":"2023-02-07T11:47:10","date_gmt":"2023-02-07T11:47:10","guid":{"rendered":"https:\/\/www.workfall.com\/learning\/blog\/?p=1568"},"modified":"2025-09-23T03:43:02","modified_gmt":"2025-09-23T03:43:02","slug":"how-to-build-a-rust-webassembly-frontend-app-with-yew-framework","status":"publish","type":"post","link":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/","title":{"rendered":"How to Build a Rust WebAssembly Frontend App with Yew Framework?"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/6bWodDWk5W9HNG8UrYe1qwDdw3XJvkTnoz-lTqbVjY6JZUhtqMF5c5wykkbVJ1-cOmmQzkI9wg0_SHS6lWLt45tSoRcqF6vrj0MU58Hae7KiskECSI3VmKPALQBERCiKdiPuu8L1-CJjFrhLhPrk0Ps\" alt=\"Rust WebAssembly\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">While Rust is known for its backend web development capabilities, the introduction of WebAssembly (Wasm) has enabled the development of rich front-end apps in Rust.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">With the introduction of WebAssembly, it became possible to build frontend web apps in <a href=\"https:\/\/www.workfall.com\/learning\/blog\/aws-is-in-love-with-rust-and-you-should-be-too\/\">Rust<\/a>, such as the one we just built, expanding development opportunities for developers.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">While all of the libraries, frameworks and technologies discussed in this post are still in their early stages of development, the features and capabilities available are already maturing and stable, allowing for larger projects in the future.<\/p>\n\n\n\n<h2>What Is WebAssembly and Why Is It Important?<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">WebAssembly is a compilation target that enables binary code to be executed on web browsers.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">It offers high performance and near-native speed for applications that run on the web.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">This means that developers can write code in their favorite low-level languages such as C, C++, and Rust which are compiled into WebAssembly and can interact with browser APIs.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">It is important to note that we still need some JavaScript to connect WASM to browser APIs for execution hence proving that it is not a replacement for JavaScript but rather a powerful companion.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/o483U3lSukGDYogkdjM7JCWFyHCHH_PKDb-pI68HvrxiEiwg2OmQWueFEZbl6Z3Ng_pEshYlJQ14Pzo5cR_h667YMdHsyVP04hDKvLLJm5uFNjBsXW-izxEaTffEPYe3LdLIuS2NcsXrCupv3UvV5to\" alt=\"Rust WebAssembly\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">As we know, JavaScript has never been the ideal language for creating CPU-intensive applications owing to its single-threaded design.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">By CPU intensive we mean heavy computation that will need significantly greater CPU clock speed for example machine learning algorithms, video games, and video editing.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">JavaScript was initially designed to make web pages interactive by modifying lightweight hypertext files; which is achieved by manipulating the DOM(Document Object Model).<\/p>\n\n\n\n<p class=\"has-text-align-justify\">As years went by, a runtime for JavaScript (Node.js) was created that allowed for JavaScript to be written on the server side which came with advantages such as spawning child processes which may alleviate the problem that comes with CPU-intensive applications on the server side.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Unfortunately, client-side JavaScript does not support this architecture, not even web workers can be effective in such a case because, for example, you cannot manipulate the DOM inside a Web Worker.<\/p>\n\n\n\n<p>This is where WebAssembly is a win.<\/p>\n\n\n\n<h2>What Is Yew and How Is It Similar to React?<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">Yew is a Rust Framework for creating web applications that compile to the WebAssembly target that is meant to run on the browser.<\/p>\n\n\n\n<p>However, it is important to note that WebAssembly is cross-platform and can run outside the browser.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Yew implements things the React way i.e it has hooks just like in React functional components, uses a JSX-like syntax to structure content, implements state management, implements a routing library, you can pass props to components and also implements a Virtual DOM.<\/p>\n\n\n\n<p>Rust as a language heavily relies on <strong>macros<\/strong> to accomplish abstracted functionalities.<\/p>\n\n\n\n<p>In Yew, we shall use several macros such as <strong>html!<\/strong>(to write jsx) and <strong>function_component<\/strong>(to declare components).<\/p>\n\n\n\n<h2>Hands-on<\/h2>\n\n\n\n<p>We are assuming that Rust is installed in your system. In case you need to install, you can refer to our <a href=\"https:\/\/www.workfall.com\/learning\/blog\/aws-is-in-love-with-rust-and-you-should-be-too\/\">Rust blog<\/a>.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Rust comes installed with <strong>rustup<\/strong> which is a tool meant for managing Rust versions, <strong>rustc<\/strong> which is the Rust compiler and <strong>cargo<\/strong> which is the package manager for Rust applications.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">To get started with web assembly, we have to install the WebAssembly target using the command <strong>rustup target add wasm32-unknown-unknown<\/strong>.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Next we have to install <strong>trunk<\/strong> using <strong>cargo<\/strong>, the command is <strong>cargo install &#8211;locked trunk<\/strong>. The <strong>trunk<\/strong> package\/crate will help us in serving our application and also assets.&nbsp;<\/p>\n\n\n\n<p>We are also required to install <strong>cargo-generate<\/strong> using the command <strong>cargo install cargo-generate<\/strong>.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The <strong>cargo-generate<\/strong> package\/crate will help us generate a Yew application using a template stored on a code repository like GitHub.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">You can download the complete code of this implementation from our repository: <a href=\"https:\/\/github.com\/workfall\/workfall-yew-app\">https:\/\/github.com\/workfall\/workfall-yew-app<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"has-text-align-justify\">We shall start by creating a Yew application from a provided template using the command <strong>cargo generate &#8211;git <\/strong><a href=\"https:\/\/github.com\/yewstack\/yew-trunk-minimal-template\"><strong>https:\/\/github.com\/yewstack\/yew-trunk-minimal-template<\/strong><\/a>.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">This will prompt you for a project name and it will create a directory with the same name containing all the project files.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/8KmMc5I203Qvwjn0x8Ll869cde_DiqxP8SNN-kkwrMbNfleFTbN2NQtszViTHyyjzdw9X4FbwdASUVs8UkS5pZda8_gr7ysAsLIi_52FBlJ-nRA6mQo62F6tvjyBecl1nppnLRIUIUd7JyePVCZO8eU\" alt=\"Rust WebAssembly\"\/><\/figure>\n\n\n\n<h3>Folder Structure<\/h3>\n\n\n\n<p>The folder structure in <strong>src<\/strong> directory will be organized as follows (just by convention, feel free to organize it as you please):<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/ioBmCVR2gcg2QWPg08ICjikc3P3qK5AyhPWR_OvMGBMIJgBHd4a0tj9YmCBae3coMd9ut5bZdQa97rAE66Lq2u9Z4oiAtLP3gyTBhM0Wsz_ERJl_LHg_pO7FKmqIWxz-PL0-pvtLTdT8hR1uyNCDKBg\" alt=\"Rust WebAssembly\"\/><\/figure>\n\n\n\n<p>Rust compiler recognizes <strong>mod.rs<\/strong> files as modules, therefore we\u2019ll create a components module and a views module.<\/p>\n\n\n\n<p>We have to declare the modules in <strong>main.rs<\/strong> so that they are available anywhere within our application.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><em>Note: Every time you add a new component or view, you must register it in the respective <strong>module(mod.rs)<\/strong> using the syntax <strong>pub mod &lt;file_name_without_extension&gt;<\/strong>.<\/em><\/p>\n\n\n\n<p>The example is shown below for the <strong>nav<\/strong> component<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/zFiku9wzIVU-drAcZxIqAavuTHpZs6qAoocn-H_RgKqgybq1mJaWrp4rYHB-yEe8XgFQwNGx691fUAa-N_RycpqrlxzW1PgfMxraoisHJyY2tDYsR-TXdhpLugVd6wqiSkg7LekMJIg2UiHMpl1_mQM\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">In the root folder, we can see some autogenerated files including a <strong>scss<\/strong> file that we shall use to style our application.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">If you expand the dist folder, you will see the <strong>.wasm<\/strong> file and also a <strong>.js<\/strong> file whose main purpose is to load the <strong>.wasm<\/strong> file for use by the browser APIs.<\/p>\n\n\n\n<p>It is not a transpiler WASM as someone may easily think.<\/p>\n\n\n\n<h3>Configuring Logging and Debugging in the Browser Console<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">When using JavaScript we can debug using the console by printing logs using the <strong>console.log()<\/strong> method.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">For Yew, we have to configure a wasm logger to assist us with that purpose.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">We have to add the following to our <strong>Cargo.toml<\/strong>: <strong>log = &#8220;0.4.6&#8221;<\/strong> and <strong>wasm-logger = &#8220;0.2.0&#8221;<\/strong>.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">In the main.rs file add <strong>wasm_logger::init(wasm_logger::Config::default());<\/strong> to the <strong>main<\/strong> function before the renderer.<\/p>\n\n\n\n<p>To create console logs, you can now use the <strong>log::info!(&#8220;&#8221;);<\/strong> macro.<\/p>\n\n\n\n<h3>Handling Routing<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">We are going to configure our router in the app.rs file, but first let us add <strong>yew-router = &#8220;0.17&#8221;<\/strong> crate to our <strong>Cargo.toml<\/strong>&nbsp;<\/p>\n\n\n\n<p>Then create at least a component (a navigation bar) and views(home, about, contact, faq) that we can route to.<\/p>\n\n\n\n<p><strong>app.rs:<\/strong><\/p>\n\n\n\n<p>We shall use a procedural macro to create a Route enum with the following syntax:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/pgVDJ5WVJmhEiI7V3QBStED24Qx9rPkewnffA942N_E9zL7Ibs3UEbsmcVbogH6dJE0mhgySWVotUaw2o8mVfIKm7349Qw4376rC4CwxPzXwUMeCJ3F-L6o-Vm1lSu1Plw9N7qbapTklqBgEOZ3UU8g\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>nav.rs:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">Define a struct for nav items and create a state variable using the <strong>use_state<\/strong> hook which will be a vector of type <strong>NavItem<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/NEf0jKmjk6VfVKxIw-oxxsiotuVzFLi_3AoT20sYfdo5C1m30MTBUzKEzY89SOQ37NBv2SALfQEkd43nBtzNhL-xFY9jStzqRo7Zbw5sVpaPvEnqP9X8QKxSPBwfA_gO995o4nux0BxPI0E-6fTkvIY\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\"><strong>nav.rs(2):<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong><br><\/strong>We shall use the <strong>.iter()<\/strong> method to return an iterator from the vector then we can create each nav item and then use <strong>.collect()<\/strong> to transform the iterator into a collection of \u201cHTML\u201d or rather JSX elements.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/wNAYA_lnPartohwjQq5VtV7TAwfnR5IZHtJx9sPQ6UvEnddlH1NsoH53w2dP6HfjYtk37SYK54POnvrz4S8JNlCKpx3pbxwlwzV30AcrEr_L9DN0vi4SWtooPYfYOSveUdtzVZsKfoJGO-FlmzelWfQ\" alt=\"\"\/><\/figure>\n\n\n\n<h3>State Management<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">Yew has the <strong>use_state<\/strong> hook to manage the local state and goes further to implement state management using a sort of Context API in React.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">It is always a good idea to centrally manage the state of your application to avoid prop drilling and the same applies to Yew.<\/p>\n\n\n\n<p>We shall use a simple example that will track the state of a counter that registers effects from the <strong>home<\/strong> component.<\/p>\n\n\n\n<p><strong>app.rs:<\/strong><\/p>\n\n\n\n<p>We shall start by defining a struct for the global state.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">For now, we shall start with a simple counter. Initialize the state using the <strong>use_reducer<\/strong> hook and set the counter to zero.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/LxaaFjlQQKpnHwM6tr0kM5AeMUYxwmAmoNYPuy0uqTeTR_fc2XtIz4N_U8HkuP13EDlVtbvSj33X-JSuDcfFlegUQdSLqEttwOwUZ51bEQJJ1_NAfUo5oOpEbvm41DLPlwhT-ksYQlJskNaDfcuPLAE\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">We shall set the counter state in the home component and consume this state in the other components using the <strong>use_context<\/strong> hook.<\/p>\n\n\n\n<p><strong>home.rs:<\/strong><\/p>\n\n\n\n<p>We shall create a <strong>click<\/strong> event handler for the increment button<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/ljZ1ENJN8b1ufQBKPM4cOzvDarZ_wZ5uqYwtv-PRpa7JKjxKuf_xFlitQASKhSbbq7GjCNwHhhtUhoVIC7a2EDfa0ad_5EBvnibouyYVPYlZodM6-vnhfHBx3ej2gPR2OKYextRmCcqt5cMmH3Swy0I\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>The home view:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/tdIjF1oH0n_fbz6cmpgZM_SdrTgn0NW0a2HMU_5CE1JmlG1JEkfaf3ok2ckrUfM1amcbArXDrXn2qkBIcyW3jE2b-SvSNpPvIyF0MAHJk8nSVrw7FCRLl1Co4QH4NtQT86lo28TpVbQpAIbb6nDrypQ\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>about.rs:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/ZXQZA7p2TdlS31pqLtj2pjLVRs65-DOpxQme1TtrQee2QsjhiJZVq-qocZVOcbtFvebLBQxBa2qHWI02hbu2--7_jHK4LR7diisUkSI8nLJh_E4Ds7rN0roNm_ARdrwH2Fdzn8W9cIL_MdSpGl01PYc\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>The about view:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/54Tvrs1FvF9Mx1ck03T61OGoDn50lVOnjDrBAM5mNssSlJVbVjPDLqB3MNsL-1tIocwWydGfcU9eOKLkwThSvy0NH_PlFuxcjuSb72u5Stj0sLHwOgxAXzZIanDQRmbXpTdBo_h5AERJsIzBxwNFyg8\" alt=\"\"\/><\/figure>\n\n\n\n<h2>Conclusion<\/h2>\n\n\n\n<p class=\"has-text-align-justify\">In this blog, we explored how FAST one can create a Frontend App using Yew Framework. You must have noticed many similarities between Yew and React.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">You have also learned that Yew supports state management using contexts and the local state as well.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">We have also discussed how WebAssembly may excel in creating high-performance applications that might be CPU-intensive. We will come up with more such use cases in our upcoming blogs.<\/p>\n\n\n\n<p><strong>Meanwhile\u2026<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">If you are an aspiring Rust Lover and want to explore more about the above topics, here are a few of our blogs for your reference:<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/www.workfall.com\/learning\/blog\/aws-is-in-love-with-rust-and-you-should-be-too\/\">AWS is in love with RUST and you should be too!<\/a><\/li><li><a href=\"https:\/\/www.workfall.com\/learning\/blog\/how-to-create-a-rest-api-with-rust-rocket-framework-and-diesel-middleware-with-postgresql-database\/\">How to Create a REST API with Rust Rocket Framework and Diesel Middleware with PostgreSQL Database?<\/a><\/li><\/ul>\n\n\n\n<p>Stay tuned to get all the updates about our upcoming blogs on the cloud and the latest technologies.<\/p>\n\n\n\n<p><strong>Keep Exploring -&gt; Keep Learning -&gt; Keep Mastering&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">At <a href=\"https:\/\/www.workfall.com\/\">Workfall<\/a>, we strive to provide the best tech and pay opportunities to kickass coders around the world. If you\u2019re looking to work with global clients, build cutting-edge products and make big bucks doing so, give it a shot at <a href=\"https:\/\/www.workfall.com\/partner\/\">workfall.com\/partner<\/a> today!<\/p>\n\n\n<style type=\"text\/css\"><\/style><section id='' \n                class='helpie-faq accordions faq-toggle open-first groupSettings-507__enabled' \n                data-collection='' \n                data-pagination='0' \n                data-search='0' \n                data-pagination-enabled='0'\n                role='region'\n                aria-label='FAQ Section'\n                aria-live='polite'><h3 class=\"collection-title\">Frequently Asked Questions:<\/h3><article class=\"accordion \"><div class='helpie-faq-row'><div class='helpie-faq-col helpie-faq-col-12' ><ul><li class=\"accordion__item \"><div class=\"accordion__header \" \r\n                id=\"accordion-header-post-2859\"\r\n                role=\"button\"\r\n                aria-expanded=\"false\"\r\n                aria-controls=\"accordion-content-post-2859\"\r\n                data-id=\"post-2859\" \r\n                data-item=\"hfaq-post-2859\" \r\n                style=\"background:transparent;\" \r\n                data-tags=\"\"\r\n                tabindex=\"0\"><div class=\"accordion__title\">Q. Why use Rust with WebAssembly for frontend apps?<\/div><\/div><div id=\"accordion-content-post-2859\" \r\n                class=\"accordion__body\" \r\n                role=\"region\"\r\n                aria-labelledby=\"accordion-header-post-2859\"\r\n                style=\"background:transparent;\"><p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><span style=\"font-weight: 400\"><strong>A:<\/strong> Rust offers memory safety and high performance, while WebAssembly enables running Rust code in the browser at near-native speed.<\/span><\/p>\n<\/div><\/li><li class=\"accordion__item \"><div class=\"accordion__header \" \r\n                id=\"accordion-header-post-2860\"\r\n                role=\"button\"\r\n                aria-expanded=\"false\"\r\n                aria-controls=\"accordion-content-post-2860\"\r\n                data-id=\"post-2860\" \r\n                data-item=\"hfaq-post-2860\" \r\n                style=\"background:transparent;\" \r\n                data-tags=\"\"\r\n                tabindex=\"0\"><div class=\"accordion__title\">Q. What is the Yew framework in Rust?<\/div><\/div><div id=\"accordion-content-post-2860\" \r\n                class=\"accordion__body\" \r\n                role=\"region\"\r\n                aria-labelledby=\"accordion-header-post-2860\"\r\n                style=\"background:transparent;\"><p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><span style=\"font-weight: 400\"><strong>A:<\/strong> Yew is a Rust framework for building component-based web applications using WebAssembly.<\/span><\/p>\n<\/div><\/li><li class=\"accordion__item \"><div class=\"accordion__header \" \r\n                id=\"accordion-header-post-2861\"\r\n                role=\"button\"\r\n                aria-expanded=\"false\"\r\n                aria-controls=\"accordion-content-post-2861\"\r\n                data-id=\"post-2861\" \r\n                data-item=\"hfaq-post-2861\" \r\n                style=\"background:transparent;\" \r\n                data-tags=\"\"\r\n                tabindex=\"0\"><div class=\"accordion__title\">Q. How does Yew compare with React or Vue?<\/div><\/div><div id=\"accordion-content-post-2861\" \r\n                class=\"accordion__body\" \r\n                role=\"region\"\r\n                aria-labelledby=\"accordion-header-post-2861\"\r\n                style=\"background:transparent;\"><p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><span style=\"font-weight: 400\"><strong>A:<\/strong> It offers similar component architecture but with Rust\u2019s safety guarantees and WebAssembly\u2019s speed advantages.<\/span><\/p>\n<\/div><\/li><li class=\"accordion__item \"><div class=\"accordion__header \" \r\n                id=\"accordion-header-post-2862\"\r\n                role=\"button\"\r\n                aria-expanded=\"false\"\r\n                aria-controls=\"accordion-content-post-2862\"\r\n                data-id=\"post-2862\" \r\n                data-item=\"hfaq-post-2862\" \r\n                style=\"background:transparent;\" \r\n                data-tags=\"\"\r\n                tabindex=\"0\"><div class=\"accordion__title\">Q. Is WebAssembly production-ready for frontend development?<\/div><\/div><div id=\"accordion-content-post-2862\" \r\n                class=\"accordion__body\" \r\n                role=\"region\"\r\n                aria-labelledby=\"accordion-header-post-2862\"\r\n                style=\"background:transparent;\"><p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><span style=\"font-weight: 400\"><strong>A:<\/strong> Yes. WebAssembly is widely supported by modern browsers and is increasingly used in production apps.<\/span><\/p>\n<\/div><\/li><li class=\"accordion__item \"><div class=\"accordion__header \" \r\n                id=\"accordion-header-post-2863\"\r\n                role=\"button\"\r\n                aria-expanded=\"false\"\r\n                aria-controls=\"accordion-content-post-2863\"\r\n                data-id=\"post-2863\" \r\n                data-item=\"hfaq-post-2863\" \r\n                style=\"background:transparent;\" \r\n                data-tags=\"\"\r\n                tabindex=\"0\"><div class=\"accordion__title\">Q. Can I use existing JavaScript libraries with Yew apps?<\/div><\/div><div id=\"accordion-content-post-2863\" \r\n                class=\"accordion__body\" \r\n                role=\"region\"\r\n                aria-labelledby=\"accordion-header-post-2863\"\r\n                style=\"background:transparent;\"><p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><span style=\"font-weight: 400\"><strong>\u00a0A:<\/strong> Yes, through WebAssembly bindings, you can call JavaScript functions from Rust and integrate libraries.<\/span><\/p>\n<\/div><\/li><\/ul><\/div><\/div><\/article><\/section>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span> While Rust is known for its backend web development capabilities, the introduction of WebAssembly (Wasm) has enabled the development of rich front-end apps in Rust. With the introduction of WebAssembly, it became possible to build frontend web apps in Rust, such as the one we just built, expanding development opportunities for developers. While all of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1569,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[289],"tags":[397,255,396,244,342,250,266,359,394,393,6,395],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog<\/title>\n<meta name=\"description\" content=\"WebAssembly is one of the hottest Rust topics right now. It offers high performance &amp; near-native speed for applications that run on the web.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog\" \/>\n<meta property=\"og:description\" content=\"WebAssembly is one of the hottest Rust topics right now. It offers high performance &amp; near-native speed for applications that run on the web.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"The Workfall Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/workfall\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-07T11:47:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-23T03:43:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@workfall\" \/>\n<meta name=\"twitter:site\" content=\"@workfall\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Workfall\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\",\"name\":\"Workfall - Hire #Kickass Coders On Demand\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/\",\"sameAs\":[\"https:\/\/www.instagram.com\/workfall\/\",\"https:\/\/www.linkedin.com\/company\/workfall\/\",\"https:\/\/facebook.com\/workfall\",\"https:\/\/twitter.com\/workfall\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400\",\"contentUrl\":\"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400\",\"width\":400,\"height\":400,\"caption\":\"Workfall - Hire #Kickass Coders On Demand\"},\"image\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#website\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/\",\"name\":\"The Workfall Blog\",\"description\":\"#Tech #Remote #Jobs\",\"publisher\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/learning.workfall.com\/learning\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png\",\"contentUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png\",\"width\":1200,\"height\":628,\"caption\":\"Rust WebAssembly\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/\",\"name\":\"How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog\",\"isPartOf\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage\"},\"datePublished\":\"2023-02-07T11:47:10+00:00\",\"dateModified\":\"2025-09-23T03:43:02+00:00\",\"description\":\"WebAssembly is one of the hottest Rust topics right now. It offers high performance & near-native speed for applications that run on the web.\",\"breadcrumb\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/learning.workfall.com\/learning\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Build a Rust WebAssembly Frontend App with Yew Framework?\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage\"},\"author\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a\"},\"headline\":\"How to Build a Rust WebAssembly Frontend App with Yew Framework?\",\"datePublished\":\"2023-02-07T11:47:10+00:00\",\"dateModified\":\"2025-09-23T03:43:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage\"},\"wordCount\":1418,\"publisher\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png\",\"keywords\":[\"css\",\"frontend\",\"html\",\"javaScript\",\"js\",\"nodeJS\",\"npm\",\"rust\",\"WASM\",\"WebAssembly\",\"workfall\",\"Yew\"],\"articleSection\":[\"Frontend Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a\",\"name\":\"Workfall\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png\",\"contentUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png\",\"caption\":\"Workfall\"},\"sameAs\":[\"https:\/\/www.workfall.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog","description":"WebAssembly is one of the hottest Rust topics right now. It offers high performance & near-native speed for applications that run on the web.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/","og_locale":"en_US","og_type":"article","og_title":"How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog","og_description":"WebAssembly is one of the hottest Rust topics right now. It offers high performance & near-native speed for applications that run on the web.","og_url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/","og_site_name":"The Workfall Blog","article_publisher":"https:\/\/facebook.com\/workfall","article_published_time":"2023-02-07T11:47:10+00:00","article_modified_time":"2025-09-23T03:43:02+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@workfall","twitter_site":"@workfall","twitter_misc":{"Written by":"Workfall","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization","name":"Workfall - Hire #Kickass Coders On Demand","url":"https:\/\/learning.workfall.com\/learning\/blog\/","sameAs":["https:\/\/www.instagram.com\/workfall\/","https:\/\/www.linkedin.com\/company\/workfall\/","https:\/\/facebook.com\/workfall","https:\/\/twitter.com\/workfall"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400","contentUrl":"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400","width":400,"height":400,"caption":"Workfall - Hire #Kickass Coders On Demand"},"image":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#website","url":"https:\/\/learning.workfall.com\/learning\/blog\/","name":"The Workfall Blog","description":"#Tech #Remote #Jobs","publisher":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/learning.workfall.com\/learning\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage","url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png","contentUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png","width":1200,"height":628,"caption":"Rust WebAssembly"},{"@type":"WebPage","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage","url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/","name":"How to Build a Rust WebAssembly Frontend App with Yew Framework? - The Workfall Blog","isPartOf":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage"},"datePublished":"2023-02-07T11:47:10+00:00","dateModified":"2025-09-23T03:43:02+00:00","description":"WebAssembly is one of the hottest Rust topics right now. It offers high performance & near-native speed for applications that run on the web.","breadcrumb":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/learning.workfall.com\/learning\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Build a Rust WebAssembly Frontend App with Yew Framework?"}]},{"@type":"Article","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#article","isPartOf":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage"},"author":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a"},"headline":"How to Build a Rust WebAssembly Frontend App with Yew Framework?","datePublished":"2023-02-07T11:47:10+00:00","dateModified":"2025-09-23T03:43:02+00:00","mainEntityOfPage":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#webpage"},"wordCount":1418,"publisher":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization"},"image":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-rust-webassembly-frontend-app-with-yew-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png","keywords":["css","frontend","html","javaScript","js","nodeJS","npm","rust","WASM","WebAssembly","workfall","Yew"],"articleSection":["Frontend Development"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a","name":"Workfall","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/image\/","url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png","contentUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png","caption":"Workfall"},"sameAs":["https:\/\/www.workfall.com"]}]}},"jetpack_featured_media_url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/02\/Cover-Images_Part2-1.png","jetpack-related-posts":[{"id":1661,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-handle-forms-efficiently-in-yew-web-development\/","url_meta":{"origin":1568,"position":0},"title":"How to Handle Forms Efficiently in Yew Web Development?","date":"March 7, 2023","format":false,"excerpt":"In order to create a Yew web application, one must create mechanisms to allow end users to interact with the system and provide data via online forms. This is where form handling comes into play. Yew offers Rust\u2019s rich type ecosystem which can be a great tool when it comes\u2026","rel":"","context":"In &quot;Backend Development&quot;","img":{"alt_text":"Form Handling in Yew","src":"https:\/\/i0.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/03\/Cover-Images_Part2-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2167,"url":"https:\/\/learning.workfall.com\/learning\/blog\/deploy-a-yew-rust-application-on-an-aws-ec2-ubuntu-instance-nginx\/","url_meta":{"origin":1568,"position":1},"title":"Deploy a Yew Rust Application on an AWS EC2 Ubuntu Instance & Nginx","date":"May 4, 2023","format":false,"excerpt":"After you've finished developing your Yew Rust application, it's time to make it available to your users. It is expected to be placed on a server someplace, either on a Cloud service provider or an on-premises server, for this purpose. This blog will go over how to launch your Yew\u2026","rel":"","context":"In &quot;Backend Development&quot;","img":{"alt_text":"Deploy a Yew Rust Application on an AWS EC2 Ubuntu Instance & Nginx","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/05\/Cover-Images_Part2-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2480,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-develop-a-micro-frontend-application-with-react\/","url_meta":{"origin":1568,"position":2},"title":"How to Develop a Micro-Frontend Application With React?","date":"January 9, 2024","format":false,"excerpt":"Discover the basics of micro-frontend development in our new blog. We'll guide you through creating lively apps with React, explaining the perks, structure, and smart practices for micro-frontends. It's like solving a web puzzle \u2014 simple, effective, and fun. Let's get started! In this blog, we will cover: What are\u2026","rel":"","context":"In &quot;Frontend Development&quot;","img":{"alt_text":"How to Develop a Micro-Frontend Application With React?","src":"https:\/\/i0.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2024\/01\/Tech-Blogs-Cover-Images_Part3-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2266,"url":"https:\/\/learning.workfall.com\/learning\/blog\/deploying-a-rust-rocket-rest-api-on-aws-ec2-with-docker-and-github-actions\/","url_meta":{"origin":1568,"position":3},"title":"Deploying a Rust Rocket REST API on AWS EC2 with Docker and GitHub Actions","date":"May 16, 2023","format":false,"excerpt":"When Rust compiles code, you get an executable if you created the application using the --bin command. In this blog, we shall look at how we can create a Dockerfile to create an image with this executable. We shall then deploy this image on EC2 using GitHub Actions which will\u2026","rel":"","context":"In &quot;Backend Development&quot;","img":{"alt_text":"Deploying a Rust Rocket REST API on AWS EC2 with Docker and GitHub Actions","src":"https:\/\/i0.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/05\/Cover-Images_Part2-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1666,"url":"https:\/\/learning.workfall.com\/learning\/blog\/create-a-weather-app-using-the-qwik-framework\/","url_meta":{"origin":1568,"position":4},"title":"Create a Weather App Using the Qwik Framework","date":"March 14, 2023","format":false,"excerpt":"Over the past decade, we have seen a steady rise in client-side JavaScript frameworks or libraries. Each of these frameworks curves out a niche in the JavaScript ecosystem and tries to enable developers to find the perfect solution according to the provided context. Renowned frameworks include React, Angular, Svelte, and\u2026","rel":"","context":"In &quot;Frontend Development&quot;","img":{"alt_text":"Qwik Framework","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/03\/Cover-Images_Part2-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2287,"url":"https:\/\/learning.workfall.com\/learning\/blog\/reverse-proxy-mastery-deploying-a-full-stack-application-with-multi-container-docker-and-nginx\/","url_meta":{"origin":1568,"position":5},"title":"Reverse Proxy Mastery: Deploying a Full-Stack Application with Multi-Container Docker and Nginx","date":"May 23, 2023","format":false,"excerpt":"Sometimes, developing a full-stack application is not the end of the journey for a web developer. Let us take a case scenario whereby, you have a backend, a frontend, and also a database. For such a setup, we would like to make it easy to replicate our application in different\u2026","rel":"","context":"In &quot;Frontend Development&quot;","img":{"alt_text":"Reverse Proxy Mastery: Deploying a Full-Stack Application with Multi-Container Docker and Nginx","src":"https:\/\/i0.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/05\/Cover-Images_Part2-1-2.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/1568"}],"collection":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/comments?post=1568"}],"version-history":[{"count":4,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/1568\/revisions"}],"predecessor-version":[{"id":2865,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/1568\/revisions\/2865"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/media\/1569"}],"wp:attachment":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/media?parent=1568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/categories?post=1568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/tags?post=1568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}