Kinaxis https://www.kinaxis.com/en en Kinaxis fuels Technicolor's supply chain digital transformation https://www.kinaxis.com/en/node/3143 <h1>Kinaxis fuels Technicolor&#039;s supply chain digital transformation</h1> <span><span lang="" about="/en/blog/author/dmcneiltaylor" typeof="schema:Person" property="schema:name" datatype="">dmcneiltaylor</span></span> <span>Wed, 02/10/2021 - 07:41</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Technicolor Connected Home digitally transformed its manual supply chain operations with the Kinaxis supply chain platform, resulting in improved forecasting ability.</p> </div> Wed, 10 Feb 2021 12:41:24 +0000 dmcneiltaylor 3143 at https://www.kinaxis.com Philanthropy in Ottawa: Kinaxis supports struggling music industry with funding for virtual concert series https://www.kinaxis.com/en/node/3089 <h1>Philanthropy in Ottawa: Kinaxis supports struggling music industry with funding for virtual concert series</h1> <span><span lang="" about="/en/blog/author/dmcneiltaylor" typeof="schema:Person" property="schema:name" datatype="">dmcneiltaylor</span></span> <span>Tue, 01/12/2021 - 09:47</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>“People matter here. Music matters here. We needed to demonstrate our commitment to the music industry as a whole including the people behind the scenes and the artists themselves.” – John Sicard, CEO, Kinaxis</p> </div> Tue, 12 Jan 2021 14:47:42 +0000 dmcneiltaylor 3089 at https://www.kinaxis.com Consumer Products Industry Webinar https://www.kinaxis.com/en/consumer-products-industry-webinar <h1>Consumer Products Industry Webinar</h1> <span><span lang="" about="/en/user/701" typeof="schema:Person" property="schema:name" datatype="">bweigand@kinaxis.com</span></span> <span>Tue, 06/11/2019 - 08:48</span> Tue, 11 Jun 2019 12:48:19 +0000 bweigand@kinaxis.com 720 at https://www.kinaxis.com Ferrari Group April 2019 Research Report https://www.kinaxis.com/en/ferrari-group-april-2019-research-report <h1>Ferrari Group April 2019 Research Report</h1> <span><span lang="" about="/en/user/701" typeof="schema:Person" property="schema:name" datatype="">bweigand@kinaxis.com</span></span> <span>Tue, 04/23/2019 - 08:42</span> Tue, 23 Apr 2019 12:42:28 +0000 bweigand@kinaxis.com 703 at https://www.kinaxis.com Hylogic https://www.kinaxis.com/en/partners/hylogic <h1>Hylogic</h1> <span><span lang="" about="/en/blog/author/hdiniz" typeof="schema:Person" property="schema:name" datatype="">hdiniz</span></span> <span>Tue, 05/10/2022 - 16:00</span> <div class="field field--name-field-logo field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2022-05/Hylogic_Partner_Display.png" width="375" height="92" alt="Hylogic Logo" loading="lazy" typeof="foaf:Image" class="img-responsive" /> </div> <div class="field field--name-field-paragraph field--type-entity-reference-revisions field--label-hidden field--items"> <div class="paragraph-field--leads_cta field--item"> <div class="paragraph paragraph--type--leads-cta paragraph--view-mode--default bg-white"> <div class="field field--name-field-switchback-tile field--type-entity-reference-revisions field--label-hidden field--items"> <div class="field--item"><div class="paragraph paragraph--type--child-switchback-image paragraph--view-mode--default parallax-bg-img" style="background-image: url(https://www.kinaxis.com/sites/default/files/styles/max_2600x2600/public/paragraphs/switchbacks/PartnerPage-ContactPartner_43.png?itok=sg9jM147)"></div> </div> <div class="bg-white even field--item"> <div class="paragraph paragraph--type--child-switchback-basic paragraph--view-mode--default"> <div class="field field--name-field-body field--type-text-long field--label-hidden field--item"><h2 class="section-title">Hylogic</h2> <p>Reach out to learn more, ask questions or request a meeting.</p> <p><a class="icon-caret" href="mailto: info@hylogic.com" target="_blank">GET IN TOUCH</a></p> </div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-partner-type field--type-entity-reference field--label-inline"> <div class="field--label">Partner Type</div> <div class="field--items"> <div class="field--item">System Integrator</div> </div> </div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Hylogic helps improve supply chain efficiency. With decades of experience in developing and implementing IT Supply Chain Management (SCM) solutions along with deeply understanding of supply chain complexity we help the world’s largest companies achieve business goals and build a competitive advantage.</p> <p>Our end-to-end advanced IT SCM solutions are focused in areas of Supply Chain Digital Twin, Real Time Supply Chain Visibility, Data Integration and Transformation, as well as operational Decisions Automation.</p> <p>Hylogic is a privately held company based in Poland and operates globally.</p> <p><a class="external" href="https://hylogic.com" target="_blank">www.hylogic.com</a></p> </div> <div class="field field--name-field-partner-region field--type-entity-reference field--label-inline"> <div class="field--label">Partner Region</div> <div class="field--items"> <div class="field--item">Europe</div> </div> </div> Tue, 10 May 2022 20:00:59 +0000 hdiniz 3537 at https://www.kinaxis.com Wahupa https://www.kinaxis.com/en/partners/wahupa <h1>Wahupa </h1> <span><span lang="" about="/en/blog/author/ghaywood" typeof="schema:Person" property="schema:name" datatype="">ghaywood</span></span> <span>Wed, 05/04/2022 - 19:12</span> <div class="field field--name-field-logo field--type-image field--label-hidden field--item"> <img src="/sites/default/files/2022-05/wahupa_display2_0.png" width="375" height="92" alt="Wahupa" loading="lazy" typeof="foaf:Image" class="img-responsive" /> </div> <div class="field field--name-field-paragraph field--type-entity-reference-revisions field--label-hidden field--items"> <div class="paragraph-field--leads_cta field--item"> <div class="paragraph paragraph--type--leads-cta paragraph--view-mode--default bg-white"> <div class="field field--name-field-switchback-tile field--type-entity-reference-revisions field--label-hidden field--items"> <div class="field--item"><div class="paragraph paragraph--type--child-switchback-image paragraph--view-mode--default parallax-bg-img" style="background-image: url(https://www.kinaxis.com/sites/default/files/styles/max_2600x2600/public/paragraphs/switchbacks/PartnerPage-ContactPartner_27.png?itok=-I7ILaA8)"></div> </div> <div class="bg-white even field--item"> <div class="paragraph paragraph--type--child-switchback-basic paragraph--view-mode--default"> <div class="field field--name-field-body field--type-text-long field--label-hidden field--item"><h2 class="section-title">Contact Wahupa</h2> <p>Reach out to learn more, ask questions or request a meeting.</p> <p><a class="icon-caret" href="mailto:info@wahupa.com" target="_blank">GET IN TOUCH</a></p> </div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-partner-type field--type-entity-reference field--label-inline"> <div class="field--label">Partner Type</div> <div class="field--items"> <div class="field--item">Solution Extension</div> </div> </div> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Wahupa is on the leading edge of modeling uncertainty that is present in every forecast, plan, and schedule. Where most existing planning offerings on the market fight uncertainty, we embrace it! The result is a dramatic increase in stability, measured as reductions in costs from waste, expiry and expediting, increases in sales and margins, and getting out of fire-fighting mode.</p> <p>Wahupa specializes in probabilistic solutions, algorithms, and metrics for supply chains. Our probabilistic Multi-Echelon Inventory Optimization (MEIO) engine is the first solution natively embedded inside Kinaxis RapidResponse.</p> <p><a class="external" href="http://www.wahupa.com/" rel="nofollow noreferrer noopener" target="_blank">www.wahupa.com/</a></p> </div> <div class="field field--name-field-partner-region field--type-entity-reference field--label-inline"> <div class="field--label">Partner Region</div> <div class="field--items"> <div class="field--item">North America</div> <div class="field--item">Europe</div> <div class="field--item">Asia Pacific</div> </div> </div> Wed, 04 May 2022 23:12:13 +0000 ghaywood 3531 at https://www.kinaxis.com Powering supply chains with intelligent agility https://www.kinaxis.com/en/blog/powering-supply-chains-intelligent-agility <h1>Powering supply chains with intelligent agility</h1> <span><a title="View user profile." href="/en/blog/author/sharkins" lang="" about="/en/blog/author/sharkins" typeof="schema:Person" property="schema:name" datatype="">sharkins</a></span> <span>Wed, 05/04/2022 - 08:43</span> <span class="a2a_kit a2a_kit_size_32 addtoany_list" data-a2a-url="https://www.kinaxis.com/en/blog/powering-supply-chains-intelligent-agility" data-a2a-title="Powering supply chains with intelligent agility"><a class="a2a_button_facebook"><img src="/themes/custom/kinaxis/images/social-icons/facebook.svg" alt="addtoany facebook"/></a><a class="a2a_button_twitter"><img src="/themes/custom/kinaxis/images/social-icons/twitter.svg" alt="addtoany twitter"/></a><a class="a2a_button_linkedin"><img src="/themes/custom/kinaxis/images/social-icons/linkedin.svg" alt="addtoany linkedin"/></a></span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Throughout my career as a supply chain practitioner and leader, there has constantly been a battle between the scientifically perfect model and a business-engineered model that guided the company to decisions it was comfortable making. Perfect supply chain decisions exist primarily in academic literature and textbooks while real-world decisions are impacted by many external factors, such as production outages, order cancellations, labor shortages, quality control, border delays and more. Compounding these concerns are regional and global disruptions that are only becoming more frequent, to the degree that they have made supply chains a conversation starter for the general public.</p> <p>Supply chain concerns are now CEO and board-level topics due to unprecedented levels of demand and supply volatility, while at the same time, customer expectations have remained, so meeting those expectations is harder than ever. Supply chain planning needs to take advantage of new analytical techniques while catering to a much broader spectrum of concerns than before. I traveled the world early in my career to introduce my company’s suppliers to better inventory modeling, but today inventory optimization is no longer about which demand distribution to assume but rather viewed in the context of growth strategies, cost pressures and trade policy. We are due for a paradigm shift to incorporate the increased complexity and volatility of planning.</p> <p>Analytical supply chain models incorporating optimization and artificial intelligence and machine learning (AI/ML) have traditionally been developed for specific functional problems in planning silos, in spite of cases where optimizing one silo has negative impacts everywhere else. Even an S&amp;OP process only deals with aggregated concerns and cannot address the details required in various parts of the chain to recover from disruptions. Everything needs to be planned in a way that considers the overall supply chain concurrently, not as disconnected pieces. While the advances in optimization and AI/ML can make our models more intelligent, they also must be delivered at the speed of business and with the appropriate business context to make them relevant. Meeting this challenge requires new data sources but also fusing together the strengths of different methods.</p> <p>The combination of optimization, AI/ML and custom heuristics must be about enabling real-time, holistic decision support in a way that generates understanding and trust for the overall impact to the supply chain. It cannot be focused on the output of a single problem in isolation. To tackle business problems, the fusion must incorporate rules tailored to the reality of the business and have an ability to simulate multiple potential futures. As problems get more complex, we need methods that can address the scale, and smartly and rapidly reduce the solution space. The fusion needs to provide explainability for comprehending output and empower planners with control over the final results. As one of our customers has said quite unequivocally, “Machine learning will not work without interpretability.” Clarity of action for decision-makers comes from a confidence in the model that is uniquely focused on their business. Supply chain analytics need to be the enablers of confident decisions.</p> <p>Analytical techniques are now being fused in new ways that harness the benefits of each to create a new generation of advanced decision support. Certain key trade-off decisions are best solved with optimization and others with AI/ML, while custom heuristics provide the framework surrounding these inputs and enable real-time adaptation. Fine-tuning for critical needs by planners must be part of the overall model to avoid them blindly overwriting the final results with negative impacts they don’t understand. Visualizing and interacting with the results are key for decision-makers to champion the output provided.</p> <p>A new generation of supply chain planning is coming. Supply chain disruptions are not slowing down, different analytical techniques are being brought together in new ways that are specific to each business, and the role of human planners to prepare for all potential futures will only grow. It is a planning future I look forward to.<br />  <br /> <em>Note: I give special thanks to Dwayne Smith, Jessie Lamontagne, and Carsten Jordan for some of the thoughts behind this post and the related talk I gave at the recent INFORMS Analytics Conference. </em></p> </div> <section class="comments" id="comments"> <h3 class="new-comment-form-title">Leave a Reply</h3> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=3528&amp;2=field_comments&amp;3=comment" token="jFXFX4BdtaiOj41H5u2BSVXsnbnDhepB18q5a1buo_0"></drupal-render-placeholder> </section> Wed, 04 May 2022 12:43:59 +0000 sharkins 3528 at https://www.kinaxis.com https://www.kinaxis.com/en/blog/powering-supply-chains-intelligent-agility#comments Life as a co-op/intern student at Kinaxis https://www.kinaxis.com/en/blog/life-co-opintern-student-kinaxis <h1>Life as a co-op/intern student at Kinaxis</h1> <span><a title="View user profile." href="/en/blog/author/larnseth" lang="" about="/en/blog/author/larnseth" typeof="schema:Person" property="schema:name" datatype="">larnseth</a></span> <span>Tue, 05/03/2022 - 16:27</span> <span class="a2a_kit a2a_kit_size_32 addtoany_list" data-a2a-url="https://www.kinaxis.com/en/blog/life-co-opintern-student-kinaxis" data-a2a-title="Life as a co-op/intern student at Kinaxis"><a class="a2a_button_facebook"><img src="/themes/custom/kinaxis/images/social-icons/facebook.svg" alt="addtoany facebook"/></a><a class="a2a_button_twitter"><img src="/themes/custom/kinaxis/images/social-icons/twitter.svg" alt="addtoany twitter"/></a><a class="a2a_button_linkedin"><img src="/themes/custom/kinaxis/images/social-icons/linkedin.svg" alt="addtoany linkedin"/></a></span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><figure role="group" class="align-right"> <img alt="Three Kinaxis hockey team members in hockey uniforms standing left to right on the ice: Richard Fan, Jody Hisko and Michael Whitford." data-entity-type="file" data-entity-uuid="d9e80af5-b283-49c5-b94b-a0a49c4c3829" data-image-spacing="" height="221" src="/sites/default/files/2022-05/kinaxis_hockey-resized.jpg" width="209" /> <figcaption>Several Kinaxis employees and Co-Ops/Interns play hockey on the Kodiax, Kinaxis' own team. Left to right, here's Richard Fan, Jody Hisko (Campus Talent Acquisition Associate for Kinaxis) and Michael Whitford on the ice!</figcaption> </figure> <p>What’s it like to work for an innovative, employee-focused, dynamic supply chain software company?</p> <p>Kinaxis employs a variety of Co-Op/Intern students and each student has their own situations and experiences. </p> <p>I spoke with a cross-section of Kinaxis Co-Op/Interns to share some stories from their placements. Read on to find out what our current Co-Op/Intern students have to say!</p> <h3>Richard Fan</h3> <p>Richard is currently working in his second semester in the Upgrades &amp; Migration department.</p> <p><strong>How would you describe the culture at Kinaxis?</strong> There’s a strong sense of community at Kinaxis. Everyone is looking out for each other and it makes you feel like you’re never alone.</p> <p><strong>What have you learned in your time at Kinaxis?</strong> The main thing I have learned would be working with and coordinating with the team. Although there are personal skills I may have developed, I definitely value the connections I have made here at Kinaxis the most.</p> <p><strong>What are some of the highlights of your experience at Kinaxis?</strong> Some of the highlights during my time at Kinaxis would definitely be playing in the weekly hockey game and taking part in the yearly Hackathon. Participating in events like these allows you to meet a lot of different individuals in the organization.</p> <p><strong>What are some of the projects that you have worked on during your placement?</strong> I have been working with customers to upgrade them to the Global Rollout Versions of RapidResponse as well as TestRun, where we compare customer resources before and after Service Updates. Both of these projects are exciting as we are constantly working on improving the process and making new discoveries.</p> <p><strong>What advice would you give to an incoming Co-Op/Intern?</strong> Onboarding might be a lot to take in at first, but you’ll find your way in time so don’t stress about it too much. Never be afraid to ask for help, those on your team or in the organization will gladly lend a hand.</p> <h3><br /> Michael Whitford</h3> <p>Michael is currently working his first of two semesters in the Strategic Innovation department.</p> <p><strong>How would you describe the culture at Kinaxis?</strong> The culture at Kinaxis truly follows one of its core values: People Matter Here. Everyone is more than happy to lend a hand, and there is an excellent work/life balance which is something that helps promote pushing the envelope and innovating when you go to work every morning.</p> <p><strong>What have you learned in your time at Kinaxis?</strong> I have gained such a large variety of skills in my time so far at Kinaxis. Not only have I developed my technical skills as a programmer, working in new languages that I'd never seen before such as C# and XML, but I've also learned so much about the supply chain, and how to take business problems and generate a solution.</p> <p><strong>What are some of the highlights of your experience at Kinaxis?</strong> Beyond the technical aspect of work, one of my highlights has been getting to know my team members around the globe and learning about their different walks of life. My team has members in Mexico, in the United States, and in Canada, including another student who recently moved here from India. It is fascinating to learn a bit about everyone's culture, which also allows the team to have a wide variety of perspectives when tackling issues.</p> <p><strong>What are some of the projects that you have worked on during your placement?</strong> The main project that I've been working on during my placement as a developer for the Innovation Incubator team has been a new tool that is in the works to map dependencies in Rapid Response. There is still a lot of work that must be done manually in Rapid Response, and this will allow us to automate some of those processes to increase efficiency.</p> <p><strong>What advice would you give to an incoming Co-Op/Intern?</strong> My advice for incoming Co-Ops/Interns would be to get to know as many people as you can at Kinaxis, and to just be yourself. There is a reason why you got hired, and it's good to get different perspectives in the company. Everyone's opinion is valued, including yours.</p> <h3><br /> Ready to apply? Here’s how!</h3> <p>If Richard and Michael’s insights and advice sound like the kind of professional experience you’re looking for, be sure to check out our <a href="https://www.kinaxis.com/en/open-positions">current Co-Op/Intern opportunities</a> right now. Postings for our Fall Semester (September 2022 start) are now available on the Kinaxis Careers page. Check back often, as more roles will be posted in the coming weeks!</p> <p>All of Kinaxis’ Co-Op/Intern role are posted on our Kinaxis Careers page: <a href="https://www.kinaxis.com/en/open-positions">https://www.kinaxis.com/en/open-positions</a></p> <p>To learn more about the Kinaxis Co-Op/Intern program, please contact me at: <a href="jhisko@kinaxis.com">jhisko@kinaxis.com</a> or connect with me on <a href="https://www.linkedin.com/in/jody-hisko-3a66b429/">LinkedIn</a>.</p> <p>Next month, we’ll share more experiences of Kinaxis Co-Ops/Interns, so please stay tuned! <br />  </p> </div> <section class="comments" id="comments"> <h3 class="new-comment-form-title">Leave a Reply</h3> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=3529&amp;2=field_comments&amp;3=comment" token="v-cZSxQEHhqYrmiEXxK_GrNUyRcn-HgkdnhrZ8-XXAE"></drupal-render-placeholder> </section> Tue, 03 May 2022 20:27:46 +0000 larnseth 3529 at https://www.kinaxis.com Top 5 reasons to tune into Kinexions ’22 – the supply chain innovators conference https://www.kinaxis.com/en/blog/top-5-reasons-tune-kinexions-22-supply-chain-innovators-conference <h1>Top 5 reasons to tune into Kinexions ’22 – the supply chain innovators conference</h1> <span><a title="View user profile." href="/en/blog/author/tchiykowski" lang="" about="/en/blog/author/tchiykowski" typeof="schema:Person" property="schema:name" datatype="">tchiykowski</a></span> <span>Wed, 04/27/2022 - 10:40</span> <span class="a2a_kit a2a_kit_size_32 addtoany_list" data-a2a-url="https://www.kinaxis.com/en/blog/top-5-reasons-tune-kinexions-22-supply-chain-innovators-conference" data-a2a-title="Top 5 reasons to tune into Kinexions ’22 – the supply chain innovators conference"><a class="a2a_button_facebook"><img src="/themes/custom/kinaxis/images/social-icons/facebook.svg" alt="addtoany facebook"/></a><a class="a2a_button_twitter"><img src="/themes/custom/kinaxis/images/social-icons/twitter.svg" alt="addtoany twitter"/></a><a class="a2a_button_linkedin"><img src="/themes/custom/kinaxis/images/social-icons/linkedin.svg" alt="addtoany linkedin"/></a></span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Excitement is growing for Kinexions ’22, which is taking place May 10-11 in beautiful San Diego. The bad news? The in-person experience is sold out. The good news? You can still attend virtually (for free) from the comfort of your own space – no travel required! Over the years, Kinexions has been highly rated as a must-attend event for supply chain leaders and planners. And here are a few reasons why.</p> <h3>1.    Be the first to hear about the latest in supply chain product innovations </h3> <p>Kinexions ’22 is the place for you to get an insider’s look at our biggest product innovations of the year. We’re about to blow your socks off with a major shakeup of how advanced analytics and AI are used in supply chain planning. All attendees, no matter where you’re sitting, will get a sneak peek into our upcoming game-changing innovations. Sorry, you’ll have wait until May 10 to get the scoop, so register now so you don’t miss out! </p> <h3>2.    Access content that will set you on a path to supply chain transformation</h3> <p>Global pandemics, extreme weather events, political unrest. The next big – or small – disruption could be just around the corner. Excel spreadsheets, siloed planning and yesterday’s processes can’t deliver the agility companies need to combat today’s ongoing disruption. Join us to hear how companies are switching up their processes, technology and technique to embark on a journey of digital transformation.</p> <h3>3.    Be inspired!</h3> <p>From compelling keynotes to real-world customer stories and product innovation announcements, Kinexions ’22 promises to spark inspiration in all of us. Leading companies, including Amgen, Honeywell, Qualcomm and PQ Corporation, will share insights about their transformation journeys. We’re delighted to welcome New York Times bestselling author Gretchen Rubin as our keynote speaker. Gretchen will share simple changes and actions that can help people to turn the dial up on their overall happiness.</p> <h3>4.    Connect with the experts</h3> <p>It’s not every day you can get access to professionals who can help you gain new prospectives and solve your most complex supply chain challenges. But you can at Kinexions ‘22. Take advantage of our Meet the Expert virtual kiosks, where the pros will cover a range of topics, including UX, product planning solutions and platform capabilities, business development, professional services, and global customer care. </p> <h3>5.    Bond with a vibrant community</h3> <p>Gain insights from a strong community of like-minded people who are coming together to share experiences, solutions to problems and ways to transform supply chain planning. Kinexions is a great forum for connecting with experts, thought leaders and industry peers who can help take your supply chain planning to the next level. And who doesn’t want that?</p> <p>We hope to “see” you there!</p> <h3>How do I register for Kinexions `22 Virtual?</h3> <p>1.    Click <a href="https://www.kinexions.com/A2yzNa?RefId=blog">here</a> to register. <br /> 2.    Under “Choose your Kinexions ’22 experience”, select Virtual. <br /> 3.    Complete the form, and then join us May 10 starting at 9:00 am Pacific Time for day 1. </p> <ol> </ol> <p style="margin-bottom:11px"> </p> </div> <section class="comments" id="comments"> <h3 class="new-comment-form-title">Leave a Reply</h3> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=3526&amp;2=field_comments&amp;3=comment" token="p2plG-OCz_yiIaBkPne1D7Nmt4CnkAzhDhOUloH6IRI"></drupal-render-placeholder> </section> Wed, 27 Apr 2022 14:40:10 +0000 tchiykowski 3526 at https://www.kinaxis.com https://www.kinaxis.com/en/blog/top-5-reasons-tune-kinexions-22-supply-chain-innovators-conference#comments Why we replaced redux with our own state management library https://www.kinaxis.com/en/blog/why-we-replaced-redux-our-own-state-management-library <h1>Why we replaced redux with our own state management library</h1> <span><a title="View user profile." href="/en/blog/author/larnseth" lang="" about="/en/blog/author/larnseth" typeof="schema:Person" property="schema:name" datatype="">larnseth</a></span> <span>Thu, 04/21/2022 - 10:57</span> <span class="a2a_kit a2a_kit_size_32 addtoany_list" data-a2a-url="https://www.kinaxis.com/en/blog/why-we-replaced-redux-our-own-state-management-library" data-a2a-title="Why we replaced redux with our own state management library"><a class="a2a_button_facebook"><img src="/themes/custom/kinaxis/images/social-icons/facebook.svg" alt="addtoany facebook"/></a><a class="a2a_button_twitter"><img src="/themes/custom/kinaxis/images/social-icons/twitter.svg" alt="addtoany twitter"/></a><a class="a2a_button_linkedin"><img src="/themes/custom/kinaxis/images/social-icons/linkedin.svg" alt="addtoany linkedin"/></a></span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p><em>Written by: Angelo Martins</em></p> <p>State management for modern web applications is hard. Redux is one of the best libraries for the job, but it's not perfect.<br /> In this post, I explain the problems we had with Redux and why we decided to build our own state management library instead of using other popular libraries like MobX, Recoil or RXJs.</p> <h3>Problem #1: Performance</h3> <p>Redux has a central store and all the state information for your app should be in it.</p> <p>A central store has benefits, for instance, it is easy to see all of the current state, since everything is in the same place. That is why redux is so popular.</p> <p>But if you have a large application that is growing over time, the number of Redux reducers, selectors and effects will grow dramatically.</p> <p>Each action will go through all of the reducers and effects and while they are intended to be fast and skip actions they don't care about, it still requires some computation. The more you have, the slower it gets.</p> <p>We can also have hundreds of “selectors” at the same time in the application. Every update to application state will trigger the chain of selectors to recalculate their values and force the react components to re-render show the new data. It can make your application perform poorly.</p> <p>The selectors can be optimized to cache the latest value, but that can be hard to implement and easy to miss.</p> <p>There are two other performance problems that can be difficult to solve with redux itself: large data and frequent updates.</p> <p>You can have so much data that it is not viable to store in the state. In our case, it started with tables that have millions of rows.</p> <p>You can have data that has frequent updates in a short period of time, combined with tons of actions that update a small part of the state, it doesn't make sense to put the data into a large central store like redux.</p> <p>To fix these problems we moved those pieces out of redux into classes containing the ability to subscribe to changes.</p> <h3>Problem # 2: Verbose</h3> <p>With redux there is a lot of boilerplate code to do simple tasks. We had a lot of files with actions, reducers, effects and selectors. The business logic is spread around multiple files to get it into Redux.</p> <h3>Problem # 3: Async code</h3> <p>There is no asynchronous code with redux. You need to create effects to dispatch actions when an “async” operation starts and ends.</p> <p>If you need to save some data on the server, you need one action to trigger the “save” effect, another to dispatch an action to update the state to “saving”, then you dispatch a result action.</p> <p>If you have some other code that wants to call a save function and wait for the operation to complete, with Redux alone, this is not possible. The code has to subscribe to actions that are dispatched as the async operation is processed.</p> <h3>The biggest challenge</h3> <p>How do we combine data in Redux state with data that is outside of redux state?</p> <p>As an example, how do we handle an insert/delete button that needs to be visible/enabled according to the redux state, but also watch for the selected cell and row data (that we have kept out of Redux state due to the size) to ensure they are editable?</p> <p>In order to accomplish this, we had to look for other options, we need a way to watch and combine multiple subscriptions. 🧐</p> <h3>Why not other libraries?</h3> <p><strong>Recoil</strong></p> <p>Recoil was the best option, in terms of 3rd party libraries, and we were inspired by it.  Facebook created Recoil to solve the problems we have with Redux.</p> <p>However, Recoil didn't work for us for several reasons:</p> <ul> <li>It is tied to React, you can only use Recoil inside React applications. We wanted to maintain flexibility in terms of which front-end framework we used to build the application.</li> <li>It needs <span style="font-family:courier, courier new, serif;">&lt;RecoilRoot&gt;</span> at the top of the react tree, but we wanted something that did not have this requirement so that a developer could create components and place them anywhere, in any app.</li> <li>We thought the selector "get" function style was less intuitive (We prefer the reselect style from Redux).</li> <li>You need a unique string key for each piece of state (atom), and you need to be careful to not duplicate keys.</li> </ul> <p><strong>MobX</strong></p> <p>MobX also looked like a good option, however:</p> <ul> <li>MobX uses a proxy to wrap objects and detected mutations. When you look to a component using MobX, you it is difficult to determine what objects are being watched and what triggered a change.</li> <li>MobX forces you to use an Objected Oriented Programming style. Any property in an object can be mutated. It is not easy to add custom equality functions to check if a state has changed (you can have new arrays and objects instances that are different appear to be the same).</li> </ul> <p>At Kinaxis, we do a mix of functional programming with OOP, from OOP we use some classes without inheritance, because sometimes a class is faster and cleaner. We focus on functional programming aspects like immutability, composition, pure functions.  Focusing on OOP was not an option. </p> <p><strong>RxJs</strong></p> <p>We found RxJs complex and heavy. We had used RxJs before and did not have a great experience. The code can get very complicated and hard to follow and debug. For junior developers it can be very intimidating.  Some of the function chains required to observe the objects were not intuitive.</p> <h3>The solution</h3> <p><img alt="roll of duct tape" data-entity-type="file" data-entity-uuid="918e45c6-43fc-4b2a-8724-2e0600e4e311" data-image-spacing="" height="163" src="/sites/default/files/wysiwyg/GettyImages-resized.jpg" width="244" loading="lazy" class="disable-spacing-top disable-spacing-right disable-spacing-bottom disable-spacing-left" /></p> <p>No, the solution is not duct tape! We need a proper fix; a library that can solve all our issues.</p> <p>It had these requirements:</p> <ul> <li>Fast</li> <li>Scalable</li> <li>Framework agnostic: It should be able to integrate with any Javascript based application framework (React, Angular, Vue - server side or client side).</li> <li>Decentralized state: One expensive part of the state shouldn't interfere the performance of the whole app.</li> <li>It should be able to create selectors that can combine different pieces of the state and other selectors.</li> <li>Subscriptions should be handled by the framework, to automatic subscribe and unsubscribe when needed.</li> <li>It needs to be easy to use, understand and debug.</li> <li>The developer should have full control of what is going on.</li> <li>It should support Asynchronous operations.</li> <li>It should batch updates, to update the UI once on the next js cycle.</li> </ul> <p>It was hard to meet all those requirements, but we did it! 🎉</p> <p>On the initial implementations I couldn't believe how simple it was!</p> <p><strong>WARNING</strong></p> <p>Our new state management library is not open sourced yet. I hope it will be open sourced in 2022 now that it is becoming mature, battle tested and proven to be scalable, fast and easy to use.</p> <p>Here is an overall idea of how it works:</p> <p><strong>Api</strong></p> <p>The library has 2 packages:</p> <ul> <li>A core package with pure typescript code that has two main functions: <span style="font-family:courier, courier new, serif;">createValue</span> and <span style="font-family:courier, courier new, serif;">createValueSelector.</span></li> <li>A react package that provides the <span style="font-family:courier, courier new, serif;">useValue</span> and <span style="font-family:courier, courier new, serif;">useAsyncValue</span> hooks.</li> </ul> <p><strong>createValue</strong></p> <p>The <span style="font-family:courier, courier new, serif;">createValue</span> function takes the following arguments:</p> <ul> <li><span style="font-family:courier, courier new, serif;">initialValue</span> - value to be wrapped.</li> <li><span style="font-family:courier, courier new, serif;">equalityFn</span> - (optional) function to check if the value has changed to trigger the subscribers.</li> </ul> <p>And it returns an object with:</p> <ul> <li><span style="font-family:courier, courier new, serif;">getValue()</span> – function to get the current value;</li> <li><span style="font-family:courier, courier new, serif;">setValue(newValue)</span> – sets a new value.</li> <li><span style="font-family:courier, courier new, serif;">subscribe(listener)</span>&gt; – add a callback to be called when the value changes and it returns an <span style="font-family:courier, courier new, serif;">unsubscribe</span> function.</li> </ul> <p><strong>createValueSelector</strong></p> <p>The <span style="font-family:courier, courier new, serif;">createValueSelector</span> function takes the following arguments:</p> <ul> <li><span style="font-family:courier, courier new, serif;">values</span> – an array of values to watch for changes.</li> <li><span style="font-family:courier, courier new, serif;">combiner</span> – a function that takes all the current values and returns a new value, it was inspired on the reselect lib for redux.</li> <li><span style="font-family:courier, courier new, serif;">equalityFn</span> – (optional) function to check if the value has changed to trigger the subscribers.</li> </ul> <p>And it returns an object with:</p> <ul> <li><span style="font-family:courier, courier new, serif;">getValue()</span> – function to get the current value;</li> <li><span style="font-family:courier, courier new, serif;">subscribe(listener)</span> – add a callback to be called when the value changes and it returns an <span style="font-family:courier, courier new, serif;">unsubscribe</span> function.</li> </ul> <p><strong>NOTE</strong><br /> <strong>createValueSelector</strong> has no <strong>setValue</strong> function, the internal value is private and always derived from the <strong>combiner</strong> function passed to it.</p> <p><strong>useValue</strong></p> <p>The <span style="font-family:courier, courier new, serif;">useValue</span> hook can be used inside react components to automatically subscribe to values and unsubscribe when the component is removed from the page.</p> <p><strong>useAsyncValue</strong></p> <p>Like the useValue hook, <span style="font-family:courier, courier new, serif;">useAsyncValue</span> hook can be used inside react components to automatically subscribe to “Promise” values and unsubscribe when the component is removed from the page.  The hook exposes the state of a promise as well as the result or error derived from the value when it is resolved.</p> <p><strong>TIP</strong></p> <p>That is not all! This is just a quick overview of our new state management library. It has many other functionalities and tools for debugging memory leaks, detect unnecessary update and hints on how to resolve them. There will be more exciting developments to come as the library evolves.</p> <h3>Final thoughts</h3> <p>Redux is good, but there is no one-size-fits-all library out there. Evaluate the options and find out what works best for you and your team.</p> <p>I hope you understand why we had to move away from redux, and why we decided to build our own state management library.</p> <p> </p> <p><em><strong>AUTHOR NOTE:</strong></em><br /> Angelo Martins is a senior software developer in Ottawa, Ontario and a former principal software developer at Kinaxis. <br />  </p> </div> <section class="comments" id="comments"> <h3 class="new-comment-form-title">Leave a Reply</h3> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=3523&amp;2=field_comments&amp;3=comment" token="sPB4KPIcPpaOuY3uP0HWVRqhj4KxBK-dHAGsRm-SdXI"></drupal-render-placeholder> </section> Thu, 21 Apr 2022 14:57:20 +0000 larnseth 3523 at https://www.kinaxis.com https://www.kinaxis.com/en/blog/why-we-replaced-redux-our-own-state-management-library#comments