Skip to content

Commit 790358a

Browse files
docs(nx-dev): add november 2025 webinar (#33403)
Co-authored-by: nx-cloud[bot] <71083854+nx-cloud[bot]@users.noreply.github.com> Co-authored-by: philipjfulcher <[email protected]>
1 parent e9146c7 commit 790358a

File tree

5 files changed

+124
-106
lines changed

5 files changed

+124
-106
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: 'The Compounding Effect: How Nx Features Multiply Performance Gains'
3+
description: "Remote caching delivers such dramatic improvements that many teams stop there, thinking they've maximized their investment. But the real bottleneck isn't just slow task execution—it's the time spent babysitting PRs through flaky test failures and manual reruns. Cache speeds up your tasks, but it can't eliminate the interruptions that keep developers waiting for green builds."
4+
date: 2025-11-19
5+
slug: 'the-compounding-effect-how-nx-features-multiply-performance-gains'
6+
authors: ['Jeff Cross', 'Madeline Hennessy']
7+
tags: [webinar]
8+
cover_image: /blog/images/2025-11-19/Nov-2025-Webinar-Card.avif
9+
time: 12pm ET/5pm UTC
10+
status: Upcoming
11+
registrationUrl: https://go.nx.dev/nov2025-webinar
12+
---
13+
14+
**Nov 19, 2025 - 12pm ET/5pm UTC**
15+
16+
Presented by Jeff Cross and Madeline Hennessy
17+
18+
Here's the reality: if caching is all you're using, you've only captured 30% of the performance gains the Nx platform can deliver.
19+
20+
Remote caching delivers such dramatic improvements that many teams stop there, thinking they've maximized their investment. But the real bottleneck isn't just slow task execution—it's the time spent babysitting PRs through flaky test failures and manual reruns. Cache speeds up your tasks, but it can't eliminate the interruptions that keep developers waiting for green builds.
21+
22+
Join us on Nov. 19th to learn how to strategically leverage the capabilities you already have access to—and see exactly how much time your team is leaving on the table.
23+
24+
{% call-to-action title="Register today!" url="https://go.nx.dev/nov2025-webinar" description="Save your spot" /%}
21.5 KB
Binary file not shown.
603 KB
Loading
Lines changed: 79 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,88 @@
11
'use client';
22

3-
import { ReactElement } from 'react';
4-
5-
// import { MouseEvent, ReactElement, useEffect, useState } from 'react';
6-
// import { motion } from 'framer-motion';
7-
// import {
8-
// MegaphoneIcon,
9-
// VideoCameraIcon,
10-
// XMarkIcon,
11-
// } from '@heroicons/react/24/outline';
3+
import { MouseEvent, ReactElement, useEffect, useState } from 'react';
4+
import { motion } from 'framer-motion';
5+
import {
6+
MegaphoneIcon,
7+
VideoCameraIcon,
8+
XMarkIcon,
9+
} from '@heroicons/react/24/outline';
1210

1311
export function WebinarNotifier(): ReactElement | null {
14-
return null;
15-
16-
// const [isMounted, setIsMounted] = useState(false);
17-
// const [isVisible, setIsVisible] = useState<boolean>(true);
18-
// const localStorageKey = 'webinar-october-27-2025--notifier-closed';
12+
const [isMounted, setIsMounted] = useState(false);
13+
const [isVisible, setIsVisible] = useState<boolean>(true);
14+
const localStorageKey = 'webinar-november-19-2025--notifier-closed';
1915

20-
// useEffect(() => {
21-
// setIsMounted(true);
22-
// const isClosedSession = localStorage.getItem(localStorageKey);
23-
// if (isClosedSession === 'true') {
24-
// setIsVisible(false);
25-
// }
26-
// }, []);
16+
useEffect(() => {
17+
setIsMounted(true);
18+
const isClosedSession = localStorage.getItem(localStorageKey);
19+
if (isClosedSession === 'true') {
20+
setIsVisible(false);
21+
}
22+
}, []);
2723

28-
// const closeNotifier = (e: MouseEvent) => {
29-
// e.stopPropagation();
30-
// setIsVisible(false);
31-
// localStorage.setItem(localStorageKey, 'true');
32-
// };
24+
const closeNotifier = (e: MouseEvent) => {
25+
e.stopPropagation();
26+
setIsVisible(false);
27+
localStorage.setItem(localStorageKey, 'true');
28+
};
3329

34-
// if (!isMounted || !isVisible) return null;
30+
if (!isMounted || !isVisible) return null;
3531

36-
// return (
37-
// <motion.div
38-
// layout
39-
// initial={{ y: '120%' }}
40-
// animate={{ y: 0 }}
41-
// exit={{ y: '120%' }}
42-
// transition={{
43-
// type: 'spring',
44-
// stiffness: 300,
45-
// damping: 30,
46-
// mass: 1,
47-
// }}
48-
// className="fixed bottom-0 left-0 right-0 z-30 w-full overflow-hidden bg-slate-950 text-white shadow-lg md:bottom-4 md:left-auto md:right-4 md:w-[512px] md:rounded-lg"
49-
// style={{ originY: 1 }}
50-
// >
51-
// <div className="relative p-4">
52-
// <button
53-
// onClick={closeNotifier}
54-
// className="absolute right-2 top-2 flex h-9 w-9 cursor-pointer items-center justify-center !rounded-full bg-transparent p-1 hover:bg-slate-800 focus:outline-none focus:ring-2 focus:ring-white"
55-
// >
56-
// <XMarkIcon className="size-5" aria-hidden="true" />
57-
// <span className="sr-only">Close</span>
58-
// </button>
59-
// <div>
60-
// <motion.h3
61-
// layout="position"
62-
// className="flex items-center gap-2 pr-8 text-lg font-semibold"
63-
// >
64-
// <MegaphoneIcon
65-
// aria-hidden="true"
66-
// className="size-8 flex-shrink-0"
67-
// />
68-
// <span>Get 70% More Performance From Your CI</span>
69-
// </motion.h3>
70-
// <motion.div key="live-event" className="mt-4 space-y-4">
71-
// <p className="mb-2 text-sm">
72-
// Join Nx co-founders, Jeff Cross and Victor Savkin, in our Oct.
73-
// 27th webinar. Learn how to optimize your CI beyond just caching.
74-
// </p>
75-
// <div className="flex flex-wrap items-center justify-end gap-1 sm:gap-4">
76-
// <a
77-
// title="Signup"
78-
// href="https://bit.ly/48iV9DZ"
79-
// target="_blank"
80-
// rel="noopener noreferrer"
81-
// className="inline-flex items-center justify-center gap-2 rounded-lg bg-pink-600 px-2 py-2 text-sm font-semibold text-white no-underline transition hover:bg-pink-700 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500 active:text-black/70 md:px-4"
82-
// >
83-
// <VideoCameraIcon aria-hidden="true" className="size-4" />
84-
// <span>Sign Up Now</span>
85-
// </a>
86-
// </div>
87-
// </motion.div>
88-
// </div>
89-
// </div>
90-
// </motion.div>
91-
// );
32+
return (
33+
<motion.div
34+
layout
35+
initial={{ y: '120%' }}
36+
animate={{ y: 0 }}
37+
exit={{ y: '120%' }}
38+
transition={{
39+
type: 'spring',
40+
stiffness: 300,
41+
damping: 30,
42+
mass: 1,
43+
}}
44+
className="fixed bottom-0 left-0 right-0 z-30 w-full overflow-hidden bg-slate-950 text-white shadow-lg md:bottom-4 md:left-auto md:right-4 md:w-[512px] md:rounded-lg"
45+
style={{ originY: 1 }}
46+
>
47+
<div className="relative p-4">
48+
<button
49+
onClick={closeNotifier}
50+
className="absolute right-2 top-2 flex h-9 w-9 cursor-pointer items-center justify-center !rounded-full bg-transparent p-1 hover:bg-slate-800 focus:outline-none focus:ring-2 focus:ring-white"
51+
>
52+
<XMarkIcon className="size-5" aria-hidden="true" />
53+
<span className="sr-only">Close</span>
54+
</button>
55+
<div>
56+
<motion.h3
57+
layout="position"
58+
className="flex items-center gap-2 pr-8 text-lg font-semibold"
59+
>
60+
<MegaphoneIcon
61+
aria-hidden="true"
62+
className="size-8 flex-shrink-0"
63+
/>
64+
<span>Unlock 3x More Performance From Your CI</span>
65+
</motion.h3>
66+
<motion.div key="live-event" className="mt-4 space-y-4">
67+
<p className="mb-2 text-sm">
68+
Join Nx co-founder Jeff Cross and Madeline Hennessy on Nov. 19th.
69+
See how Nx features compound to multiply your gains.
70+
</p>
71+
<div className="flex flex-wrap items-center justify-end gap-1 sm:gap-4">
72+
<a
73+
title="Signup"
74+
href="https://bit.ly/496NV6n"
75+
target="_blank"
76+
rel="noopener noreferrer"
77+
className="inline-flex items-center justify-center gap-2 rounded-lg bg-pink-600 px-2 py-2 text-sm font-semibold text-white no-underline transition hover:bg-pink-700 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500 active:text-black/70 md:px-4"
78+
>
79+
<VideoCameraIcon aria-hidden="true" className="size-4" />
80+
<span>Sign Up Now</span>
81+
</a>
82+
</div>
83+
</motion.div>
84+
</div>
85+
</div>
86+
</motion.div>
87+
);
9288
}
Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
import React from 'react';
2-
// import { ChevronRightIcon } from '@heroicons/react/24/outline';
2+
import { ChevronRightIcon } from '@heroicons/react/24/outline';
33

44
export const WebinarSection: React.FC = () => {
5-
return null;
6-
7-
// return (
8-
// <p>
9-
// <a
10-
// href="https://bit.ly/48iV9DZ"
11-
// title="See live event in details"
12-
// className="group/event-link inline-flex space-x-6"
13-
// >
14-
// <span className="rounded-full bg-blue-600/10 px-3 py-1 text-sm/6 font-semibold text-blue-600 ring-1 ring-inset ring-blue-600/10 dark:bg-cyan-600/10 dark:text-cyan-600 dark:ring-cyan-600/10">
15-
// Live event
16-
// </span>
17-
// <span className="inline-flex items-center space-x-2 text-sm/6 font-medium">
18-
// <span>Webinar on October 27th</span>
19-
// <ChevronRightIcon
20-
// aria-hidden="true"
21-
// className="size-5 transform transition-all group-hover/event-link:translate-x-1"
22-
// />
23-
// </span>
24-
// </a>
25-
// </p>
26-
// );
5+
return (
6+
<p>
7+
<a
8+
href="https://bit.ly/496NV6n"
9+
title="See live event in details"
10+
className="group/event-link inline-flex space-x-6"
11+
>
12+
<span className="rounded-full bg-blue-600/10 px-3 py-1 text-sm/6 font-semibold text-blue-600 ring-1 ring-inset ring-blue-600/10 dark:bg-cyan-600/10 dark:text-cyan-600 dark:ring-cyan-600/10">
13+
Live event
14+
</span>
15+
<span className="inline-flex items-center space-x-2 text-sm/6 font-medium">
16+
<span>Webinar on November 19th</span>
17+
<ChevronRightIcon
18+
aria-hidden="true"
19+
className="size-5 transform transition-all group-hover/event-link:translate-x-1"
20+
/>
21+
</span>
22+
</a>
23+
</p>
24+
);
2725
};

0 commit comments

Comments
 (0)