
Echobind with Jenn Robison
Jenn Robison, Director of Engineering at Echobind, shares her path into React Native, Expo's evolution, mobile-first design, and building apps with Bison and Prisma.
Episode Description
Jenn Robison, Director of Engineering at Echo Bind, discusses her journey into React Native, Expo's evolution, mobile-first design, and building apps with Bison and Prisma.
Episode Summary
Jenn Robison joins the show to share her career path from administrative assistant at Intel to Director of Engineering at Echo Bind, tracing her progression through HTML, .NET, Angular, and ultimately React Native. The conversation explores how Expo has matured from a tool developers had to eject from almost immediately into a robust platform capable of powering managed projects and even generating progressive web apps from a single codebase. Jenn and the hosts discuss the practical realities of agency work, including how Echo Bind balances exploring new technologies through dedicated investment time and Friday demo sessions while still meeting client budgets and timelines. A significant portion of the discussion centers on mobile-first design thinking and why treating table views as list views leads to better cross-device experiences. Jenn also shares her experience shipping a client project with the Bison template, touching on the strengths and limitations of Prisma for complex filtering and the trade-offs of using Chakra UI for component styling. The episode wraps with a look at Echo Bind's open-source React Native template, the state of React Navigation versus the Wix library, and the value of blog posts versus documentation in a rapidly changing ecosystem.
Chapters
00:00:00 - Jenn's Career Journey and Background
Jenn Robison introduces herself as the Director of Engineering at Echo Bind, walking through a career that started as an administrative assistant at Intel and evolved through self-taught HTML, business analysis, and formal education in computer information systems. She traces her progression through the .NET ecosystem with VB and C#, then into JavaScript frameworks starting with Angular.
The conversation turns to her transition from Angular directly to React Native, skipping React web entirely. She explains that while the jump between JavaScript frameworks felt natural, the mobile side brought unique challenges around styling, particularly moving away from global stylesheets and adapting to different sizing and layout paradigms that mobile development demands.
00:03:28 - Joining Echo Bind and Agency Culture
Jenn shares the story of finding Echo Bind through a LinkedIn recruiter, drawn by the company's focus on healthcare, which aligned with her background as a volunteer firefighter and first responder. She describes the serendipitous connection with CTO Chris Ball, whom she had unknowingly crossed paths with at the Chain React conference before either knew the other.
The discussion shifts to how agencies balance adopting new technologies with the practical need to ship products on time and within budget. Echo Bind gives employees dedicated investment time to explore tools like GitHub Actions, Expo build services, NestJS, and Redwood, then holds Friday team demos where engineers share what they've learned from both client work and personal exploration.
00:07:24 - Expo's Evolution and Cross-Platform Potential
Jenn describes how Expo has transformed from something developers needed to eject from almost immediately into a platform with excellent libraries for location, push notifications, and camera access. She shares her experience maintaining a fully managed Expo project and successfully converting it into a progressive web app by simply running a single command, with tabs and navigation intact.
Christopher and Jenn discuss the broader vision of writing one codebase that works across mobile, desktop, and web, with Expo leading that charge. They explore how dashboard-style applications are natural candidates for this approach, noting that roughly ninety percent of code for graphs, tables, and forms could be shared across platforms, though the tooling still has room to mature.
00:11:19 - Mobile-First Design and Responsive Thinking
The group explores why mobile-first design produces better user experiences across all devices, using a real client story where a desktop-only dashboard unexpectedly needed to work on phones. Jenn explains how rethinking tables as card components naturally produces layouts that function well on both mobile and desktop, fundamentally shifting how developers approach UI architecture.
Christopher reinforces this with his own experience building a dashboard where mobile usage surprised everyone despite expectations. They discuss tools like Responsively and Sizzy that help developers preview applications across multiple device sizes simultaneously, and Anthony notes the growing reality that most traffic will increasingly come from mobile devices.
00:14:48 - Technology Selection and Spiking New Tools
Jenn outlines Echo Bind's approach to choosing technologies for client projects, emphasizing that exploration happens ahead of time rather than during active development. The team maintains a matrix of use cases for different technologies and conducts focused spikes when requirements don't clearly match existing solutions, such as a one-week spike to test bridging an iOS-only face-mapping SDK with React Native.
The conversation expands into end-to-end testing with Detox, which Jenn has spoken about publicly and finds valuable despite the constant challenges of keeping tests working across new OS versions and React Native releases. She highlights how each platform update can break testing configurations, requiring developers to constantly adapt and then share solutions through blog posts and conference talks.
00:18:41 - Documentation Versus Blog Posts
Christopher poses the question of whether fifty blog posts or thorough documentation better serves developers, sparking a nuanced discussion. Jenn argues that good documentation wins because blog posts often stem from documentation gaps and reflect individual interpretations that can lead developers astray, much like outdated Stack Overflow answers that no longer apply to current versions.
The group acknowledges that blog posts are often more readable because they come from the user's perspective, but they lack the maintenance and synchronization with core development teams that documentation provides. Jenn shares examples of her own popular blog posts about iOS splash screen migration and enabling Hermes for Android, which continue receiving hundreds of weekly views long after the ecosystem has evolved past the specific issues they address.
00:23:05 - Building with Bison, Prisma, and Chakra UI
Jenn discusses her experience shipping a client application using the Bison template, which served as her first real React web project after years in mobile development. The project was a transactional marketplace similar to eBay, with buyer and seller roles, listings, and bidding functionality, built with Prisma, Nexus for GraphQL, and deployed on Vercel.
She identifies rough spots around Prisma's handling of complex filtering and joins, particularly for developers with deep SQL experience who think in terms of optimized queries and stored procedures. The conversation also covers Chakra UI's limitations with missing standard components like multi-select dropdowns, leading to discussions about alternatives like Tanner Linsley's headless UI libraries, Uber's Base Web, and Shopify's Restyle for React Native.
00:30:22 - CSS Evolution, Echo Bind's React Native Template, and Navigation
The hosts and Jenn reflect on the evolution of CSS tooling from Sass and Less to modern libraries like Tailwind and twin.macro, with Christopher sharing his enthusiasm for the latter. Jenn discusses how Echo Bind's business has shifted from its Elixir and Ruby origins toward React Native as the dominant request from clients seeking cross-platform solutions.
The episode closes with a look at Echo Bind's open-source React Native template, which includes Apollo Client, Detox configuration, and is being updated to use Expo's bare workflow and Shopify Restyle. Jenn shares her preference for React Navigation over the Wix navigation library, noting how React Navigation has closed the feature gap significantly and how mobile navigation concepts around stacks and tabs often confuse developers who think in terms of web browser patterns. The final timestamp is 00:36:06.
Transcript
00:00:00 - Christopher Burns
[unclear]
00:00:18 - Anthony Campolo
Jenn Robison, welcome to the show.
00:00:20 - Jenn Robison
Thanks for having me. Good morning.
00:00:22 - Anthony Campolo
So you are going to be the third person we've had so far from Echo Bind. We're really excited. We love Echo Bind here. You are the director of engineering, so I'd love to hear a little bit about your role and what you do.
00:00:35 - Jenn Robison
Great. Yeah, it's been really fun as a team to join you guys. My current role is director of engineering here at Echo Bind. I bring quite a number of years. I hate to age myself. It makes me sound older than I am, but I have spent more than 15 years in tech.
I actually started my career as an administrative assistant, working at Intel and then working into a technical role. So I started in a business analyst role and kind of self-taught myself HTML with a lot of the WYSIWYG editors, and then started delving into JavaScript. I did my associate's degree in computer information systems.
Then I really got into the .NET world. So I did VB and then C# and kind of delved into JavaScript frameworks from there, starting with Angular. And then a few years ago, I made the switch over to mobile and got really interested in React Native, which has been really fun.
00:01:36 - Anthony Campolo
Wow, that is a killer list of technologies and things you have worked on. That's really incredible. So how did it feel going from something like Angular to React Native? Because that's a switch not only from web to mobile, but also from Angular to React. So I imagine that must have been a huge transition.
00:01:54 - Jenn Robison
It's kind of funny because most React Native developers start with React as a web framework, and I actually completely skipped that step. But I felt like it was pretty natural. Once you've done one JavaScript framework, there's a lot of similarities. There are some differences. Angular was pretty opinionated with certain aspects. Then when you get into the mobile side, you have different concerns that you have to deal with.
I think some of the biggest learnings and challenges for me were getting away from more of that global style sheet type mentality and figuring out how do we share our styles and not have a lot of repetition going on the mobile side? It wasn't as simple as, oh, I have my style sheet and all my buttons look like this. It's getting easier and easier with theming and some of the libraries out there, but when I first started, it was much different. And when you get into sizing and heights, it was like, wait, this is a lot different. That's cool.
00:02:55 - Anthony Campolo
And I'm curious, just as someone who's done so much JavaScript, if you've looked at Vue or Svelte at all.
00:03:00 - Jenn Robison
I have actually never used those frameworks. I did some Knockout.js. I've just scratched the surface with a little bit of Backbone, which I don't ever really want to repeat. I'm trying to think of some of the other frameworks. It's been a while. Aurelia, I think, was one way back.
00:03:19 - Anthony Campolo
Yeah, there's definitely a lot that now are kind of passe, but Vue is actually still growing. I think it's getting more interesting.
00:03:27 - Jenn Robison
Right. They are definitely.
00:03:28 - Anthony Campolo
Which is why I think they're worth at least being aware of. Bringing it back to Echo Bind, how did you first hear about Echo Bind?
00:03:35 - Jenn Robison
It's kind of a funny story for me. I was very much peripherally looking for a more remote opportunity. I was approached via LinkedIn from a recruiter. It was very interesting to me because Echo Bind has a niche in healthcare, and something else about my career and my past is I'm actually also a first responder. I've been a volunteer firefighter, and so I have a huge passion in the healthcare industry.
So for me, finding a job that's remote, working in healthcare, and being able to blend those passions was super interesting. From the very first conversation I had with our CEO, Michael, it just felt like I was at home, to be honest.
Then later found out that I had actually kind of crossed paths with our CTO, Chris, who you guys have had on the show. I had spoken at Chain React that year, and through my interview process they were like, oh yeah, we listened to you speak at Chain React, and I was like, oh, okay.
[00:04:43] Like, I hadn't heard of Echo Bind at the time. And now we joke because there's actually pictures of Chris and I at the same place, and we had no idea who each other were at the time.
00:04:53 - Christopher Burns
I'm yet to attend any conferences. I've never actually attended a JavaScript conference at all. And I think post-COVID conferences are the best thing ever, because no matter where you are in the world, you can watch it. I'm a big fan of them.
One of the questions that I did want to ask, as head of engineering, was that it?
00:05:13 - Jenn Robison
Director of engineering.
00:05:14 - Christopher Burns
Director. There we go.
00:05:16 - Jenn Robison
So fancy.
00:05:17 - Christopher Burns
And this is something I always battle with. Anthony says, have you played with Svelte or XYZ or any JavaScript technology? And I feel like in an agency it's one of the better places to have played with that technology, because I'm from a startup where we have to get the job done.
I have team members that say, have you heard of Deno? My instant answer is yes, but what's the use case? And then they go, oh, it's really good at these things. I'm like, but Express is just fine right now. There's no point trying to ship bleeding-edge technology. But I am a guy that runs his startup in Redwood, so I'm here and there.
00:05:58 - Jenn Robison
Yeah, I think we walk a fine line with that too at our agency, right? Because at the end of the day, we're very much like a startup where our goal is to help you ship your product and meet your budget and timeline. So we have to be really aware of those things as well.
One of the things I love about Echo Bind is that we allow our full-time employees to have investment time, so part of our investment time is to be able to spike out some of these technologies. One of the things I've been working on recently is getting our React Native builds up on GitHub Actions and playing around with the Expo build services. But that's a perfect opportunity for a lot of our employees to start to explore other technologies. NestJS, Redwood, so many different opportunities and things that people can dive into.
And then on Fridays we have team demos where we get a few minutes each to share something we've learned that week, whether it was through our client work or through our investment time.
00:06:59 - Christopher Burns
My question is, does Chris Ball always bring the best demos?
00:07:04 - Jenn Robison
Chris has some pretty awesome demos, but I would say it's anybody's guess who's going to have an amazing demo, right? We have skill sets across the board. Some people are working on mobile, some people are working in Ruby, and it just depends. I'm always learning something from our amazing engineers.
00:07:24 - Anthony Campolo
You also mentioned Expo. I know Chris is always super interested in Expo. How has your experience with that been?
00:07:30 - Jenn Robison
We're definitely starting to get more and more into Expo. When I first started using React Native, Expo was kind of that faux pas where you had to eject almost immediately if you wanted to do anything with camera or more on the native side of the mobile application, but their libraries have become so advanced. They have done such a great job with managing those libraries for locations and push notifications and camera. They've just made the developer experience so much better that we're moving more and more back to Expo.
We have a React Native TypeScript template that we maintain, open source, that has been our go-to for our greenfield applications, and we're starting to convert that over to a bare workflow for Expo.
00:08:18 - Christopher Burns
I completely agree with what you're saying about Expo because I learned React Native before learning React. So I went from WordPress, like PHP development, to React Native, to React. And when I was just on the cusp of going from React Native to React, I was like, I don't think I get how React works. Like, there's no compiler, it just runs in the browser. Like, what?
And then when I learned React, it was like, oh, I get why all this is happening now and how React Native took so much from React. But I would say React Native has some of the better APIs than React, and I still believe Expo is paving the path for the one true React application. And what I mean by that is you write it once and it works on your mobile devices, your desktop devices, and the web. I believe Expo is making that possible.
00:09:16 - Jenn Robison
Yeah, I totally agree. I listened to the episode with Mike recently, and I heard you guys talk about that, and I know he's been dabbling a little bit in React Native Web. One of the projects I was just recently working with is actually an Expo managed project. As much as I thought we would need to eject, we were actually able to maintain it as a managed project. And part of my parting gifts to them was like, hey, let's spike out what this looks like as a PWA with the same codebase. Can we actually use the same exact code and have it be available on the web?
I was very pleasantly surprised. It was really my first experience of truly trying that with a fully baked application that had location. So we're talking about a location tracking application. I simply said, Expo start web, and bam, I had a PWA. It was honestly amazing.
[00:10:19] If I were to produce this as a production application and I did the build web, it gives me my little folder of compiled code. I use npx serve with that folder and I could run it locally. And I was like, wow, this is amazing. I would have no issue. Obviously, you're going to have use cases where that's not exactly the experience you want, but it had React Navigation with tabs on the bottom and looked exactly the same as I would have in a mobile app natively. It was pretty awesome.
00:10:48 - Christopher Burns
I think a lot of the time when an application is literally like a dashboard and then your customer says, yeah, can we have this web dashboard now as an app? It's like 90% the same code, 90% of the same graphs, tables, forms. And that's where I think React Native Web and things more native like Windows and Mac OS can really come. But it's still not quite there yet. And I think something like Bison or Redwood could really bring that forward.
00:11:19 - Jenn Robison
Also, when you start to do that mobile-first design, right, because a lot of times when we're like, hey, let's build this dashboard, we're building it still thinking more in that desktop web space. This actually happened on a client project where it was like, no, nobody's going to be accessing it on mobile. It's only on desktop. And so all of our designs were very much desktop-friendly.
And then the client was like, wait, but I can't view this. It doesn't work on my mobile device. And it was like, well, that wasn't a requirement at the time. So going back to that, very much mobile-first design. A lot of times you're not going to use a table on a dashboard because tables aren't mobile-friendly. You just can't see all the data. So then you start to think about them as card components. And those will work really well on a desktop web as well.
The whole flip in design thinking, I think, will just give better user experience across the board when we start to think more in that space first.
00:12:15 - Christopher Burns
One of my favorite things is when we were building our own dashboard, I spent a lot of time making sure mobile views worked in it. And my business co-founder was like, nobody views it on mobile. Everybody goes through the desktop. And then three people joined in a row, all did it through mobile. And it was like, you just can't predict the web anymore. And sometimes, even with the most B2B applications, people still do it on their mobiles, so it's really crazy.
And my second thing: every time one of my team members or I says, like, that's a table view, I always go, but it's actually a list view, if you think about it.
00:12:55 - Jenn Robison
Yeah. So true.
00:12:57 - Christopher Burns
Because this is the thing, tables are just so restrictive and I completely agree. It's like as soon as you flip it and think a table view is always like a list view, it makes it so much more accessible to all different device sizes.
00:13:09 - Jenn Robison
Yeah, I've definitely gone into a much different way of thinking when I'm testing any application that we're doing for the web. I don't know if you use Responsively, but it is an amazing application to be able to say, like, across all these device sizes, phone, iOS, small form factor, laptop, etc., I can just see how my application is going to work and split.
So even if we have different views on the web of like, it'll be a card here, but it'll be a table there or list view, it just makes it so much easier to start with that in mind.
00:13:44 - Christopher Burns
Yeah, I use a web browser called Sizzy. I'm pretty sure it's very similar to Responsively. It's like a Chrome headless browser in multiple different windows as the different devices.
00:14:00 - Jenn Robison
Yeah, it's come a long way. The tools that we have available to us.
00:14:03 - Anthony Campolo
Yeah, it makes sense because we have such a wide range of devices that our users could potentially be on. And I think the mobile first thinking makes a lot of sense because you think about it, pretty much everyone is going to own a phone, but not everyone is necessarily going to own a laptop or a desktop.
So really, we're getting more and more to a place where you should just assume the majority of your traffic is going to come from mobile, and that's just kind of the way it's going to be going forward. So I'd be curious how you think about using frameworks for mobile versus building stuff up yourself. You're talking about how Expo does a lot of stuff for you, but also it won't necessarily fit all of your use cases. So when you're presenting a project, when do you think you need to roll your own versus use something off the shelf?
00:14:48 - Jenn Robison
Kind of going back to what I was saying earlier about when we're exploring new technologies, we try to have a lot of those explorations done ahead of time, and we try and think about the different use cases, having a matrix of when we would use different technologies. We try not to, on a new project, say like, oh, we're going to go try this technology because we think it might work.
We try and use something that's already proven. If we're not sure that we have the right framework to use, we should be including that as part of our development process of like, hey, this is a requirement for you. So let us first start out with a spike and really talk through what are your use cases and your requirements, and then come back to you with this is our actual development plan.
It doesn't make sense for us to try something out without proving it out at least a little bit. For example, recently, we were using React Native to help us with a project where the SDK we needed to implement was iOS-only. And that's because it's using the face-mapping, the 3D face-mapping portion of the camera. So it's obviously only available on certain iOS devices. It's iOS-only, but we still thought we could get the advantages of using React Native with that.
So we started that project by doing a one-week spike to say, all right, can we bridge this library effectively with React Native before we commit to the client that this is the right path for them?
00:16:24 - Christopher Burns
So have you found that bridging native modules has got a lot easier in the last year or two? Because I think I touched it two years ago when bridging native modules was quite a big deal, and you had to get your CocoaPods out and manage it all in Xcode.
00:16:43 - Jenn Robison
I really didn't experience it previously. I would say the documentation wasn't amazing, so my coworker Alex and I spent that time spiking it out, and we had a lot of learnings from that. And we actually have a plan to put together a blog about bridging for React Native.
There was just a lot that was kind of lost in translation, for lack of a better word, where we were like, well, this doesn't actually quite work the way it says, so let's figure it out, which is one of the things that I love about engineering and has kept me so interested in this space. And keeping things interesting as an engineer is like, we're always learning and trying to figure out how to make things work when they're not necessarily known to us.
00:17:32 - Anthony Campolo
What are some of the tools that you're in the testing-out, spiking-out kind of phase with right now that you still are not really sure if they're going to work yet or not?
00:17:40 - Jenn Robison
Every time we try something out, one of the things that I find super interesting is end-to-end testing. I've given a few talks in that space for Detox over the last couple years. I just think it gives you so much more confidence in your code.
But it's been a massive roller coaster, to be honest, over the last few years where every time iOS releases a new OS version or Android rolls something new with their APIs, and then React Native does a release, it breaks something within there, and you just have to be constantly trying out, like, okay, now that Android has made it so that the cleartext traffic for network isn't available across localhost, now I got to go figure out how to create this network configuration and just piecing together everything and then helping blaze that trail for other developers. So putting out blog articles and giving talks so that others don't have to fight the same battles.
00:18:41 - Christopher Burns
What do you think is better, 50 blog posts explaining how to do something or very in-depth documentation saying how to do it?
00:18:50 - Jenn Robison
That is a great question. I think good documentation is going to be better than all the blog posts, because the blog posts are usually telling us the documentation isn't good and they're based on somebody's understanding. They can be really tricky. They can lead you down a lot of rabbit holes.
It's like Stack Overflow, right? We can't find what's going on, we go to Stack Overflow and they can lead you astray. Even things that have been thumbs up a bunch and you're like, yes, this is going to be the answer. And you're like, nope, still doesn't work. There's just so many changes in the ecosystem.
00:19:27 - Anthony Campolo
Yeah, I find the blog posts are sometimes easier to read and more comprehensible because they're more from the user's perspective. It's someone who kind of came at the docs and wrote a thing, but they're not necessarily updated the way docs are, and they're not in sync with the core development team of whatever the thing is they're actually writing about. So that's where you can get into a lot of problems there.
00:19:48 - Jenn Robison
Two of my most read blog posts that I've put out, one is around last year, when iOS was no longer going to allow the XIB file, which was the common React Native splash screen that we were using in iOS. And so you had to transfer it to storyboard, and React Native wasn't even updating it yet in the template. And I wrote a blog post about how to translate your XIB file into storyboard, because it just wasn't, as a non-native developer, the documentation from Apple was terrible.
And I figured it out. I was like, all right, I'm going to put a blog post. But now, it still gets hundreds of views every week. And I'm like, wow, that's been over a year. It's included now with React Native. I would think that it's not as relevant anymore, and obviously I haven't updated it, but people still find it useful.
And the other one is around enabling Hermes for Android, which just this weekend React Native 0.64 was released and now Hermes is available for iOS. So when I wrote that blog post, it was still not very common even on Android. And now here we are evolving and I wonder how relevant that will continue to be. But people still find those things useful. It's hard to keep all of that current with the different versions.
00:21:05 - Christopher Burns
The reason I asked for your opinion is because I think sometimes documentation is just unreadable for me, and it's much easier to read someone's opinionated blog piece because, not even in a bad way, some documentation is literally written like a scientific paper and that's like, chuck it out the window for me.
But I could read a blog post of someone talking through it as long as the wheel's not being reinvented. It's always useful. But then there's still a blog post that's like, you want this solution? Download these ten Yarn packages and do this and you'll have your solution.
00:21:44 - Jenn Robison
I think that's completely valid, right? A lot of times we write blog posts because we experience such a lack of good documentation that we felt it was going to be helpful. As Anthony was saying, we write them from the user perspective of like, I'm trying to get this thing completed, so these are the steps I had to follow.
Whereas a lot of times the documentation comes from not even necessarily a developer writing them. Technical writers aren't necessarily the people actually writing them, so they think it makes sense. But if you actually were to step through, you can leave out steps and sometimes you get too close to the subject matter. Last year I was working on creating a CLI to help us with our React Native release process, and when I first started having my team help test out the process, I realized I had left out some pretty critical steps because I was so close to the subject that I wasn't thinking about those. They were second nature to me. So to have somebody else go through it, it was like, oh yeah, I need to make sure I include that information for others.
00:22:46 - Anthony Campolo
Yeah, I find if you either have someone, an editor, read through it and find those mistakes, or you eventually have someone read it after it's published and leave a comment and find those mistakes. And if that doesn't happen, then probably no one read it.
00:22:59 - Jenn Robison
That's very true. If you're not getting feedback, then it's probably not getting used. Somebody's not finding a bug.
00:23:05 - Christopher Burns
I think it's so easy to fall into the position where it's like, this is the only way to use this, and everything else is not the real way. Never use it. I really like the projects and such that give you a lot of freedom. Bison is one of them. Redwood, because it very much teaches you the fundamentals. And then it's literally now go build something.
00:23:28 - Jenn Robison
We released a client app with Bison just recently, and it was a learning process for me, to be honest. I had been really in the mobile space for the last several years, so that was my first true React web project. So I got to learn quite a bit through using that. And the Bison template really helped give some opinions around that.
00:23:55 - Anthony Campolo
That's awesome. Yeah. I was going to ask if you had worked with Bison at all, because I would imagine you would have at least heard about it as it was created, you know, being involved with Echo Bind, but you probably never really poked into it very much until you had to build something with it, right?
00:24:10 - Jenn Robison
Yeah, exactly. It was my first time deploying on Vercel and getting into using Prisma, actually, because all of my GraphQL experience previous to that was using more of just a true Apollo Server with TypeORM and Sequelize and doing more traditional work in that space.
So it was really interesting to learn the flow with Prisma. And just even in the last couple months, Prisma is coming leaps and bounds and they have some pretty amazing tools out there to help developers start to understand those pieces.
00:24:48 - Anthony Campolo
Since you're using Nexus, that's kind of like a GraphQL layer that is different from Redwood because we use Apollo Server, right? And that's kind of how you have the difference between the code-first versus the SDL-first kind of schemas, and then you're probably just using Postgres for the database.
00:25:07 - Jenn Robison
Yeah. We were.
00:25:08 - Anthony Campolo
Nice. So what was the, as much as you can kind of talk about, generally what the client project was like? What was it around?
00:25:16 - Jenn Robison
Yeah, in general terms, it was kind of a transactional system. I would consider it similar to say like eBay or Craigslist, where you can put an ad for this particular commodity. So you have buyers and sellers as your different roles, and based on your roles, you see different portions of the application.
So you can put up a listing and then people can bid on your item that you have available. So we have everything from reference tables and types to actually the transactional side of it.
00:25:48 - Anthony Campolo
That's awesome. Yeah, it's good to hear that people are using Bison to build that kind of stuff, because that's a serious app. And we've been talking about these frameworks as if they're something you could build serious apps with. So it's always nice to get a little bit of validation there.
And then obviously it's kind of a newer thing. What are some of the rough spots that you're still running into while using it?
00:26:07 - Jenn Robison
I would say some of the rough spots were honestly a little bit around the Prisma side. When you start to get into some of the more complex... I've got a long history with SQL Server. I've done everything from crazy stored procedures and some pretty intense reporting. So my brain, the way it works, and optimizing queries and things like that can make it challenging.
I think sometimes to get down into the context and build the objects of, like, the where with the subobjects, where you're essentially behind the scenes doing joins. I think one of the biggest challenges we had was more in the filtering on the server side. So you either needed to roll an actual SQL query or needed to do it on the client side, which is obviously suboptimal, especially on a mobile device.
So from what I've seen, that's already making strides for improvement. And I think that they'll get further and further down that path. But I think that's where you have to think about the complexity and think, is this the right solution? And just knowing what are the limitations. But we got very, very far before finding some of those cases, and at the end of the day we were able to work around it.
00:27:21 - Anthony Campolo
Yeah, it's one of the things with Prisma is that it usually lets you just drop down to the SQL if you need to, and that's kind of what I like about how they've gone with Migrate, is that it literally just spits out a SQL file for you instead of this long step SuperJSON thing that it used to do. And then had you used something like Chakra before?
00:27:40 - Jenn Robison
That was actually my first time using Chakra. It definitely had some good pros to it. And then there were some things where I was like, man, this is really painful when they don't have what I would consider some of the standard components that we would use, say like drop-down multi-select or some really common user elements they don't include.
So then you have to try and bring in another library or build your own, and then you're trying to match the styling of all of the other Chakra elements. And I think you end up fighting it a little bit more than I would have liked. It still has a lot of really great uses, but we're starting to look at, is that the right library for us when it comes to theming?
It gets you really far for a lot of basic applications, but it might not for some more complex.
00:28:30 - Anthony Campolo
You should look at Tanner Linsley's libraries. He's got a whole suite of libraries that are targeted at all these different kinds of specific use cases for things like that, like selects and more complex, really data-intensive, data-manipulation-type, data-analytic dashboard stuff like charts and all that kind of thing.
00:28:50 - Jenn Robison
Nice.
00:28:51 - Anthony Campolo
I've been listening to the episode with him. His whole philosophy is having hooks that are just managing your UI logic, and then you can kind of theme on top of it. So that would be able to do probably a lot more of the complicated stuff you'd want to do. And then you could just theme Chakra on top of it. It's kind of, I think, what a lot of his ideas are based around.
00:29:12 - Jenn Robison
Yeah, I'm definitely going to check that out. We've been looking at Base Web, which is from Uber. On the React Native side, we've been starting to move away from styled systems and Emotion to using Shopify's Restyle, which starts to get more in those base components that you then create the variants on top of. So really similar to the Chakra idea behind it. And then you can really start to customize from there, like how you want them to function.
00:29:39 - Anthony Campolo
That's cool. Yeah, I don't do a ton of CSS, so I'm usually kind of out of my element in these conversations.
00:29:46 - Christopher Burns
I love CSS, but what I love most about it is when something just clicks in my head, going, this dashboard layout that I thought was cool for three weeks is no longer cool and needs refactoring into something cooler.
00:30:01 - Jenn Robison
Yeah, I remember before I got into React Native, I was heavy into Sass and Less, just thinking about how far CSS had come at that point. And now, even further, with a lot of these really awesome libraries, Tailwind and some of these other frameworks for styling that really just make it a lot easier for folks.
00:30:22 - Christopher Burns
I was gonna say my favorite library right now is twin.macro for Tailwind.
00:30:28 - Jenn Robison
Oh yeah.
00:30:29 - Christopher Burns
It's super complex to explain to people, but it's basically Tailwind CSS.
00:30:34 - Jenn Robison
Yeah, we actually have a client who chose that over Tailwind. They were trying to decide which was the best path, and they ended up going down that path. I'm super excited to kind of see how that plays out.
00:30:48 - Christopher Burns
My final question, what technologies do you feel have fundamentally changed Echo Bind? Not necessarily developer technologies. I mean, like in general, like a Kanban board or whatever.
00:31:01 - Jenn Robison
I think in general, just the JavaScript frameworks have come so far. So I think about the history of Echo Bind, and they really kind of started in the Elixir space. And we had Elixir, and then kind of like Ruby. And now I look at our business and the majority of the asks are really in that React Native mobile space. The ability to get to what we were talking about before, which is kind of that one set of code for all of the platforms.
People are just going to be able to get more bang for their buck and be able to ship to all of their users, whether that's macOS and Windows. It's pretty amazing what React Native is enabling from one codebase.
00:31:48 - Anthony Campolo
Yeah. So here's a question. Should there be a Bison-like template for React Native, or should there be a React Native side for Bison?
00:31:58 - Jenn Robison
I mean, we kind of already have, honestly, the React Native template that's very kind of opinionated, similar to Bison.
00:32:08 - Anthony Campolo
Is it open source?
00:32:09 - Jenn Robison
It is, yeah.
00:32:10 - Anthony Campolo
What is it?
00:32:11 - Jenn Robison
It's just literally under our Echo Bind GitHub and it's called React Native Template. It includes a lot of the tools that can help get you going. And as I mentioned earlier, we're now in the process of trying to convert that to an Expo bare workflow. So let's switch out the libraries to start to enable different pieces.
But it includes things like the Apollo Client. It already has the Detox configuration set up for you for end-to-end testing, which is one of the most challenging things, I think, for people to start to set up. It's already got testing in place. In that one, we're actually in the process of updating it to use Shopify Restyle from Emotion and styled systems. So it's got a lot of the pieces in there that get you going really quickly in a React Native app.
00:32:54 - Anthony Campolo
Yeah, this looks killer. I'm definitely going to look into this. This looks like exactly what I wanted.
00:32:59 - Jenn Robison
I know we need to come up with a fancy name for it like Bison has.
00:33:03 - Anthony Campolo
That's right. Yeah. Just got to pick one word that's generic and isn't taken yet.
00:33:07 - Jenn Robison
I know. So taking ideas now. We're going to rebrand this.
00:33:13 - Anthony Campolo
Cool. Cool.
00:33:13 - Christopher Burns
I guess my very final question, which is the better navigation system for React Native?
00:33:19 - Jenn Robison
From my experience, we had a much better experience with React Navigation previous to coming to Echo Bind, and I had a lot of experience using the Wix library. I think once I really got into React Navigation, I appreciated it a lot more, and it's come a lot further with a lot of its customization. V5 and what have you have really opened up a lot of opportunity to do different things.
I think there's such misconceptions for people when they're thinking about navigation. They think about navigation much like they think about it in the web, and they don't understand the difference in the stacks and the tabs and how things work in that space. They think about it very much like a web browser, where I was on page one and I went to page two and then three. So if I click on this other tab, it should go to this space that I expected. But they're very different stacks, so that doesn't necessarily work that way.
00:34:14 - Christopher Burns
When I last did React Native, the Wix one was on top. I think React Navigation just added native components, like native navigation, because before then it was all JavaScript, correct? When Wix had partial native, partial JavaScript, I think that was it.
00:34:36 - Jenn Robison
Yeah, I agree, and that's where we were before I came to Echo Bind. The product I was working on, the Wix library, had a lot more features that we needed at the time. But now I think they're very, very, very close. And it's really, I think, a personal opinion, and it really just becomes what are you familiar with and what are you used to using?
00:34:57 - Christopher Burns
That's it from me. Where can our listeners find you?
00:35:00 - Jenn Robison
I'm on Twitter. I'm Code Jen. I'd love to take that username with all the code generators that are out there. And I'm see me jet on GitHub.
00:35:13 - Anthony Campolo
Great. I know you guys are hiring as well, so something else to throw out there, right?
00:35:17 - Jenn Robison
Yes, please. We are actively seeking front-end React and React Native full-stack devs. So if you want to join a really fun team, definitely look us up.
00:35:29 - Christopher Burns
Thank you for your time.
00:35:30 - Jenn Robison
Thank you guys so much.
00:35:32 - Anthony Campolo
Yeah, thanks so much for being here. We really appreciate it.
00:35:34 - Jenn Robison
Thank you. It's been fun.
00:36:06 - short split/interjection
[unclear]