{"id":135915,"date":"2021-02-09T09:13:04","date_gmt":"2021-02-09T09:13:04","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/reactpress\/"},"modified":"2025-04-07T21:07:46","modified_gmt":"2025-04-07T21:07:46","slug":"reactpress","status":"publish","type":"plugin","link":"https:\/\/bn.wordpress.org\/plugins\/reactpress\/","author":18479936,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.4.0","stable_tag":"3.4.0","tested":"6.7.5","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"ReactPress","header_author":"Rockiger","header_description":"Easily create, build and deploy React apps into your existing WordPress sites.","assets_banners_color":"f8f5f3","last_updated":"2025-04-07 21:07:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/rockiger.com\/en\/reactpress","header_author_uri":"https:\/\/rockiger.com\/en\/reactpress","rating":4.4,"author_block_rating":0,"active_installs":3000,"downloads":51673,"num_ratings":18,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"rockiger","date":"2021-02-09 09:33:15"},"1.1.0":{"tag":"1.1.0","author":"rockiger","date":"2021-03-10 08:17:47"},"1.2.0":{"tag":"1.2.0","author":"rockiger","date":"2021-04-21 13:02:55"},"1.2.1":{"tag":"1.2.1","author":"rockiger","date":"2021-08-01 18:40:30"},"1.2.2":{"tag":"1.2.2","author":"rockiger","date":"2021-08-01 19:33:35"},"1.3.0":{"tag":"1.3.0","author":"rockiger","date":"2021-08-08 22:34:13"},"1.3.1":{"tag":"1.3.1","author":"rockiger","date":"2021-11-07 19:34:48"},"1.3.2":{"tag":"1.3.2","author":"rockiger","date":"2022-09-05 16:14:57"},"2.0.0":{"tag":"2.0.0","author":"rockiger","date":"2022-09-05 17:44:29"},"2.0.1":{"tag":"2.0.1","author":"rockiger","date":"2022-10-09 21:10:04"},"2.1.0":{"tag":"2.1.0","author":"rockiger","date":"2022-11-21 20:08:52"},"2.1.1":{"tag":"2.1.1","author":"rockiger","date":"2022-10-09 21:20:24"},"2.1.2":{"tag":"2.1.2","author":"rockiger","date":"2022-11-21 20:16:03"},"2.1.3":{"tag":"2.1.3","author":"rockiger","date":"2022-12-27 12:17:31"},"3.0.0":{"tag":"3.0.0","author":"rockiger","date":"2023-01-22 10:39:00"},"3.0.1":{"tag":"3.0.1","author":"rockiger","date":"2023-01-22 11:01:52"},"3.1.0":{"tag":"3.1.0","author":"rockiger","date":"2023-03-10 12:32:08"},"3.2.0":{"tag":"3.2.0","author":"rockiger","date":"2023-04-21 20:25:50"},"3.2.1":{"tag":"3.2.1","author":"rockiger","date":"2024-02-12 21:15:52"},"3.2.2":{"tag":"3.2.2","author":"rockiger","date":"2024-02-24 20:36:15"},"3.3.0":{"tag":"3.3.0","author":"rockiger","date":"2024-09-23 20:06:55"},"3.4.0":{"tag":"3.4.0","author":"rockiger","date":"2025-04-07 21:07:46"}},"upgrade_notice":{"":"<p>Release 3.0.0+ does change page information differently. Backward compatibility has to be broken for that. Downgrading won&#039;t work without reacreating pages.<\/p>\n\n<p>Upgrades should be smoothless.<\/p>"},"ratings":{"1":2,"2":0,"3":1,"4":0,"5":15},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2471443,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2471443,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2780255,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2780255,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.2.2","1.3.0","1.3.1","1.3.2","2.0.0","2.0.1","2.1.0","2.1.1","2.1.2","2.1.3","3.0.0","3.0.1","3.1.0","3.2.0","3.2.1","3.2.2","3.3.0","3.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2780257,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2780257,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":2471443,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":2780255,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"<p>Empty admin view.<\/p>","2":"<p>The new React app is created.<\/p>","3":"<p>The local React dev server is running on port: 3000. Every change will hot reload immediately.<\/p>","4":"<p>The React app is deployed on the public server.<\/p>"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2275,230,229,1731,52651],"plugin_category":[56,59],"plugin_contributors":[196069],"plugin_business_model":[],"class_list":["post-135915","plugin","type-plugin","status-publish","hentry","plugin_tags-developer","plugin_tags-embed","plugin_tags-javascript","plugin_tags-js","plugin_tags-react","plugin_category-social-and-sharing","plugin_category-utilities-and-tools","plugin_contributors-rockiger","plugin_committers-rockiger"],"banners":{"banner":"https:\/\/ps.w.org\/reactpress\/assets\/banner-772x250.png?rev=2780255","banner_2x":"https:\/\/ps.w.org\/reactpress\/assets\/banner-1544x500.png?rev=2780255","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/reactpress\/assets\/icon-128x128.png?rev=2471443","icon_2x":"https:\/\/ps.w.org\/reactpress\/assets\/icon-256x256.png?rev=2471443","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/reactpress\/assets\/screenshot-1.jpg?rev=2780257","caption":"<p>Empty admin view.<\/p>"},{"src":"https:\/\/ps.w.org\/reactpress\/assets\/screenshot-2.jpg?rev=2780257","caption":"<p>The new React app is created.<\/p>"},{"src":"https:\/\/ps.w.org\/reactpress\/assets\/screenshot-3.png?rev=2471443","caption":"<p>The local React dev server is running on port: 3000. Every change will hot reload immediately.<\/p>"},{"src":"https:\/\/ps.w.org\/reactpress\/assets\/screenshot-4.png?rev=2780255","caption":"<p>The React app is deployed on the public server.<\/p>"}],"raw_content":"<!--section=description-->\n<p>ReactPress enables you to easily create, build and deploy React apps into your existing WordPress sites. Use your React knowledge to create single page applications for your WordPress customers.<\/p>\n\n<p>Get started in seconds and develop your React app with instant feedback and your WordPress theme in mind.<\/p>\n\n<p>Combine the flexibility of WordPress with the UI capabilities of React and seamlessly integrate create-react-app into your WordPress project for your next SaaS.<\/p>\n\n<p>ReactPress does 3 things:<\/p>\n\n<ul>\n<li>It integrates your local dev server into your WordPress theme, that you have instant feedback, how your React app looks in the context of your WordPress website.<\/li>\n<li>It builds your React app in a way that it is usable from your WordPress site.<\/li>\n<li>It makes it easy to upload your app to a live server after building.<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Fast refresh during app development<\/li>\n<li>WordPress integration during development<\/li>\n<li>Easy deploy to your live site<\/li>\n<li>client-side routing<\/li>\n<li>zero-config<\/li>\n<li>TypeScript support<\/li>\n<\/ul>\n\n<h3>Links<\/h3>\n\n<ul>\n<li><a href=\"https:\/\/rockiger.com\/en\/reactpress\/\">Website<\/a><\/li>\n<li><a href=\"https:\/\/rockiger.com\/en\/reactpress\/getting-started\/\">Getting Started<\/a><\/li>\n<li><a href=\"https:\/\/rockiger.com\/en\/reactpress\/reactpress-tutorial\/\">In depth React with WordPress Tutorial<\/a><\/li>\n<li><a href=\"https:\/\/rockiger.com\/en\/reactpress\/understanding-reactpress\/\">FAQ<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/rockiger\/reactpress\/\">Development<\/a><\/li>\n<\/ul>\n\n<h3>System Requirements<\/h3>\n\n<p>To develop React apps your WordPress instance needs access to:<\/p>\n\n<ul>\n<li>Access to the PHP function <code>file_get_contents<\/code>. Some hosting providers deactivate <code>fopen<\/code> on which <code>file_get_contents<\/code> depends. Access to <code>file_get_contents<\/code> is neccessary on your dev and your live system!<\/li>\n<li>POSIX compatible system, Windows support is experimental. (<a href=\"https:\/\/rockiger.com\/en\/windows-survival-guide-to-for-react-and-web-developers\/\" title=\"Windows Survival Guide for React and Web Developers\">Alternatively Windows users can use WSL2<\/a>)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li><p>Like any other plugin install via <em>Plugins\/Add New<\/em>. You can download the plugin via admin or upload it to the plugins directory.<\/p><\/li>\n<li><p>Activate the plugin through the 'Plugins' menu in WordPress<\/p><\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>Improved asset filtering (@dylanlawrence)<\/li>\n<li>Check for asset folder (@BlairCooper)<\/li>\n<li>Improve deep links (@bendiy)<\/li>\n<li>Update packages (@BlairCooper)<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Recommend the user to use create-vite instead of create-react-app<\/li>\n<li>Support chunking files for Vite applications (thanks to Blair Cooper)<\/li>\n<li>Fix: Namespacing for repr_log() - function<\/li>\n<li>Fix: Only write build path and index.html if in dev mode<\/li>\n<\/ul>\n\n<h4>3.2.2<\/h4>\n\n<ul>\n<li>Update the React dev environment even if the ReactPress app is on a private page. Thanks to @BlairCooper<\/li>\n<li>Improve compatibility with non-standard WordPress configurations like Bedrock. Thanks to @dylanlawrence<\/li>\n<li>Improve security<\/li>\n<\/ul>\n\n<h4>3.2.1<\/h4>\n\n<ul>\n<li>Removing extra script tag when using vite - thanks to @dylanlawrence<\/li>\n<li>Using ABSPATH for the document root<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Support React apps with Vite (other kinds of frontend frameworks coming soon)<\/li>\n<li>(Very) basic support for more than one app on one page.<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Make sure that pages of all states (private, draft) are shown.<\/li>\n<li>Improve user feedback when something goes wrong during index.html update.<\/li>\n<li>Don't write empty content to index.html if page download did not work.<\/li>\n<li>Add css as late as possible to ReactPress page, to reduce <code>!important<\/code> in app's css.<\/li>\n<li>Add information about the post into <code>reactPress<\/code> variable<\/li>\n<li>Automatically update the app list without the need to reload the page<\/li>\n<\/ul>\n\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>Allow child pages to be ReactPress pages, where a React app is embedded.<\/li>\n<li>Add support for hosts that have turned the <code>php.ini<\/code> setting <code>allow_url_fopen<\/code> to <code>off<\/code>.<\/li>\n<li>Don't delete options when uninstalling plugin.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Use relative file names for templates, to  allow different folder configurations. Thanks to https:\/\/github.com\/BlairCooper.<\/li>\n<li>Improve system requirements<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Don't show encrypted user password on frontend.<\/li>\n<li>Improve Windows compatibility<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Add totally empty canvas template. This template doesn't get any styles and scripts from WordPress. Good if you want to embed a totally independent React app.<\/li>\n<li>Add nonce and base rest_url to global ReactPress variable.<\/li>\n<li>Fix loading of global ReactPress variable.<\/li>\n<li>Improve Windows compatibility<\/li>\n<li>Securtiy fix: don't show encrypted user password<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Improve Windows compatibility<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Add an app to an existing page<\/li>\n<li>Make client-side routing optional, thus allowing child pages of a React app<\/li>\n<li>Improve documentation<\/li>\n<li>Use a React app in more than one page<\/li>\n<li>Revamp the admin page to be cleaner and a React app itself<\/li>\n<li>Add PHP namespaces<\/li>\n<li>Use create-react-app in the admin area for dogfooding<\/li>\n<li>Add post state label to signal the user a page was created by ReactPress<\/li>\n<li>Test with WordPress 6.0.2<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li><p>Swap file_get_contents for wp_remote_get.<\/p><\/li>\n<li><p>Create custom routing for react-router based on slug of the reactpress page.<\/p><\/li>\n<li><p>If the folder of an app is deleted, it is shown as type: Orphan<\/p><\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><p>Move apps directory to wp-content\/reactpress\/apps to don't mess with the created app when updating the plugin.<\/p><\/li>\n<li><p>Remove possibility to create new react apps from the admin. From now on there is only the command line workflow.<\/p><\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li><p>FIX: Template incompatibility with Elementor and some other plugins. Thank to the great answer of Sally CJ https:\/\/stackoverflow.com\/questions\/67696139\/error-in-wordpress-with-plugin-reactpress\/68455647#answer-67751220<\/p><\/li>\n<li><p>FIX: Problems if document root and plugin app directory are on the same machine\/server\/locationn<\/p><\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><p>Revamp the process of adding using ReactPress. Don't start the react app anymore, only update the <code>index.html<\/code> from WordPress admin. Make it possible to add apps manually with npm or yarn.<\/p><\/li>\n<li><p>Add fallback if we can't find the plugin directory programmatically.<\/p><\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li><p>Test with WordPress 5.7<\/p><\/li>\n<li><p>Insert the current user object to the global window object in Javascript, to have it accessible without a call to the API.<\/p><\/li>\n<li><p>add .env with CHOKIDAR_USEPOLLING=true to ensure watcher works with VM<\/p><\/li>\n<li><p>Use npm instead of yarn.<\/p><\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li><p>Check for if it allows <code>shell_exec<\/code> and <code>exec<\/code><\/p><\/li>\n<li><p><code>npm -v &gt;= 6.0.0<\/code> is reachable from WordPress<\/p><\/li>\n<li><p>Find out if we are in a Windows environment<\/p><\/li>\n<li><p>Deploy app to production<\/p><\/li>\n<li><p>Add TypeScript\/template support<\/p><\/li>\n<li><p>Delete app<\/p><\/li>\n<li><p>Build app<\/p><\/li>\n<li><p>Extend index.html in React app to look like WordPress site<\/p><\/li>\n<li><p>Create new React app<\/p><\/li>\n<li><p>Add React app in specified page<\/p><\/li>\n<\/ul>","raw_excerpt":"Easily create, build and deploy React apps into your existing WordPress sites.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/135915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=135915"}],"author":[{"embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rockiger"}],"wp:attachment":[{"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=135915"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=135915"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=135915"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=135915"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=135915"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=135915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}