Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

πŸš€ react-native-boost

npm bundle sizeGitHubGitHub last commit

A powerful Babel plugin that automatically optimizes React Native apps through static source code analysis. It replaces standard React Native components with their native counterparts where possible, leading to significant performance improvements.

  • ⚑ Automatic performance optimization through source code analysis
  • πŸ”’ Safe optimizations that don't break your app
  • 🎯 Virtually zero runtime overhead
  • πŸ“± Cross-platform compatible
  • πŸ§ͺ Works seamlessly with Expo
  • 🎨 Configurable optimization strategies

Documentation

The documentation is available at react-native-boost.oss.kuatsu.de.

Benchmark

The app in the apps/example directory serves as a benchmark for the performance of the plugin.

React Native Boost β€” iOS frame rate vs render load

See the benchmarks page for Android results and the full methodology.

Compatibility

react-native-boostReact Native
0.xAll versions1
1.x>=0.83

Installation

Install the package using your favorite package manager. Please do not install the package as a dev dependency. While the Babel plugin itself would work as a dev dependency, it relies on importing the runtime library (react-native-boost/runtime) into your code, which requires the package to be installed as a regular dependency. Read more here.

npm install react-native-boost
# or
yarn add react-native-boost

Then, add the plugin to your Babel configuration (babel.config.js):

module.exports={plugins: ['react-native-boost/plugin'],};

If you're using Expo and don't see the babel.config.js file, run the following command to create it:

npx expo customize babel.config.js

If you're using Unistyles or Nativewind, refer to additional required setup instructions in the documentation.

Finally, restart your React Native development server and clear the bundler cache:

npm start --clear
# or
yarn start --clear

That's it! No imports in your code, rebuilding, or anything else is required.

Optionally, you can configure the Babel plugin with a few options described in the documentation.

How it works

A short overview of how the plugin works as well as a technical deep dive can be found in the documentation.

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Footnotes

  1. Starting from React Native 0.80, react-native-boost@0 prints import deprecation warnings. ↩

About

πŸš€ Boost your React Native app's performance with a single line of code

Resources

Code of conduct

Contributing

Stars

554 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages