Fullscript Logo

Fullscript Engineering Wrapped 2025

Author

Jeff Fouchard
Jeff Fouchard

Date Published

Share this post


I sound like a broken record, but year after year Fullscript Engineering blows my mind with what we can accomplish. 2025 was no exception. It was easily our most productive year ever by basically every metric—volume of code written, developer velocity, and most importantly, features shipped. It’s cliché, but this is a team firing on all cylinders. I’ll save my personal histrionics for the end—let’s get right to what matters.

By the Numbers

The main application that powers Fullscript is our Ruby + React monolith, along with a React Native mobile application. Nothing has changed architecturally, and we don’t foresee ever needing to move off that solid foundation. While it has been an… interesting year in the Ruby ecosystem, we remain committed to it and believe these changes are positive overall, even if they got off to a rocky start.

We are approaching 2 million lines of Ruby, and we added 44% more code in 2025 than in 2024 to that backend. Our frontend codebase grew by 27% in the same period. A 145% increase in our mobile codebase reflects it's growing importance to our mission. Honestly, we probably under-invested in mobile over the years, but we’re definitely making up for lost time. Code growth never really tells the whole story (honestly, I think we are usually more excited to delete code).  So, perhaps our overall project throughput is a better metric. It increased by 24% and we shipped 250 projects - big and small. These are incredible numbers when you consider the engineering team “only” grew by 24% to a team of over 200 incredible technologists in 2025.

So, how did we get more efficient? First, our developers are awesome. Second, we invested early in automated testing and CI/CD processes. Third, we benefited from dedicating resources to improving how AI tooling works with our codebases. Those three things combined to make 2025 another record year in terms of code shipped. We will have a couple of companion posts if you’re interested in how we approached AI adoption both in engineering and in the business as a whole. It’s been quite the year of change!

Speaking of those CI/CD processes, they were busy. Really busy. For the monolith alone, we ran 335,000 pipelines, and another 426,000 across all other projects (mobile, infrastructure, IT, data, etc.). That’s almost 800,000 pipelines last year. Will we hit a million next year? Almost certainly. But still… incredible. We continue to release code to production every hour or so with 2,387 deploys last year. We maintain a weekly release cadence for the mobile application. After experimenting with a few different release strategies, we found this is the right balance between shipping quickly and navigating the realities of the App Store ecosystems.

Our uptime and overall performance remain strong. We saw 99.995% uptime over the last year, with sub 100ms average request durations. We also took concrete steps to address particularly slow pages and decoupled API traffic to give our partners even better performance. Traffic growth was more modest—8% year over year—but this now excludes API traffic, so it’s hardly a fair comparison.

Milestone Releases

It turns out that our patients and practitioners don’t really care how much code we shipped. Shocking, I know. What they do care about are the features of all that code provided. This article would be a book if I covered everything we shipped this year, but here are some highlights. 

Search remains the most-used interaction method on Fullscript by far. Our search has come a long way over the last few years, but it’s never perfect. This year we not only migrated to a new search backend (lowering costs and improving performance—a rare win-win), but we also built our own re-ranking tool! All of these improvements led to an all time high in our search relevancy metrics in mid-summer. The folks on our search team are way smarter than me, so read about it first-hand in their excellent blog series.

More and more hospital systems and other large health systems are relying on Fullscript than ever before.  To better support them we launched a brand new integration with Epic Systems - the world's largest Electronic Health Record system.  This integration build using SMART on FHIR is available in the Epic Showroom and provides seamless data sharing between the two systems, reducing manual data entry and duplication of work. 

Without a doubt, the largest single project we completed this year was migrating our Emerson Ecologics platform into the Fullscript monolith. This was a massive undertaking, involving dozens of developers. We aimed to rebuild the platform without breaking critical flows for the clinics who rely on them. If you’ve ever worked on a large-scale platform migration, you know what a challenge that is. And the team delivered—successfully migrating the user base with minimal disruption, a fresh new feel, and some nice quality-of-life improvements to boot. We are no strangers to migrations at Fullscript, and this was our most successful yet.

Speaking of migrations—we have a fresh new website! Our small-but-mighty web team massively improved both the look-and-feel and the performance of our main website by migrating to a new CMS platform. Bye Wordpress, hello Next.js and Payload! The net result is a 30% improvement in our core web vitals. This is a huge upgrade for a site that gets hundreds of thousands of visitors each month, and it gives our content team a much improved backend experience. Oh—and they also created a brand-new educational platform for practitioners: Fullscript Academy. Busy year!

Fullscript.com Performance

This year more large health systems relied on Fullscript than ever before. To support them, we launched tools that enable their administrators to better manage their accounts. These self-service tools save dozens of hours and give administrators the flexibility they need to serve patients effectively. We’ve also made major improvements to our EHR integrations and continue to invest in the capability and stability of our API. The healthcare landscape is shifting toward proactive, whole-person care, and we’re investing to accelerate that shift.

As you’d expect from the size of their growth, our mobile applications improved immensely. The apps are rapidly evolving into indispensable tools for patients managing their health journeys. We massively improved the “currently taking” feature so users can better track why they’re taking certain supplements, pause them, and more. This ties directly into “Profiles,” which gives users a single place to manage their treatment plans, the supplements they are currently taking, and their health interests. All of this sets the stage for even bigger features in 2026.

Not to be outdone, our platform and systems teams made some big changes of their own. 2025 was the year we retired Resque as our job-queueing system in favor of Solid Queue. Not content with a straight lift-and-shift, they rethought how we approach SLAs for these jobs, ensuring they run when they should. So far we have processed over 70,000,000 background jobs on the new system. Our own Andrew Markle gave an excellent talk about the project at RailsConf 2025.  The team also introduced maintenance tasks to our application, giving developers improved visibility into when these tasks run and their results. Our systems team, who previously worked in Go, also found time to (nearly) complete the migration of their applications back into the monolith. This has been a long time coming and represents a significant reduction in technical debt and operational friction. And despite some massive provider outages, we still maintained 99.995% uptime—our resilience and backup plans ensured minimal downtime for users during those events.

Lastly, I mentioned earlier we dedicated a team to improving how AI interacts with our codebases. And they more than delivered.  Over the last few months they developed a tool called “Nitro”, a really amazing AI agent that can do everything from mundane code reviews to generating entire pull requests from a ticket in Linear. Not only can it write the code to solve the bug, but it can stand up a whole environment and perform functional testing to make sure it's actually correct.  Launched in October it has already generated about 5% of our code output, solved numerous papercut issues, and enabled our product managers and designers to start shipping code.  We will have more to say about this tool shortly, so I suggest subscribing to the blog for updates.  We think it truly is state of the art and a great example of how we can make AI work for us, without compromising on quality.


…And the Not-So-Milestone Releases

One of my favorite things about working here is how deeply our developers care about the small stuff. One of our core principles in the developer handbook is “Leave it cleaner than you found it.” Every year our developers make those small changes that reduce friction and make everyone’s lives easier—the ones that make you wonder how you lived without them for so long. Some examples from this year:

  • New local developer flags to automate migrations on boot and enable factories in the Rails console
  • CI improvements to prevent accidental merges of stale branches
  • Better flaky-test logging along with metrics to measure the impact of fixing them
  • A new Figma plugin to export SVGs to code
  • Swapping over to Rspack (okay, that was a big one)

These sorts of things make the day-to-day developer experience so much better, and I’m proud we empower people to make them.

Culture

We (finally) joined the Rails Foundation! Rails is core to our work, and being able to contribute directly to its long-term health is both a dream come true and absolutely the right thing to do. 2025 marked a real turning point in our ability to contribute back to the technologies that power our platform. 

Fullscript continues to be dedicated to our local developer culture. We continue to sponsor and host events like Ottawa Ruby, ForwardJS and hosted our first Toronto Ruby. These sorts of meetups deeply influenced our earliest developers, and we’re excited to help the next generation learn, grow, and make new connections. We also were involved in several local hackathons this year - CU Hacking and JPEG. We are also inaugural sponsors of the new Women in Tech and Trades program at Algonquin College, an amazing program that “aims to provide women students in tech and trades with opportunities for mentorship, networking and professional growth”.

We also started a new tradition this year at Fullscript. Pat Vice (the smarter, more handsome VP of Engineering) and I were on a long car ride wondering who had contributed the most changes to the Fullscript codebases. It turned out a select few of our long-tenured engineers had contributed over 1,000 merge requests!  Thus, the 1000 MR Club was born. Each member receives a custom Fullscript keyboard, awarded during an engineering all-hands near the start of the year. We continue to track and add to this club—now up to 30 members. A few are even approaching 1,500! Obviously, quantity isn’t everything, but the impact these people have had on our culture and codebase cannot be overstated. Congratulations again to all the recipients!


Conclusion

I’ve left so much out of this post. At this point it’s literally impossible to tell the Fullscript Engineering story with anything resembling brevity. I’m sorry to anyone whose project didn’t make the list—we just produced so much great work. I’ve already set a reminder to do a mid-year wrap-up in 2026 because I’m certain we’ll have even more to share.

These posts probably read like marketing, and I suppose they are. But I mean every word. I am lucky to work alongside some of the most amazing developers I’ve ever met. I get to learn something new from them every day. And I get to be part of a culture that rewards effort, curiosity, and diversity.

If you’ve made it this far, thanks for taking the time. If you have any questions or feedback, feel free to reach out—I’m always happy to connect.

Share this post