Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try focus-trap-react instead ally.js #14372

Closed
wants to merge 1 commit into from
Closed

Try focus-trap-react instead ally.js #14372

wants to merge 1 commit into from

Conversation

ricokahler
Copy link

See here for context: #14369

At this point, this is somewhat experimental but I did try it out in my project and it seems to work! More testing is probably needed but here is a quick proof of concept.

@ricokahler ricokahler marked this pull request as draft June 19, 2020 19:39
@ijjk
Copy link
Member

ijjk commented Jun 19, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
buildDuration 12.9s 13s ⚠️ +148ms
nodeModulesSize 67 MB 67 MB
Page Load Tests Overall increase ✓
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
/ failed reqs 0 0
/ total time (seconds) 2.271 2.338 ⚠️ +0.07
/ avg req/sec 1100.85 1069.17 -31.68
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.571 1.528 -0.04
/error-in-render avg req/sec 1591.72 1635.67 ⚠️ +43.95
Client Bundles (main, webpack, commons)
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
main-HASH.js gzip 6.51 kB 6.51 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..4dd5.js gzip 10.5 kB 10.5 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.9 kB 56.9 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
main-HASH.module.js gzip 5.6 kB 5.6 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.92 kB 6.92 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 52.4 kB 52.4 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
_error.js gzip 3.37 kB 3.37 kB
index.js gzip 222 B 222 B
link.js gzip 2.05 kB 2.05 kB
hooks.js gzip 881 B 881 B
_app.js gzip 1.26 kB 1.26 kB
Overall change 8.34 kB 8.34 kB
Client Pages Modern
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
index.module.js gzip 223 B 223 B
routerDirect..dule.js gzip 281 B 281 B
withRouter.m..dule.js gzip 278 B 278 B
hooks.module.js gzip 383 B 383 B
_error.module.js gzip 2.21 kB 2.21 kB
link.module.js gzip 1.52 kB 1.52 kB
_app.module.js gzip 604 B 604 B
Overall change 5.49 kB 5.49 kB
Client Build Manifests
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
_buildManifest.js gzip 270 B 270 B
_buildManife..dule.js gzip 274 B 274 B
Overall change 544 B 544 B
Rendered Page Sizes
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
index.html gzip 953 B 953 B
link.html gzip 960 B 960 B
withRouter.html gzip 947 B 947 B
Overall change 2.86 kB 2.86 kB

Serverless Mode
General
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
buildDuration 14.1s 14s -101ms
nodeModulesSize 67 MB 67 MB
Client Bundles (main, webpack, commons)
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
main-HASH.js gzip 6.51 kB 6.51 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..4dd5.js gzip 10.5 kB 10.5 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.9 kB 56.9 kB
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
main-HASH.module.js gzip 5.6 kB 5.6 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.92 kB 6.92 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 52.4 kB 52.4 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
_error.js gzip 3.37 kB 3.37 kB
index.js gzip 222 B 222 B
link.js gzip 2.05 kB 2.05 kB
hooks.js gzip 881 B 881 B
_app.js gzip 1.26 kB 1.26 kB
Overall change 8.34 kB 8.34 kB
Client Pages Modern
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
index.module.js gzip 223 B 223 B
routerDirect..dule.js gzip 281 B 281 B
withRouter.m..dule.js gzip 278 B 278 B
hooks.module.js gzip 383 B 383 B
_error.module.js gzip 2.21 kB 2.21 kB
link.module.js gzip 1.52 kB 1.52 kB
_app.module.js gzip 604 B 604 B
Overall change 5.49 kB 5.49 kB
Client Build Manifests
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
_buildManifest.js gzip 270 B 270 B
_buildManife..dule.js gzip 274 B 274 B
Overall change 544 B 544 B
Serverless bundles
vercel/next.js canary ricokahler/next.js feat/overlay-with-focus-trap Change
_error.js 875 kB 875 kB
404.html 4.17 kB 4.17 kB
hooks.html 3.79 kB 3.79 kB
index.js 875 kB 875 kB
link.js 914 kB 914 kB
routerDirect.js 906 kB 906 kB
withRouter.js 906 kB 906 kB
Overall change 4.48 MB 4.48 MB
Commit: e19d92e

Copy link

@chrisvariety chrisvariety left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@Timer Timer self-assigned this Jun 20, 2020
Timer added a commit to Timer/next.js that referenced this pull request Dec 31, 2020
This bundles ally.js into Next.js itself to upgrade a dependency they have pinned.

I tried every other major focus trap solution, even those used by some modal libraries, and they all failed.

`ally.js` is the only library that can do it correctly, so we're going to stick with it.

I also removed the `maintain/disabled` as we have a overlay that would effectively result in the same. This reduces CPU strain.

---

Fixes vercel#19893
Fixes vercel#14369
Closes vercel#14372
@kodiakhq kodiakhq bot closed this in #20647 Dec 31, 2020
kodiakhq bot pushed a commit that referenced this pull request Dec 31, 2020
This bundles ally.js into Next.js itself to upgrade a dependency they have pinned.

I tried every other major focus trap solution, even those used by some modal libraries, and they all failed.

`ally.js` is the only library that can do it correctly, so we're going to stick with it.

I also removed the `maintain/disabled` as we have a backdrop that would effectively result in the same. This reduces CPU strain.

---

Fixes #19893
Fixes #14369
Closes #14372
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants