What’s new in React 19?

Written by Full-Stack Developer

March 2, 2025
What’s new in React 19?

React has come a long way from its initial public release in May 2013. It still remains the choice JavaScript framework for developers.

React was built on JavaScript because it is the primary language for building dynamic web applications and is supported by modern browsers. It leverages JavaScript features such as functions and classes to create more dynamic and maintainable code.

React has gone through various changes over the years, and it keeps getting improved to make sure that developers get the best use of this library.

This article aims to discuss the new features and improvements of the latest version of React.

The purpose of React


ReactJS is a library built to provide developers with a fast, efficient and flexible library for building dynamic website and web applications. Developers can create reusable components, while React renders these components using the Virtual DOM.

The virtual DOM (Document Object Model) is a lightweight representation or copy of the actual DOM which is represented or stored as a JavaScript Object in memory.

When the state of an application changes, React updates the Virtual DOM first instead of the real DOM, it then compares the virtual DOM with the previous one and identifies the difference.

React updates only the part of the real DOM that has changed instead of re-rendering the entire DOM. This approach ensures faster operations and quick updates to the user interface making React fast and efficient for building complex and dynamic websites.

React is currently on its 19th version which was released on April 25,2024 and became officially stable on December 5,2024.

50%

💰 50% OFF YOUR FIRST MONTH ON MANAGED CLOUD SERVERS

with the discount code

SERVERS-SALE

Use Code Now

Latest Features and Improvements of React 19


Here are new features, and improvements highlighted in the official release of React 19 including;

React Compiler


React compiler is a new tool designed to simplify the React code that developers write. Without the compiler, developers have to manually apply optimizations to create performant applications. Examples include using useMemo or useCallback hooks to avoid unnecessary component re-evaluations and potential render cycles.

The compiler would address these issues and add these optimizations behind the scene to your code, which will be implemented during the build process. This feature is still in the experimental phase.

Actions


Actions are functions that you can pass around to handle data mutations which involves changing the state or property of a component. Example is using the useState hook to update the value of a previous state.

In previous versions of React, you will have several state calls to handle "error”, "isPending", however by using actions you can use asynchronous transitions that handle the pending, error state automatically.

Actions manage submitting data by handling;

Pending State: Actions provide a pending state that starts at the beginning of a request and resets automatically when the state update is committed.

Optimistic Updates: Action supports useOptimitic hook which allows you to provide users with feedback while their request is submitting. In other words, it lets you show changes right away.

Error Handling: Action handles errors by enabling you to display error boundaries when a request fails. They also revert optimistic updates automatically to their original value.

Forms: Form elements supports passing functions to the action and formAction props. By passing functions to these action props, actions are used by default, and the form automatically resets after submission.

Let’s check out the example from React documentation;

React documentation

src:https://react.dev/blog/2024/12/05/react-19

In the above image we see that useState is being used to track the value of the input field. There's also a state to track errors during the process of updateName and also a state "isPending" that checks if the update of the operation is in progress - in summary, when isPending is true the "update button is disabled" .

Pending state

src:https://react.dev/blog/2024/12/05/react-19

The above image is the improved version, React uses useTransition hook to handle the “isPending” state instead of you manually setting it using useState.

Suspense Improvement


In React 19, when a component suspends (e.g., due to asynchronous action like fetching data), React commits the fallback UI (a loading spinner or message) of the suspense component immediately, without waiting for the whole sibling tree to render.

After committing the fallback, React schedules another renders for the suspended siblings. This allows React to “pre-warm" the lazy request or content in the rest of the tree once the data is available.

This improves user experience by making components more efficient. React shows a loading state while the data is being fetched, reducing the time users spend waiting for components to become visible.

By pre-warming or preparing other components, it ensures the app feels faster and responsive while content is being loaded.

Previously, React suspense would try to render all components sequentially, one at a time. Once all components were rendered it would check to see if any of them were waiting for asynchronous data.

If so, it would throw the component into the fallback state (show a loading message). This meant React had to process all the sub components and initiate their rendering before it could show a loading state which delayed feedback to users.

New React Dom Static API


React has introduced two new APIs in react-dom/static for static site generation: prerender and prerenderToNodeStream.

The APIs improve on the existing renderToString functionby ensuring all required data is fully loaded before generating static HTML. Unlike the traditional server-side rendering APIs, which support streaming contents as it loads.

The prerender APIs will wait for all data to resolve before returning the static HTML stream. This makes static site generation more flexible, and efficient.

React Server Components


Server components have been improved in version 19 allowing you pre-render components on the server during build or on demand, meaning they can be rendered for each request using a web server delivering a dynamic delivery of contents.

React 19 also includes features of React Server Component included from the canary channel which is an early release branch of react that contains new features that are tested before being released. React 19 now makes these features stable and available to be used in production.

React Server Actions


React server Actions allow client-side operations to trigger functions executed on the server. By using "use server" directive, functions are called remotely, simplifying server-side logic without requiring a lot of code.

For instance, if you define a function to fetch data from an API, you can define it on the server. When an action is performed such as clicking of a button, React sends the request to the server, retrieves the data and then update the UI. In short, you can handle server-side functions directly from the client side without manually setting up API routes.

Diffs for Hydration Error


React 19 improves error reporting for hydration errors in react-dom. Previously multiple errors in DEV are logged without any information about the mismatch.

Diffs for Hydration Error

src:https://react.dev/blog/2024/12/05/react-19

In the current version React logs a single message with a diff of the mismatch.

Uncaught error

src:https://react.dev/blog/2024/12/05/react-19

This means that there is more information about an error, making it easier for debugging.

as a provider


Instead of <Context.Provider> you can render directly for providing context values which makes your code simpler.

Context Provider

Clean-up Functions for refs


When using refs, you may need to clean up the reference when the component unmounts.

React now supports a clean-up function for ref call-back which simplifies the removal of ref-based elements. When the component unmounts, react will call the clean-up function returned from the ref call-back.

This clean-up function works with DOM refs, refs to class components, and useImperativeHandle.

Clean up Functions for refs

Support for Document Metadata


Typically, meta tags such as , <meta> are placed in the <head> section of the HTML document. </p> <p>In React, due to the modular way components are rendered, the component responsible for determining which meta data is essential for the app may be far away from the <head>. This means that, developers have to use side effects to manage the document's head which can be cumbersome.</p> <p>React 19 allows you to place <title>, < meta> and <link > tags directly in your components. This means you can manage metadata directly within your React components making process of managing meta data much simpler.</p> </div> </div> </div></div> </div> </div> <div class="section vpx-has-padding-top-200 vpx-has-padding-bottom-200"> <div class="vpx-blogImage is-relative "> <picture><img class="lazyload" width="888" height="444" data-src="https://verpex.com/assets/uploads/images/blog/Support-for-Document-Metadata.webp?v=1738133275" data-srcset="https://verpex.com/assets/uploads/images/blog/Support-for-Document-Metadata.webp?v=1738133275" alt="Support for Document Metadata" onerror="this.onerror = null;this.parentNode.children[0].srcset = this.parentNode.children[1].srcset = this.src;" /> </picture> </div> </div> <div class="is-relative"> <a data-anchor="blogSection_27" class="vpx-anchor"></a> </div> <div id="vpx-textRibbon3066564_27_blog" class="section vpx-ribbon vpx-textRibbon _blog vpx-has-padding-top-200 vpx-has-padding-bottom-200"> <div class="container"> <div class=""> <div class="columns "> <div class="column is-12 has-text-left"> <div class="content has-text-dark"><p>If you would like to see more updates and improvements for the latest version, you can visit the official React documentation<a href="https://react.dev/blog/2024/12/05/react-19" target="_blank">documentation</a>.</p> </div> </div> </div></div> </div> </div> <div id="vpx-discountTicketRibbon868048_0_blog" class="section is-clipped vpx-ribbon vpx-discountTicketRibbon vpx-has-padding-top-200 vpx-has-padding-bottom-200"> <div class="container"> <div class="columns is-centered"> <div class="column is-12-tablet"> <div class="vpx-discountTicket has-rounded-border is-relative has-background-secondary"> <div class="vpx-discountTicketEdge"> <svg class="is-hidden-mobile" xmlns="http://www.w3.org/2000/svg" width="8" height="436" viewBox="0 0 8 436"> <g id="Group_10" data-name="Group 10" transform="translate(-435 -184)"> <path id="Path_35" data-name="Path 35" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 52.5)" class="semi-circle"/> <path id="Path_36" data-name="Path 36" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 72.5)" class="semi-circle"/> <path id="Path_37" data-name="Path 37" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 92.5)" class="semi-circle"/> <path id="Path_38" data-name="Path 38" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 112.5)" class="semi-circle"/> <path id="Path_39" data-name="Path 39" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 132.5)" class="semi-circle"/> <path id="Path_40" data-name="Path 40" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 152.5)" class="semi-circle"/> <path id="Path_41" data-name="Path 41" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 172.5)" class="semi-circle"/> <path id="Path_42" data-name="Path 42" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 192.5)" class="semi-circle"/> <path id="Path_43" data-name="Path 43" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 212.5)" class="semi-circle"/> <path id="Path_44" data-name="Path 44" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 232.5)" class="semi-circle"/> <path id="Path_45" data-name="Path 45" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 252.5)" class="semi-circle"/> <path id="Path_46" data-name="Path 46" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 272.5)" class="semi-circle"/> <path id="Path_47" data-name="Path 47" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 292.5)" class="semi-circle"/> <path id="Path_48" data-name="Path 48" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 312.5)" class="semi-circle"/> <path id="Path_27" data-name="Path 27" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -107.5)" class="semi-circle"/> <path id="Path_28" data-name="Path 28" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -87.5)" class="semi-circle"/> <path id="Path_29" data-name="Path 29" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -67.5)" class="semi-circle"/> <path id="Path_30" data-name="Path 30" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -47.5)" class="semi-circle"/> <path id="Path_31" data-name="Path 31" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -27.5)" class="semi-circle"/> <path id="Path_32" data-name="Path 32" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -7.5)" class="semi-circle"/> <path id="Path_33" data-name="Path 33" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 12.5)" class="semi-circle"/> <path id="Path_34" data-name="Path 34" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 32.5)" class="semi-circle"/> </g> </svg> <svg class="is-hidden-tablet" xmlns="http://www.w3.org/2000/svg" width="876" height="8" viewBox="0 0 876 8"> <g id="Group_11" data-name="Group 11" transform="translate(-74 -57)"> <path id="Path_5" data-name="Path 5" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-217.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_6" data-name="Path 6" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-197.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_7" data-name="Path 7" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-177.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_8" data-name="Path 8" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-157.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_9" data-name="Path 9" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-137.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_10" data-name="Path 10" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-117.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_11" data-name="Path 11" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-97.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_12" data-name="Path 12" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-77.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_13" data-name="Path 13" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-57.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_14" data-name="Path 14" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-37.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_15" data-name="Path 15" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-17.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_16" data-name="Path 16" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(2.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_17" data-name="Path 17" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(22.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_18" data-name="Path 18" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(42.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_19" data-name="Path 19" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(62.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_20" data-name="Path 20" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(82.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_21" data-name="Path 21" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(102.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_22" data-name="Path 22" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(122.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_23" data-name="Path 23" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(142.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_24" data-name="Path 24" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(162.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_25" data-name="Path 25" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(182.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_26" data-name="Path 26" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(202.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_49" data-name="Path 49" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(222.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_50" data-name="Path 50" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(242.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_51" data-name="Path 51" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(262.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_52" data-name="Path 52" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(282.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_53" data-name="Path 53" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(302.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_54" data-name="Path 54" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(322.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_55" data-name="Path 55" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(342.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_56" data-name="Path 56" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(362.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_57" data-name="Path 57" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(382.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_58" data-name="Path 58" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(402.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_59" data-name="Path 59" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(422.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_60" data-name="Path 60" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(442.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_61" data-name="Path 61" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(462.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_62" data-name="Path 62" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(482.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_63" data-name="Path 63" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(502.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_64" data-name="Path 64" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(522.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_65" data-name="Path 65" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(542.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_66" data-name="Path 66" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(562.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_67" data-name="Path 67" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(582.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_68" data-name="Path 68" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(602.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_69" data-name="Path 69" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(622.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_70" data-name="Path 70" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(642.5 829.5) rotate(-90)" class="semi-circle"/> </g> </svg> </div> <div class="columns is-desktop is-relative is-zIndex-1"> <div class="column is-6-desktop is-7-widescreen is-8-fullhd vpx-discountTicketBlog-leftColumn"> <div class="vpx-discountTicket-content vpx-discountTicketBlog-content"><div class="is-flex has-content-justified-center"> <picture><img class="image" src="https://verpex.com/assets/uploads/images/discounts/20-percent-off.png?v=1675270523" alt="20%" onerror="this.onerror = null;this.parentNode.children[0].srcset = this.parentNode.children[1].srcset = this.src;" /> </picture> </div> <div class="vpx-discountTicket-bar content has-text-centered has-rounded-border has-text-white has-padding-75 has-margin-top-200 vpx-paragraph is-size-6 is-uppercase vpx-weight-bold"><p>💰 EXTRA 20% OFF ALL VERPEX SHARED WEB HOSTING PLANS</p> </div> </div> </div> <div class="column is-6-desktop is-5-widescreen is-4-fullhd has-text-white has-text-centered"> <div class="vpx-discountTicket-content vpx-discountTicketBlog-content"> <div> <p class="is-size-6">with the discount code</p> <div class="vpx-discountTicket-code has-rounded-border has-padding-y-50 has-padding-x-100 has-margin-y-100"> <h4 class="is-uppercase">AWESOME</h4> </div> </div> <a href="https://verpex.com/shared-web-hosting" target="_blank" title="Save Now" class="button is-fullwidth-mobile is-rounded is-stretched is-medium "><span class="is-size-4">Save Now</span> </a> </div> </div> </div> <div class="vpx-discountTicketEdge end"> <svg class="is-hidden-mobile" xmlns="http://www.w3.org/2000/svg" width="8" height="436" viewBox="0 0 8 436"> <g id="Group_10" data-name="Group 10" transform="translate(-435 -184)"> <path id="Path_35" data-name="Path 35" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 52.5)" class="semi-circle"/> <path id="Path_36" data-name="Path 36" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 72.5)" class="semi-circle"/> <path id="Path_37" data-name="Path 37" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 92.5)" class="semi-circle"/> <path id="Path_38" data-name="Path 38" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 112.5)" class="semi-circle"/> <path id="Path_39" data-name="Path 39" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 132.5)" class="semi-circle"/> <path id="Path_40" data-name="Path 40" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 152.5)" class="semi-circle"/> <path id="Path_41" data-name="Path 41" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 172.5)" class="semi-circle"/> <path id="Path_42" data-name="Path 42" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 192.5)" class="semi-circle"/> <path id="Path_43" data-name="Path 43" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 212.5)" class="semi-circle"/> <path id="Path_44" data-name="Path 44" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 232.5)" class="semi-circle"/> <path id="Path_45" data-name="Path 45" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 252.5)" class="semi-circle"/> <path id="Path_46" data-name="Path 46" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 272.5)" class="semi-circle"/> <path id="Path_47" data-name="Path 47" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 292.5)" class="semi-circle"/> <path id="Path_48" data-name="Path 48" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 312.5)" class="semi-circle"/> <path id="Path_27" data-name="Path 27" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -107.5)" class="semi-circle"/> <path id="Path_28" data-name="Path 28" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -87.5)" class="semi-circle"/> <path id="Path_29" data-name="Path 29" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -67.5)" class="semi-circle"/> <path id="Path_30" data-name="Path 30" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -47.5)" class="semi-circle"/> <path id="Path_31" data-name="Path 31" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -27.5)" class="semi-circle"/> <path id="Path_32" data-name="Path 32" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 -7.5)" class="semi-circle"/> <path id="Path_33" data-name="Path 33" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 12.5)" class="semi-circle"/> <path id="Path_34" data-name="Path 34" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-329.5 32.5)" class="semi-circle"/> </g> </svg> <svg class="is-hidden-tablet" xmlns="http://www.w3.org/2000/svg" width="876" height="8" viewBox="0 0 876 8"> <g id="Group_11" data-name="Group 11" transform="translate(-74 -57)"> <path id="Path_5" data-name="Path 5" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-217.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_6" data-name="Path 6" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-197.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_7" data-name="Path 7" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-177.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_8" data-name="Path 8" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-157.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_9" data-name="Path 9" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-137.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_10" data-name="Path 10" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-117.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_11" data-name="Path 11" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-97.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_12" data-name="Path 12" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-77.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_13" data-name="Path 13" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-57.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_14" data-name="Path 14" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-37.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_15" data-name="Path 15" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(-17.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_16" data-name="Path 16" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(2.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_17" data-name="Path 17" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(22.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_18" data-name="Path 18" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(42.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_19" data-name="Path 19" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(62.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_20" data-name="Path 20" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(82.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_21" data-name="Path 21" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(102.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_22" data-name="Path 22" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(122.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_23" data-name="Path 23" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(142.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_24" data-name="Path 24" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(162.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_25" data-name="Path 25" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(182.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_26" data-name="Path 26" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(202.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_49" data-name="Path 49" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(222.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_50" data-name="Path 50" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(242.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_51" data-name="Path 51" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(262.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_52" data-name="Path 52" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(282.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_53" data-name="Path 53" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(302.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_54" data-name="Path 54" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(322.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_55" data-name="Path 55" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(342.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_56" data-name="Path 56" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(362.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_57" data-name="Path 57" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(382.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_58" data-name="Path 58" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(402.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_59" data-name="Path 59" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(422.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_60" data-name="Path 60" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(442.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_61" data-name="Path 61" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(462.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_62" data-name="Path 62" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(482.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_63" data-name="Path 63" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(502.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_64" data-name="Path 64" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(522.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_65" data-name="Path 65" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(542.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_66" data-name="Path 66" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(562.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_67" data-name="Path 67" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(582.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_68" data-name="Path 68" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(602.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_69" data-name="Path 69" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(622.5 829.5) rotate(-90)" class="semi-circle"/> <path id="Path_70" data-name="Path 70" d="M764.5,291.5a8,8,0,0,1,0,16" transform="translate(642.5 829.5) rotate(-90)" class="semi-circle"/> </g> </svg> </div> </div> </div> </div> </div> </div> <div class="is-relative"> <a data-anchor="blogSection_29" class="vpx-anchor"></a> </div> <div id="vpx-textRibbon3066566_29_blog" class="section vpx-ribbon vpx-textRibbon _blog vpx-has-padding-top-200 vpx-has-padding-bottom-200"> <div class="container"> <div class=""> <div class="columns "> <div class="column is-12 has-text-left"> <h2 class="vpx-display is-size-2 has-margin-bottom-100 has-text-primary"><strong>Summary</strong></h2> <div class="content has-text-dark"><hr> <p>React is definitely one of many developers’ favourite, being one of the most popular JavaScript <a href="https://verpex.com/blog/website-tips/animation-libraries-for-website-projects">libraries</a> with a large user base. It is consistent in delivering features like reusable components, state management that simplify the process of building website and applications.</p> <p>It is a flexible and reliable, and easy-to-learn with a large community of dedicated developers that contribute to ensuring it remains reliable. There also a lot of tutorials, Q&A forums, and a well written documentation to help developers get started and solve problems quickly.</p> </div> </div> </div></div> </div> </div> <div id="vpx-faqsRibbon3065790_0_blog" class="section vpx-ribbon vpx-faqsRibbon _blog vpx-has-padding-top-200 vpx-has-padding-bottom-200"> <div class="container"> <div class=""> <div class="columns is-centered has-margin-bottom-150"> <div class="column is-10 has-text-centered"> <h3 class="vpx-display is-size-2 has-text-primary"><strong>Frequently Asked Questions</strong></h3> </div> </div> <faq-component inline-template> <div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question" class="has-border-top" :class="{ 'has-background-light': isOpen }" > <div class="has-padding-x-100 has-padding-y-50"> <div @click="isOpen = !isOpen" aria-controls="faqContent 1445276" class="columns is-mobile is-vcentered has-content-justified-between has-margin-y-0 has-cursor-pointer"> <div class="column"> <h3 itemprop="name" class="vpx-paragraph is-size-4 vpx-weight-medium has-text-primary"><strong>What makes Astro.js different from traditional JavaScript frameworks?</strong></h3> </div> <div class="column is-narrow"> <div v-if="isOpen"> <span class="icon has-text-primary"> <i class="fas fa-times-circle"></i> </span> </div> <div v-else> <span class="icon has-text-primary"> <i class="fas fa-plus-circle"></i> </span> </div> </div> </div> <b-collapse aria-id="faqContent 1445276" :open.sync="isOpen" > <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer" class="content has-margin-bottom-75 has-text-grey"> <div itemprop="text"> <p>Astro.js is a static site generator that prioritizes static <a href="https://verpex.com/blog/website-tips/free-html-editors">HTML</a> generation and minimal client-side JavaScript. Unlike traditional JavaScript <a href="https://verpex.com/blog/website-tips/golang-frameworks">frameworks</a>, it focuses on faster performance, improved <a href="https://verpex.com/blog/website-tips/how-to-use-chatgpt-for-seo">SEO</a>, and seamless integration with multiple front-end frameworks.</p> </div> </div> </b-collapse> </div> </div> </faq-component> <faq-component inline-template> <div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question" class="has-border-top" :class="{ 'has-background-light': isOpen }" > <div class="has-padding-x-100 has-padding-y-50"> <div @click="isOpen = !isOpen" aria-controls="faqContent 1445278" class="columns is-mobile is-vcentered has-content-justified-between has-margin-y-0 has-cursor-pointer"> <div class="column"> <h3 itemprop="name" class="vpx-paragraph is-size-4 vpx-weight-medium has-text-primary"><strong>Can I use Astro.js with other JavaScript libraries and frameworks?</strong></h3> </div> <div class="column is-narrow"> <div v-if="isOpen"> <span class="icon has-text-primary"> <i class="fas fa-times-circle"></i> </span> </div> <div v-else> <span class="icon has-text-primary"> <i class="fas fa-plus-circle"></i> </span> </div> </div> </div> <b-collapse aria-id="faqContent 1445278" :open.sync="isOpen" > <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer" class="content has-margin-bottom-75 has-text-grey"> <div itemprop="text"> <p>Yes, Astro.js is designed to work with various frontend frameworks and libraries, allowing you to leverage your preferred tools alongside its performance optimizations.</p> </div> </div> </b-collapse> </div> </div> </faq-component> <faq-component inline-template> <div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question" class="has-border-top" :class="{ 'has-background-light': isOpen }" > <div class="has-padding-x-100 has-padding-y-50"> <div @click="isOpen = !isOpen" aria-controls="faqContent 1605396" class="columns is-mobile is-vcentered has-content-justified-between has-margin-y-0 has-cursor-pointer"> <div class="column"> <h3 itemprop="name" class="vpx-paragraph is-size-4 vpx-weight-medium has-text-primary"><strong>Can I use JavaScript frameworks like React or Vue.js in my WordPress plugin?</strong></h3> </div> <div class="column is-narrow"> <div v-if="isOpen"> <span class="icon has-text-primary"> <i class="fas fa-times-circle"></i> </span> </div> <div v-else> <span class="icon has-text-primary"> <i class="fas fa-plus-circle"></i> </span> </div> </div> </div> <b-collapse aria-id="faqContent 1605396" :open.sync="isOpen" > <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer" class="content has-margin-bottom-75 has-text-grey"> <div itemprop="text"> <p>Yes, you can. Enqueue your scripts properly using wp_enqueue_script(). Ensure compatibility with <a href="https://verpex.com/blog/wordpress-hosting/how-to-prevent-wordpress-sql-injection-attacks">WordPress</a> core and consider using the REST API for seamless communication.</p> </div> </div> </b-collapse> </div> </div> </faq-component> <faq-component inline-template> <div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question" class="has-border-top" :class="{ 'has-background-light': isOpen }" > <div class="has-padding-x-100 has-padding-y-50"> <div @click="isOpen = !isOpen" aria-controls="faqContent 1789006" class="columns is-mobile is-vcentered has-content-justified-between has-margin-y-0 has-cursor-pointer"> <div class="column"> <h3 itemprop="name" class="vpx-paragraph is-size-4 vpx-weight-medium has-text-primary"><strong>Are there specific hosting requirements for JavaScript frameworks like React, Angular, or Vue.js?</strong></h3> </div> <div class="column is-narrow"> <div v-if="isOpen"> <span class="icon has-text-primary"> <i class="fas fa-times-circle"></i> </span> </div> <div v-else> <span class="icon has-text-primary"> <i class="fas fa-plus-circle"></i> </span> </div> </div> </div> <b-collapse aria-id="faqContent 1789006" :open.sync="isOpen" > <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer" class="content has-margin-bottom-75 has-text-grey"> <div itemprop="text"> <p>Answer: Generally, hosting for client-side JavaScript frameworks like <a href="https://verpex.com/blog/website-tips/react-js-vs-angular">React</a>, Angular, or <a href="https://verpex.com/blog/website-tips/vue-vs-react">Vue.js</a> does not require specialized servers since the <a href="https://verpex.com/blog/website-tips/web-development-frameworks">frameworks</a> run in the user's browser.</p> </div> </div> </b-collapse> </div> </div> </faq-component></div> </div> </div> <div class="section has-padding-y-200"> <div class="vpx-bioContainer has-rounded-border has-padding-150 has-margin-bottom-100 has-background-light" itemprop="author" itemscope itemtype="https://schema.org/Person"> <div class="columns is-mobile has-margin-bottom-0"> <div class="column is-narrow vpx-lazyload-rounded vpx-avatar-container"> <figure class="image is-96x96"> <picture> <img class="vpx-roundedAvatar is-rounded lazyload" width="96" height="96" data-src="https://verpex.com/assets/uploads/images/avatars/IMG_1218-1-1.jpg?v=1664537862" alt="Jessica Agorye" onerror="this.onerror = null;this.parentNode.children[0].srcset = this.parentNode.children[1].srcset = this.src;" itemprop="image" /> </picture> </figure> </div> <div class="column"> <div class="vpx-authorName"> <span class="vpx-paragraph is-size-5 is-inline-block">About the Author</span> <h5 class="vpx-paragraph is-size-4 has-text-primary" itemprop="name">Jessica Agorye</h5> <div class="is-flex has-margin-left-25 has-margin-top-50"> <div class="has-margin-right-75"> <a href="https://twitter.com/jessy_jua" target="_blank" class="is-inline-block" itemprop="url"> <span class="icon has-text-primary"> <i class="fab fa-twitter-square fa-2x"></i> </span> </a> </div> </div> </div> </div> </div><p class="vpx-paragraph is-size-5 is-hidden-desktop"> <show-more-component id="0" text="Jessica Agorye is a developer based in Lagos, Nigeria. A witty creative with a love for life, she is dedicated to sharing insights and inspiring others through her writing. With over 5 years of writing experience, she believes that content is king." excerpt-length="200" style-classes="is-size-5" ></show-more-component> </p> <p class="vpx-paragraph is-size-5 is-hidden-touch" itemprop="description">Jessica Agorye is a developer based in Lagos, Nigeria. A witty creative with a love for life, she is dedicated to sharing insights and inspiring others through her writing. With over 5 years of writing experience, she believes that content is king.</p> <a class="is-inline-block has-margin-top-100" href="https://verpex.com/blog/author/jessica-agorye" itemprop="url"><span class="is-size-5 is-uppercase">View all posts by Jessica Agorye</span></a> </div> </div> </article> </div> <div class="column is-3 is-hidden-mobile has-padding-bottom-400"> <div class="vpx-sticky is-clipped"> <div class="has-padding-y-100"> <h4 class="vpx-display is-size-5 has-text-primary has-margin-bottom-50"><strong>On This Page</strong></h4> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_1" target="_self" title="The purpose of React" class="vpx-label is-size-6 is-block has-margin-bottom-50">The purpose of React</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_3" target="_self" title="Latest Features and Improvements of React 19" class="vpx-label is-size-6 is-block has-margin-bottom-50">Latest Features and Improvements of React 19</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_4" target="_self" title="React Compiler" class="vpx-label is-size-6 is-block has-margin-bottom-50">React Compiler</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_5" target="_self" title="Actions" class="vpx-label is-size-6 is-block has-margin-bottom-50">Actions</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_10" target="_self" title="Suspense Improvement" class="vpx-label is-size-6 is-block has-margin-bottom-50">Suspense Improvement</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_11" target="_self" title="New React Dom Static API" class="vpx-label is-size-6 is-block has-margin-bottom-50">New React Dom Static API</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_12" target="_self" title="React Server Components" class="vpx-label is-size-6 is-block has-margin-bottom-50">React Server Components</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_13" target="_self" title="React Server Actions" class="vpx-label is-size-6 is-block has-margin-bottom-50">React Server Actions</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_14" target="_self" title="Diffs for Hydration Error" class="vpx-label is-size-6 is-block has-margin-bottom-50">Diffs for Hydration Error</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_19" target="_self" title=" as a provider" class="vpx-label is-size-6 is-block has-margin-bottom-50"> as a provider</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_22" target="_self" title="Clean-up Functions for refs" class="vpx-label is-size-6 is-block has-margin-bottom-50">Clean-up Functions for refs</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_25" target="_self" title="Support for Document Metadata" class="vpx-label is-size-6 is-block has-margin-bottom-50">Support for Document Metadata</a> <a href="#" @click="scrollPageLink($event);" data-scroll-identifier="blogSection_29" target="_self" title="Summary" class="vpx-label is-size-6 is-block has-margin-bottom-50">Summary</a> </div> <div class="vpx-discountTicket has-rounded-border has-background-secondary"> <div class="is-relative is-zIndex-1"> <div class="vpx-discountTicket-leftColumn"> <div class="vpx-discountTicket-content"><picture><img class="image lazyload" width="230" height="100" data-src="https://verpex.com/assets/uploads/images/discounts/90-off_2021-03-30-101202.svg?v=1675258840" data-srcset="https://verpex.com/assets/uploads/images/discounts/90-off_2021-03-30-101202.svg?v=1675258840" alt="Discount" onerror="this.onerror = null;this.parentNode.children[0].srcset = this.parentNode.children[1].srcset = this.src;" /> </picture> <div class="vpx-paragraph is-size-6 vpx-discountTicket-bar content has-rounded-border has-text-white has-padding-75 has-margin-top-100"><p>💰 90% OFF YOUR FIRST MONTH WITH ALL VERPEX RESELLER HOSTING PLANS</p> </div> </div> </div> <div class="has-text-white has-text-centered"> <div class="vpx-discountTicket-content"> <div> <p class="vpx-paragraph is-size-5">with the discount code</p> <div class="vpx-discountTicket-code has-rounded-border has-padding-y-50 has-padding-x-100 has-margin-y-100"> <h4 class="vpx-paragraph is-size-4 is-uppercase">MOVEME</h4> </div> </div> <a href="https://verpex.com/reseller-hosting" target="_self" title="Use Code Now" class="button is-fullwidth-mobile is-rounded is-stretched is-medium "><span class="is-size-4">Use Code Now</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="section vpx-watermark is-relative has-background-secondary-lighter has-padding-y-250"> <div class="container"> <div class="columns"> <div class="column is-3"> <p class="has-text-primary is-size-5 is-uppercase has-margin-bottom-25">Popular Articles</p> <h3 class="has-text-primary is-size-4"><strong>You may also like</strong></h3> </div> <div class="column is-9"> <div class="columns is-multiline"> <div class="column is-8-tablet is-4-desktop vpx-blogExceptCardContainer"> <div class="vpx-blogExceptCard vpx-roundedCorners"> <a href="https://verpex.com/blog/website-tips/how-to-use-tensorflow-for-beginners-building-your-first-neural-network" class="has-text-dark has-background-white"> <div class="is-space-between is-full-height"> <div> <div class="card-image is-relative"> <figure class="image"> <picture><img class="lazyload" width="326" height="184" data-src="https://verpex.com/assets/uploads/images/blog/How-to-Use-TensorFlow-for-Beginners.webp?v=1737111261" data-srcset="https://verpex.com/assets/uploads/images/blog/How-to-Use-TensorFlow-for-Beginners.webp?v=1737111261" alt="How to Use TensorFlow: Building a Neural Network" /> </picture> </figure> </div> <div class="card-content content"> <h4 class="has-text-weight-bold is-size-5">How to Use TensorFlow: Building a Neural Network</h4> <p class="is-size-6">Beginner-friendly guide to using TensorFlow to build your fi…</p> </div> </div> <div class="card-date content"> <div class="is-flex has-content-justified-between has-items-aligned-center"> <div> <span class="has-text-grey is-size-6">Joel Olawanle</span> </div> <div> <time class="has-text-grey is-size-6" datetime="March 5, 2025">March 5, 2025</time> </div> </div> </div> </div> </a> </div> </div> <div class="column is-8-tablet is-4-desktop vpx-blogExceptCardContainer"> <div class="vpx-blogExceptCard vpx-roundedCorners"> <a href="https://verpex.com/blog/website-tips/best-recipe-plugins-for-wordpress" class="has-text-dark has-background-white"> <div class="is-space-between is-full-height"> <div> <div class="card-image is-relative"> <figure class="image"> <picture><img class="lazyload" width="326" height="184" data-src="https://verpex.com/assets/uploads/images/blog/best-recipe-plugins-for-wordpress.webp?v=1739939407" data-srcset="https://verpex.com/assets/uploads/images/blog/best-recipe-plugins-for-wordpress.webp?v=1739939407" alt="Best Recipe Plugins for WordPress" /> </picture> </figure> </div> <div class="card-content content"> <h4 class="has-text-weight-bold is-size-5">Best Recipe Plugins for WordPress</h4> <p class="is-size-6">Learn about some of the best recipe plugins for WordPress th…</p> </div> </div> <div class="card-date content"> <div class="is-flex has-content-justified-between has-items-aligned-center"> <div> <span class="has-text-grey is-size-6">Nile Flores</span> </div> <div> <time class="has-text-grey is-size-6" datetime="March 4, 2025">March 4, 2025</time> </div> </div> </div> </div> </a> </div> </div> <div class="column is-8-tablet is-4-desktop vpx-blogExceptCardContainer"> <div class="vpx-blogExceptCard vpx-roundedCorners"> <a href="https://verpex.com/blog/website-tips/paid-search-vs-seo-which-should-i-choose" class="has-text-dark has-background-white"> <div class="is-space-between is-full-height"> <div> <div class="card-image is-relative"> <figure class="image"> <picture><img class="lazyload" width="326" height="184" data-src="https://verpex.com/assets/uploads/images/blog/Paid-Search-vs.-SEO.webp?v=1739508689" data-srcset="https://verpex.com/assets/uploads/images/blog/Paid-Search-vs.-SEO.webp?v=1739508689" alt="Paid Search vs. SEO: Which Should I Choose?" /> </picture> </figure> </div> <div class="card-content content"> <h4 class="has-text-weight-bold is-size-5">Paid Search vs. SEO: Which Should I Choose?</h4> <p class="is-size-6">Paid search brings quick traffic, while SEO builds lasting g…</p> </div> </div> <div class="card-date content"> <div class="is-flex has-content-justified-between has-items-aligned-center"> <div> <span class="has-text-grey is-size-6">Danny Maiorca</span> </div> <div> <time class="has-text-grey is-size-6" datetime="March 1, 2025">March 1, 2025</time> </div> </div> </div> </div> </a> </div> </div> </div> </div> </div> </div> </div> </div> <footer-component inline-template> <footer> <div class="footer vpx-footer has-background-primary has-padding-y-200 is-zIndex-1 is-relative"> <div class="container"> <div class="columns"> <div class="column is-4"> <div class="has-margin-bottom-100"> <a href="https://verpex.com"> <img class="lazyload" width="124" height="36" data-src="/assets/interface/verpex-logo-white.svg" alt="Verpex" width="124" height="35" /> </a> </div> <div class="columns is-multiline is-mobile is-vcentered has-padding-top-150"> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Visa" data-src="/assets/interface/payment-providers/visa.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Mastercard" data-src="/assets/interface/payment-providers/mastercard.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Discover" data-src="/assets/interface/payment-providers/discover.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Amex" data-src="/assets/interface/payment-providers/amex.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Jcb" data-src="/assets/interface/payment-providers/jcb.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Maestro" data-src="/assets/interface/payment-providers/maestro.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Diners Club International" data-src="/assets/interface/payment-providers/diners-club-international.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Paypal" data-src="/assets/interface/payment-providers/paypal.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Apple Pay" data-src="/assets/interface/payment-providers/ApplePay.svg" /> </div> </div> <div class="column is-6-mobile is-narrow-tablet"> <div class="vpx-paymentProvider-block is-flex has-items-aligned-center"> <img class="lazyload" width="60" height="40" alt="Google Pay" data-src="/assets/interface/payment-providers/GooglePay.svg" /> </div> </div> </div> </div> <div class="column is-8"> <div class="columns is-mobile is-multiline"> <div class="column is-6-mobile is-3-tablet"> <p class="vpx-footerHeader has-text-white vpx-label is-size-4"><strong>Product</strong></p> <p><a href="https://verpex.com/reseller-hosting" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Reseller Hosting</a></p> <p><a href="https://verpex.com/cloud-web-hosting" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Cloud Web Hosting</a></p> <p><a href="https://verpex.com/shared-web-hosting" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Shared Web Hosting</a></p> <p><a href="https://verpex.com/wordpress-hosting" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Hosting for Wordpress</a></p> <p><a href="https://verpex.com/managed-cloud-servers" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Managed Cloud Servers</a></p> <p><a href="https://verpex.com/managed-wordpress" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Managed WordPress Servers</a></p> <p><a href="/blog/website-tips/whats-new-in-react-19" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">VPS Hosting</a></p> <p><a href="https://verpex.com/java-hosting" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Java Hosting</a></p> </div> <div class="column is-6-mobile is-3-tablet"> <p class="vpx-footerHeader has-text-white vpx-label is-size-4"><strong>Domain</strong></p> <p><a href="https://verpex.com/domain-registration" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Domain Registration</a></p> <p><a href="https://verpex.com/domain-transfer" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Domain Transfer</a></p> </div> <div class="column is-6-mobile is-3-tablet"> <p class="vpx-footerHeader has-text-white vpx-label is-size-4"><strong>Information</strong></p> <p><a href="https://verpex.com/about" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">About Verpex</a></p> <p><a href="https://verpex.com/blog" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Blog</a></p> <p><a href="https://kb.verpex.com/" target="_blank" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Knowledge Base</a></p> <p><a href="https://verpex.com/our-technology" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Our Technology</a></p> <p><a href="https://verpex.com/pricing" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Pricing</a></p> <p><a href="https://affiliates.verpex.com/affiliates/" target="_blank" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Affiliate Program</a></p> <p><a href="https://verpex.com/contact-us" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Contact Us</a></p> </div> <div class="column is-6-mobile is-3-tablet"> <p class="vpx-footerHeader has-text-white vpx-label is-size-4"><strong>Legal</strong></p> <p><a href="https://verpex.com/privacy-policy" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Privacy Policy</a></p> <p><a href="https://verpex.com/terms-conditions" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Terms & Conditions</a></p> <p><a href="https://verpex.com/sitemap" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Sitemap</a></p> <p><a href="javascript:void(0)" @click="triggerGDPRModal()" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Privacy Manager</a></p> <p><a href="https://verpex.com/affiliates-terms-conditions" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Affiliates Terms & Conditions</a></p> <p><a href="https://verpex.com/abuse" target="_self" class="is-inline-block has-text-white has-margin-top-50 vpx-label is-size-5">Abuse</a></p> </div> </div> </div> </div> <div class="has-text-centered has-text-right-tablet has-margin-bottom-150"> <a class="is-inline-block" href="https://www.facebook.com/VerpexHosting/" target="_blank"><img class="lazyload has-margin-right-25" width="35" height="35" alt="Facebook" data-src="/assets/interface/social-networks/facebook.svg" /></a> <a class="is-inline-block" href="https://www.youtube.com/@VerpexHosting" target="_blank"><img class="lazyload has-margin-right-25" width="35" height="35" alt="Youtube" data-src="/assets/interface/social-networks/youtube.svg" /></a> <a class="is-inline-block" href="https://www.linkedin.com/company/verpexhosting/" target="_blank"><img class="lazyload has-margin-right-25" width="35" height="35" alt="LinkedIn" data-src="/assets/interface/social-networks/linkedin.svg" /></a> <a class="is-inline-block" href="https://twitter.com/verpexhosting" target="_blank"><img class="lazyload" width="35" height="35" alt="Twitter" data-src="/assets/interface/social-networks/twitter.svg" /></a> </div> <div class="vpx-legal has-padding-top-150 is-block-mobile is-flex-tablet has-content-justified-between"> <p class="vpx-legal-text vpx-label is-size-6 has-text-white has-text-centered-mobile">©2019-2025 Verpex Limited. All Rights Reserved.</p> <div class="vpx-legal-text has-text-white vpx-basic-line-height"> <a class="has-text-white vpx-label is-size-6" href="https://verpex.com/sitemap">Useful Links</a> | <a class="has-text-white vpx-label is-size-6" href="https://verpex.com/terms-conditions">Terms of Service</a> | <a class="has-text-white vpx-label is-size-6" href="https://verpex.com/privacy-policy">Privacy</a> | <a class="has-text-white vpx-label is-size-6" href="javascript:void(0)" @click="triggerGDPRModal()">Cookies</a> | <a class="has-text-white vpx-label is-size-6" href="https://verpex.com/company-details">Company Details</a> | <a class="has-text-white vpx-label is-size-6" target="_blank" href="https://www.icann.org/resources/pages/responsibilities-2014-03-14-en">Registrants R & R</a> </div> <p class="vpx-legal-text vpx-label is-size-6 has-text-white has-text-centered-mobile">Prices are listed without VAT</p> </div> </div> </div> </footer> </footer-component> <welcome-component inline-template> <div class="modal vpx-welcomeModal" :class="{ 'is-active': showModal }"> <div class="modal-background" @click="showModal = !showModal"></div> <div class="modal-card"> <section class="modal-card-body"> <div class="container"> <div> <img class="has-margin-bottom-50" width="120" height="28" src="/assets/interface/verpex-logo-color.svg" alt="Verpex" /> <h3 class="vpx-display is-size-2 has-text-primary has-margin-bottom-100"><strong>Welcome all {{ brandName }} customers</strong></h3> <p class="vpx-paragraph is-size-5 has-text-dark has-margin-bottom-100">We are delighted to welcome {{ brandName }} customers to the Verpex family. Existing {{ brandName }} users can log in to the new Verpex client area to manage their services with their previous credentials.</p> <button @click="showModal = !showModal" class="button is-rounded is-fullwidth-mobile is-medium is-primary"><span class="is-size-4">Get Started</span></a> </div> </div> </section> </div> </div> </welcome-component><a id="jivo-live-chat-toggle" class="jivo-live-chat" href="javascript:void(0);" @click="triggerLiveChat()"><img alt="Jivo Live Chat" width="75" height="75" src="/assets/interface/live-chat.svg" /></a> </div> <iframe id="moonshot_vt" title="moonshot_vt" width="0" height="0" > </iframe><script type="module" src="/assets/js/vpx.main.786f4c8ce8d4afaceb0d.js"></script> <script src="/assets/js/vpx.main.786f4c8ce8d4afaceb0d.js" nomodule></script> <script type="module" src="/assets/js/vpx.vendors.aa9db89a6591772f4e3c.js"></script> <script src="/assets/js/vpx.vendors.aa9db89a6591772f4e3c.js" nomodule></script> </body> </html>