Callstack just built something that might finally close the gap between JavaScript tests and native reality. Meet React Native Harness — 𝗮 𝗯𝗿𝗮𝗻𝗱-𝗻𝗲𝘄 𝘁𝗲𝘀𝘁𝗶𝗻𝗴 𝘁𝗼𝗼𝗹 𝘁𝗵𝗮𝘁 𝗹𝗲𝘁𝘀 𝘆𝗼𝘂 𝗿𝘂𝗻 𝘁𝗲𝘀𝘁𝘀 𝗼𝗻 𝗿𝗲𝗮𝗹 𝗱𝗲𝘃𝗶𝗰𝗲𝘀, 𝗵𝗶𝘁𝘁𝗶𝗻𝗴 𝗮𝗰𝘁𝘂𝗮𝗹 𝗻𝗮𝘁𝗶𝘃𝗲 𝗺𝗼𝗱𝘂𝗹𝗲𝘀, without needing a full-blown end-to-end setup with Detox or Maestro. Think of it like Jest, if Jest could actually talk to your phone. Normally, unit tests never touch native code — Jest runs in Node.js, miles away from Swift or Kotlin. Harness changes that. 𝗜𝘁 𝗯𝘂𝗻𝗱𝗹𝗲𝘀 𝘆𝗼𝘂𝗿 𝘁𝗲𝘀𝘁 𝗳𝗶𝗹𝗲𝘀 𝘄𝗶𝘁𝗵 𝗠𝗲𝘁𝗿𝗼, 𝘀𝗵𝗶𝗽𝘀 𝘁𝗵𝗲𝗺 𝘁𝗼 𝗮 𝗛𝗲𝗿𝗺𝗲𝘀-𝗽𝗼𝘄𝗲𝗿𝗲𝗱 𝗿𝘂𝗻𝘁𝗶𝗺𝗲 𝗼𝗻 𝘆𝗼𝘂𝗿 𝗱𝗲𝘃𝗶𝗰𝗲 𝗼𝗿 𝘀𝗶𝗺𝘂𝗹𝗮𝘁𝗼𝗿, runs the tests inside the React Native environment, and sends the results back to your terminal. So instead of mocking NativeModules, you can call them directly. Yes — 𝗿𝗲𝗮𝗹 𝗻𝗮𝘁𝗶𝘃𝗲 𝗰𝗼𝗱𝗲, 𝗿𝗲𝗮𝗹 𝗱𝗲𝘃𝗶𝗰𝗲, 𝗿𝗲𝗮𝗹 𝗿𝗲𝘀𝘂𝗹𝘁𝘀. And here’s the best part: it still feels like Jest. ➡️ 𝗬𝗼𝘂 𝘄𝗿𝗶𝘁𝗲 𝘁𝗲𝘀𝘁𝘀 𝘄𝗶𝘁𝗵 𝗱𝗲𝘀𝗰𝗿𝗶𝗯𝗲, 𝘁𝗲𝘀𝘁, 𝗲𝘅𝗽𝗲𝗰𝘁, 𝗮𝗻𝗱 𝗹𝗶𝗳𝗲𝗰𝘆𝗰𝗹𝗲 𝗵𝗼𝗼𝗸𝘀 like beforeEach and afterAll. ➡️ But 𝘂𝗻𝗱𝗲𝗿 𝘁𝗵𝗲 𝗵𝗼𝗼𝗱, Harness is its own runner, built specifically for React Native — not Node. It’s the sweet spot we’ve been missing: ➡️ Faster than full E2E (no UI automation). ➡️ More realistic than mocked unit tests. ➡️ Perfect for library authors and anyone building native bridges in Swift, Kotlin, or C++. You can now verify your native module works on-device — no manual Xcode runs, no Detox setup, no guesswork. Would you run your next native test suite through Harness instead of Jest or Detox? 👇 #ReactNative #Testing #Callstack #Hermes #MobileDev #OpenSource #ReactNativeRewind #NativeModules #Jest #Detox
Luke Brandon Farrell’s Post
More Relevant Posts
-
⚡️React Native 0.82.1 — Better or Still a Bug Trap? 🤔 Last week, I tried to start a new React Native project… and it turned into an unexpected debugging journey. In my previous project (GoStock), I worked with React Native 0.82.0 and quickly ran into major issues — from SQLite not working properly to chart libraries breaking and other hidden module conflicts. To get the project running smoothly, I rolled back to 0.81.0, which was way more stable. Everything worked fine, and I wrapped up successfully. Now fast-forward to today — I tried creating a new project again using 0.81.0, but React Native had other plans. Installation failed because the newer 0.82.1 version introduced a new template.config.js that blocks the old template setup. So I did a bit of digging… and found that 0.82.1 was released mainly to fix the exact bugs that made 0.82.0 unstable. 💡 My takeaway: Every minor version isn’t just “a small update.” Sometimes, it’s a massive under-the-hood change that can make or break your workflow. Always read the release notes before upgrading or downgrading. Now I’m curious 👇 👉 Have you tried React Native 0.82.1 yet? Did it actually fix the SQLite and charts issues for you, or are the bugs still hanging around? Drop your experience in the comments — let’s help each other navigate this update smarter. #ReactNative #ReactNativeUpdate #MobileDevelopment #JavaScript #DevCommunity #SoftwareEngineering #BugFixes #DeveloperExperience #ReactJS #CodingJourney #OpenSource #MobileAppDevelopment #ReactNativeCli
To view or add a comment, sign in
-
-
🚨 99% of React devs STILL get this toggle wrong! now this is really important to understand as a React developer Imagine you’re flipping a boolean like this: setIsEditing(!isEditing); setIsEditing(!isEditing); You’d think: 1️⃣ First update → true 2️⃣ Second update → false …but nope Because React batches state updates (and they’re async), both lines read the same stale value, so you end up with: setIsEditing(!isEditing); // ✅ true setIsEditing(!isEditing); // 😬 still true 😬 Not what you expected! ✅ The correct solution? Always use the functional update form when your next state depends on the current state: setIsEditing(prev => !prev); setIsEditing(prev => !prev); Now React uses the fresh value every time: // true // false ✅ React is smart but only if you let it be. When your update relies on previous state → use a function. Simple rule. Saves you from subtle bugs. Follow for more React fixes that make you look like a senior dev. 🚀
To view or add a comment, sign in
-
-
🚀 Debugging — The Hidden Superpower of Every Developer! 1. Writing code is easy. 2. Making it work correctly — that’s where debugging comes in. 💡 Debugging isn’t just about fixing errors — it’s about understanding your code better. It helps you see how data flows, what breaks where, and why. Whether you’re a beginner or an experienced developer, mastering debugging makes you 10x faster and more confident. Here’s how I usually debug my projects 👇 🧩 Frontend Debugging (React / Next.js) : 1. Use Chrome DevTools (Ctrl + Shift + I / Cmd + Option + I) 2. Check Console for runtime errors and warnings. 3. Use Network tab to inspect API calls and responses. 4. Add breakpoints in the Sources tab to pause execution and inspect variables. Use React Developer Tools extension to explore component state and props easily. ⚙️ Backend Debugging (Node.js / Express) 1. Run your Node app with: node --inspect app.js (or) nodemon --inspect app.js 2. Then open Chrome and go to 👉 chrome://inspect 3. Click on “Open dedicated DevTools for Node” You can now set breakpoints, step through code, and watch variables — just like frontend debugging! 💭 Pro Tip: Don’t rely only on console.log(). Real debugging tools give you control to pause, inspect, and truly understand what’s happening behind the scenes. 🔥 Debugging isn’t a chore — it’s a skill that separates good developers from great ones. What’s your go-to debugging trick? Share below 👇 #Debugging #WebDevelopment #NodeJS #ReactJS #MERN #Developers #Learning
To view or add a comment, sign in
-
⚡ “Your code doesn’t have to be perfect — it just has to be clear.” When I started learning React, I spent hours rewriting the same function — chasing perfection. No console warnings. No messy code. Just… flawless. But here’s what I learned ⬇️ 👉 Readable code beats perfect code. 👉 Progress beats perfection. 👉 Working projects > 100 tutorials. You don’t become a better developer by writing flawless code. You grow by writing, breaking, fixing, and improving code that works. Even senior developers push code that isn’t perfect — but it’s clean, functional, and maintainable. So next time your app doesn’t look “portfolio-ready,” remember: Every bug you fix, every refactor you make — is a step closer to mastery. 💪 #reactjs #frontenddeveloper #webdevelopment #javascript #learningtocode #buildinpublic
To view or add a comment, sign in
-
This article provides a comprehensive introduction to React, covering essential concepts like JSX, hooks, and rendering. I found it interesting that the author emphasizes the flexibility React offers for both small components and large applications, making it a powerful choice for developers. What aspects of React do you find most beneficial in your projects?
To view or add a comment, sign in
-
🚀 Why ESLint is a Front-End Developer’s Best Friend As front-end developers, especially when working with React, maintaining clean, readable, and error-free code is crucial. This is where ESLint comes in. What is ESLint? ESLint is a static code analysis tool that helps identify problematic patterns in JavaScript (and TypeScript) code. Think of it as a “code quality guardian” for your projects. Key Benefits for React Developers: Catch Bugs Early: ESLint can detect syntax errors, undefined variables, or even incorrect JSX usage before they break your app. Enforce Coding Standards: Team consistency is easy with rules for indentation, semicolons, quotes, and more. Integrates with Prettier: Combine ESLint with Prettier for automatic code formatting and linting in one workflow. Customizable Rules: Configure ESLint to match your project’s needs or adopt widely-used style guides like Airbnb or Google. Supports Modern JS & React: ESLint understands JSX, hooks rules, and modern JavaScript features. Why it matters in React: React apps grow fast. Without a linter, inconsistencies and small mistakes can snowball into harder-to-maintain code. ESLint ensures your team writes reliable, consistent, and bug-free components from day one. 🔧 Pro Tip: Integrate ESLint with your IDE (like VS Code) and your CI/CD pipeline. That way, errors are caught before they ever reach production.
To view or add a comment, sign in
-
🚀 Just built a clean & minimal Task Manager App using Node.js, Express, and Tailwind CSS! After hours of coding, debugging, and tweaking UI — my new side project is finally live 🎯 💡 Features: ✅ Add, read, and rename tasks — stored as .txt files ✅ Built with Node.js, Express, and EJS ✅ Styled with Tailwind CSS for a sleek dark UI ✅ Lightweight and fast It’s a simple project, but it taught me: how backend and frontend connect through Express routes how file handling works using Node’s fs module how a little design effort can make a big impact 🌈 🔗 GitHub Repo: https://lnkd.in/eH4XNBxE 🖥️ Try it locally → http://localhost:3000 ❤️ If you’re learning full-stack development: 👉 Save this post — perfect beginner project to understand the flow between backend, frontend, and templates. #NodeJS #ExpressJS #FullStackDeveloper #WebDevelopment #TailwindCSS #EJS #JavaScript #CodingJourney #LearnToCode #DeveloperCommunity #100DaysOfCode #OpenSource #SoftwareDevelopment
To view or add a comment, sign in
-
🎯 Front-End Developers: Write Code That Ages Well! Whether you’re working with Angular, React, or plain JavaScript, one thing separates good developers from great developers — writing clean, maintainable, and scalable code. After debugging messy projects, here are some best practices I’ve learned to never skip: ✅ Component Reusability: Break your UI into meaningful, reusable components. The less you repeat, the fewer bugs you introduce. ✅ Consistent Naming: Name variables, functions, and components clearly. Future you — or your teammate — will thank you. ✅ Keep Logic Out of Templates: Templates and JSX should focus on structure, not logic. Move business logic to controllers, services, or hooks. ✅ State Management Matters: Don’t let your app turn into spaghetti. Use proper state management solutions like NgRx, Redux, or Signals. ✅ Testing is a Superpower: Unit and integration tests save hours of debugging and prevent regressions. ✅ Comment Wisely: Use comments to explain why, not what. Clean code should explain itself. ✅ Follow DRY + Use Linters: “Don’t Repeat Yourself” isn’t just a rule — it’s a discipline. Let tools like ESLint or Prettier enforce code quality. Clean front-end code doesn’t just look good — it makes your app faster, easier to maintain, and scalable for real-world growth. 👉 Front-end devs, what’s the one clean code habit you’ll never compromise on? #FrontendDevelopment #Angular #ReactJS #JavaScript #CleanCode #DeveloperCommunity #WebDevelopment #CodeQuality #DeveloperLife
To view or add a comment, sign in
-
🚀 Day 28 – Understanding Sync vs Async in Node.js 🚀 Today was all about clearing one of the biggest concepts in JavaScript and Node.js — Synchronous vs Asynchronous Programming. And wow, this one really explains why Node.js is so fast and efficient ⚡ --- 🔹 What I Learned ✔ Synchronous (Sync) Code runs line by line, one after another. A slow operation will block everything behind it. Good for simple tasks, bad for heavy I/O or waiting processes. ✔ Asynchronous (Async) Tasks don’t wait for each other. Long operations run in the background. Node.js continues executing the next lines. Perfect for networking, file handling, DB queries, APIs, etc. --- 🔹 Why Async Matters in Node.js Node.js is built around non-blocking I/O, meaning it can handle thousands of requests without freezing. Async code makes apps: Faster ⚡ More scalable 📈 More efficient 💡 --- 🔹 Concepts I Explored Event loop Callbacks Promises async/await Non-blocking APIs in Node.js How sync code blocks the thread and async code frees it --- 🔹 Reflection Finally understood why JavaScript behaves the way it does. Async isn’t just a feature — it’s a mindset. Once you “get it,” writing backend code becomes a lot smoother and smarter. --- #NodeJS #AsyncProgramming #JavaScript #BackendDevelopment #CodingJourney #100DaysOfCode #WebDevelopment #DeveloperLife #EventLoop #Promises #AsyncAwait
To view or add a comment, sign in
-
-
Mastering Custom Hooks in React: A Developer's Guide React hooks revolutionized how we write components. But the true power of this system unfolds when you move beyond the built-in hooks and start creating your own. Custom hooks are the most important pattern for sharing stateful logic between components, and mastering them is a key step in becoming a proficient React developer. This guide covers how to build them, when they are necessary, and—just as importantly—when to avoid them, with advanced tips integrated throughout. A custom hook is simply a JavaScript function whose name starts with use and that calls other hooks. That's it. It's a convention that allows you to extract component logic into a reusable function. Let's start by identifying a piece of logic we might want to reuse. A common scenario is managing a boolean toggle state. Before (In a Component): function MyComponent() { const [isOpen, setIsOpen] = useState(false); const toggle = () => setIsOpen(!isOpen); return ( <div> <button onClick={toggle}>{isOpen https://lnkd.in/dVjM6Yvj
To view or add a comment, sign in
More from this author
-
No-Node Native Apps, Sub-Millisecond Text Math, and Sending 3,000 Lines of C++ to Valhalla
Luke Brandon Farrell 4d -
Metro MCP, 147 Haptic Presets, and the 104x Faster Way to Draw a Heart
Luke Brandon Farrell 1w -
React Native 0.85, C++ Music Queues, and Your New Silicon and Carbon Family
Luke Brandon Farrell 2w
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development
Source: https://github.com/callstackincubator/react-native-harness Want to go deeper on these updates? We break them down properly — with examples, visuals, and plain-English explanations of all the jargon that usually sends you digging through release notes. Catch the latest in our newsletter, The React Native Rewind 👇 https://thereactnativerewind.com