npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vercel/before-and-after

v0.0.4

Published

Simple before/after screenshot tool for capturing and comparing web pages

Maintainers

sebastianromingsebastianromingcraigandrewscraigandrewsgkaragkiaourisgkaragkiaourisdglsparsonsdglsparsonsbvred4244bvred4244dummdidummdummdidummadriancooney_verceladriancooney_verceleveporcelloeveporcellobcorn-celybcorn-celyatinuxatinuxdvoytenkodvoytenkoamyeganamyeganbrookemosbybrookemosbyfeugyfeugyswarnavasenguptaswarnavasenguptaraunofreibergraunofreibergmamusomamusogoncygoncysmaeda-kssmaeda-kshenryheffernanhenryheffernangargis5gargis5wycatswycatsyvonnezhouyvonnezhouchibicodechibicodeandybitzandybitziamevilrabbitiamevilrabbittootallnatetootallnatestyflestyflematthewbinshtokmatthewbinshtokmglagolamglagolajavivelascojavivelascoluimeyluimeytimertimerlucleraylucleraymatheussmatheussanatrajkovskaanatrajkovskan0rlant1sn0rlant1sjooliashijooliashitimneutkenstimneutkenselsighelsighwitswitslpalmeslpalmescl3arglasscl3arglasssamsislesamsislechriswdmrchriswdmrrizbizkitsrizbizkitsismaelrumzanismaelrumzanrich.davis.vercelrich.davis.vercelcreationixcreationixfeedthejimfeedthejimcasey.gowriecasey.gowrierauchgrauchghuozhihuozhialdoschaldoschlfadeslfadesokbelokbeljerilynzjerilynzhedyzandihedyzandipadmaiapadmaiadelbadelbasokrasokragsandhugsandhudbredvickdbredvickhungrybearstudiohungrybearstudiocalebboydcalebboydhellojennifertranhellojennifertranmarcgreenstockmarcgreenstockagadzikagadziktknickmantknickmanjanoryjanoryjeffreyarnesonjeffreyarnesonmattjaredmattjaredmsimulcikmsimulcikgdbortongdbortoncorrettojscorrettojscramforcecramforcekakadiadarpankakadiadarpanmaxleitermaxleiterkit-fosterkit-fostertilly3gtilly3gecklfecklfhealeycodeshealeycodesdferber90dferber90epallerolsepallerolsnicolas-webdevnicolas-webdevschlezschleznpm_bot_vercel_supportnpm_bot_vercel_supportpieparkerpieparkerjtaylor0196jtaylor0196javierbytejavierbyteemeraldsantoemeraldsantogaspar09gaspar09mmastracmmastracsr_internsr_interngudmundurgudmundurnick.traceynick.traceybmealeybmealeydoquedoqueaaorrisaaorrisnutanutadaniel.campbelldaniel.campbellquiibzquiibzchloe.tedderchloe.teddermjakobismjakobismehulkarmehulkartcc-sejohnsontcc-sejohnsonfiliphassonfiliphassonlubakravchelubakravchegnoffgnoffmatt.strakamatt.strakawbinnssmithwbinnssmithofhouseofhousemknichel-vercelmknichel-vercelvvovvovercel-release-botvercel-release-botrob-peters-vercelrob-peters-vercelgt-codesgt-codesbalazsorbanbalazsorbantobiaslinstobiaslinstiago-loureirotiago-loureirombrakkenmbrakkentimolinstimolinsanthonyshewanthonyshewcmeyer_vercelcmeyer_verceltbremertbremermiguelalcaldemiguelalcaldelaugharnlaugharnviekoviekorobin-vercelrobin-vercelwude935wude935zach-baldazach-baldaah100101ah100101quietshuquietshuijjkijjkvercelbenvercelbenzharichzharichdfeindfeinonsclomonsclomashok.gurumurthyashok.gurumurthyowoceowoceshaper42shaper42ademauademaujeffsee55jeffsee55zeejabzeejabacdliteacdlitemcabs3mcabs3msemperemsemperekldavis4kldavis4lukahartwiglukahartwigbgwbgwsipexsipexjeremyphilemonjeremyphilemoneprosimoneprosimonrithmicrithmicdanmfoxdanmfoxn-vigiern-vigiervercelmattvercelmattjudegaojudegaovercel-ctatevercel-ctatealbanesealbanesesceilersceilerlgrammellgrammeljamesvclementsjamesvclementstomocchinotomocchinoaryamankhaaryamankhapranathippranathipmattfroggettmattfroggetteps1loneps1lonpbzonapbzonamalewis5malewis5devjiwonchoidevjiwonchoikonstvkonstvzacktannerzacktannergabenunezgabenunezshadcnshadcnmikecurtismikecurtisunstubbableunstubbablesueplexsueplexethansheaethansheaidoatvercelidoatvercelwentsulwentsulvikhyathvikhyathmischnicmischnichgstrmhgstrmdcampvc01dcampvc01mitul-smitul-sjonpheyjonpheyannagzhannagzhrich_harrisrich_harrisandrewbarbaandrewbarbabcjrobertsbcjrobertsmarc-vercelmarc-vercelali-vercelali-vercelduijfduijfplmrryplmrrytmdotmdojulianbenegasjulianbenegasrao.chandanrao.chandanthebigsadowskithebigsadowskigovind-vercelgovind-verceltomjohndesigntomjohndesignbshanzbshanzaubreychamberlainaubreychamberlainkmiddleton14kmiddleton14yavoryavorgracelliugracelliu1st11st1whatplanwhatplanfmoorfmoorvercel-eddievercel-eddietristantcoopertristantcooperrklaeserrklaesermerycodesmerycodesnmelmsnmelmsyasoobr0yasoobr0m7rcelom7rceloestebansuarezestebansuarezbobmshannonbobmshannoncaseyokeefecaseyokeefebhrigubhrigulaksshhlaksshhzackelanzackelankelzceanakelzceanahannah.hearthhannah.hearthfalcoagustin.vercelfalcoagustin.vercelnpasquinzonpasquinzokobologkobologtimwhite96timwhite96jnsahajjnsahajastephen100astephen100sylviezhangsylviezhangmatiasgfmatiasgflukesheardlukesheardadrientheboadrienthebokarthiklangtracekarthiklangtraceelpranselpransrihanarfanrihanarfanolivercarmontolivercarmontjjdopkinjjdopkinvercel_it_service_accountvercel_it_service_accountadamdongadamdongrhyssullivanrhyssullivanvalerian-rochevalerian-rocheallen-vercelallen-vercelalli-vercelalli-vercelethsheaethsheascotttrinhscotttrinhjaclarkejaclarkebkonklebkonkleseverinlandoltseverinlandoltkevinjosethomaskevinjosethomasjaygengelbachjaygengelbachchriskindlchriskindltk04tk04gschogschokavinvallikavinvallinsidnevnsidnevyash-kothari-vercelyash-kothari-vercelrobherleyrobherleymingchungxmingchungxmbaizambaizabenyebaibenyebaitimothyjordantimothyjordantristano45tristano45andyw22andyw22shagrawalshagrawalneil-vercelneil-vercelskullfaceskullfacefernandorojofernandorojokevin.corbettkevin.corbettzacowanzacowanjoelhooksjoelhookswillvileswillvilesmarkandrusmarkandrusloganliffickloganliffickyoungbloodcybyoungbloodcybkapehe_okkapehe_okhaydenbleaselhaydenbleaselquuuquuujteesangjteesangpckirklandpckirklanddavid_keefedavid_keefejeffreypojeffreypoaormi-vercelaormi-verceldarafshehdarafshehmarkpython86markpython86lazarvlazarvtonypantonypanjackjacksonverceljackjacksonvercelseif.ghezalaseif.ghezalamiksumiksuwillsatherwillsatheramanazadamanazadjacobparisjacobparisicyjosephicyjosephvercelliotvercelliotlukesandberglukesandbergnicolasmontonenicolasmontonevoodootikigodvoodootikigodjustinkroppjustinkroppsatya-callstacksatya-callstackchristianhubbardchristianhubbardwoshuajolkwoshuajolkbennorbennorstranglestranglebmishkinbmishkinmshepaneshmshepaneshkarimhaseboukarimhasebouwilliamboutwilliamboutpranaygppranaygpalex-groveralex-groverchrmcd-verchrmcd-verallenzhou101allenzhou101dmoridmoriiansbrashiansbrashalice-wonderedalice-wonderedmatchaimatchaivishalyathishvishalyathishsamselikoffsamselikoffmrsasuu_ckmrsasuu_ckmtoth-vercelmtoth-vercelanshuman71anshuman71runewolf7runewolf7rohantaneja-vercelrohantaneja-vercelhp_arorahp_arorajoyboy-0joyboy-0matiasperzmatiasperzjverceljverceltannerverceltannervercelgi_wrightygi_wrightymatthewstanciumatthewstanciurickeymcgregorrickeymcgregorrichardkunklirichardkunklibwalvoordbwalvoordrobpruzanrobpruzandanielroedanielroerahuliyer-vercelrahuliyer-vercelty37zhangty37zhangshawnfeldmanshawnfeldmanjohnphamousjohnphamous6ary6aryricardo-agzricardo-agzaej11aaej11amclenhardmclenhardreynaldo-vercelreynaldo-verceljaredthompson22jaredthompson22jetthenjetthenrobkebabrobkebabraidaltraidaltcodyellowcodyellowpablostanleypablostanleyronnie-hanifronnie-hanifzypxzypxthecletheclepranavkarthikpranavkarthikandy.rianchoandy.rianchojonasherrjonasherrvanessaxteovanessaxteotomdaletomdalevincent-derksvincent-derksgrappeggiagrappeggiavaguelyseriousvaguelyseriousmkrrmkrrdalyd14dalyd14kaciebkaciebgr2mgr2mkarim_v1karim_v1simhskalsimhskal

Readme

before-and-after

Before and after is a tool that adds before and after screenshots to your PRs. Add it as a skill for your agent to call automatically or use it directly from the command line.

before-and-after

Install

Install globally to use from anywhere:

npm i -g @vercel/before-and-after

Basic Use

Capture any two URLs, protocol is optional:

before-and-after site.com localhost:3000

Add Skill

Show your agent how and when to take before and afters. The skill uses gh to detect the associated PR with your branch and (soon) vercel to bypass deployment protection when capturing from Vercel preview branches.

npx skills add vercel-labs/before-and-after

Options

Capture a specific element using a CSS selector:

before-and-after url1 url2 ".hero"

Use different selectors for before and after:

before-and-after url1 url2 ".old" ".new"

Capture at mobile (375×812), tablet (768×1024), or custom viewport:

before-and-after url1 url2 --mobile
before-and-after url1 url2 --size 1920x1080

Capture the entire scrollable page:

before-and-after url1 url2 --full

Output a markdown table for PR descriptions:

before-and-after url1 url2 --markdown

Use existing images instead of capturing URLs:

before-and-after before.png after.png

Mix URLs and images:

before-and-after before.png localhost:3000

Save to a custom location:

before-and-after url1 url2 --output ./screenshots

Upload to a custom image storage service:

before-and-after url1 url2 --upload my-s3-uploader

By default, images are uploaded to 0x0.st. For heavy usage or sensitive captures, use your own upload handler.