{"id":13411917,"url":"https://github.com/ddnexus/pagy","last_synced_at":"2026-04-01T18:28:38.443Z","repository":{"id":37734506,"uuid":"115859973","full_name":"ddnexus/pagy","owner":"ddnexus","description":"🏆 The Best Pagination Ruby Gem 🥇","archived":false,"fork":false,"pushed_at":"2026-02-25T08:35:33.000Z","size":36203,"stargazers_count":4935,"open_issues_count":1,"forks_count":441,"subscribers_count":32,"default_branch":"master","last_synced_at":"2026-02-25T11:04:47.889Z","etag":null,"topics":["bootstrap","bulma","elasticsearch-rails","foundation","materialize","padrino","rails","ruby","searchkick","semantic-ui","sinatra"],"latest_commit_sha":null,"homepage":"https://ddnexus.github.io/pagy","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddnexus.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-12-31T11:48:16.000Z","updated_at":"2026-02-24T18:35:26.000Z","dependencies_parsed_at":"2025-12-19T19:03:35.487Z","dependency_job_id":null,"html_url":"https://github.com/ddnexus/pagy","commit_stats":{"total_commits":1762,"total_committers":132,"mean_commits":"13.348484848484848","dds":"0.15834279228149828","last_synced_commit":"27c0df636572b7ed16886f9a4a452f34efddbd0b"},"previous_names":[],"tags_count":253,"template":false,"template_full_name":null,"purl":"pkg:github/ddnexus/pagy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddnexus%2Fpagy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddnexus%2Fpagy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddnexus%2Fpagy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddnexus%2Fpagy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddnexus","download_url":"https://codeload.github.com/ddnexus/pagy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddnexus%2Fpagy/sbom","scorecard":{"id":244101,"data":{"date":"2025-08-11","repo":{"name":"github.com/ddnexus/pagy","commit":"2f042985a6dc608280a4ea85b9dda28ba5e1e82d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Code-Review","score":3,"reason":"Found 9/29 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"13 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/create-release.yml:1","Warn: no topLevel permission defined: .github/workflows/e2e-test.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-docs.yml:1","Warn: no topLevel permission defined: .github/workflows/ruby-test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/create-release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/create-release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/e2e-test.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/e2e-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/publish-docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/publish-docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/publish-docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docs.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/publish-docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby-test.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/ruby-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ruby-test.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/ruby-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ruby-test.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/ddnexus/pagy/ruby-test.yml/master?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  10 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"CII-Best-Practices","score":5,"reason":"badge detected: Passing","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-76r7-hhxj-r776","Warn: Project is vulnerable to: GHSA-r4mg-4433-c7g3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T07:12:29.782Z","repository_id":37734506,"created_at":"2025-08-17T07:12:29.782Z","updated_at":"2025-08-17T07:12:29.782Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29854065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T22:37:40.667Z","status":"online","status_checked_at":"2026-02-26T02:00:06.774Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","bulma","elasticsearch-rails","foundation","materialize","padrino","rails","ruby","searchkick","semantic-ui","sinatra"],"created_at":"2024-07-30T20:01:18.465Z","updated_at":"2026-04-01T18:28:38.429Z","avatar_url":"https://github.com/ddnexus.png","language":"Ruby","readme":"\u003cspan\u003e[![Gem Version](https://img.shields.io/gem/v/pagy.svg?label=Pagy\u0026labelColor=1f7a1f\u0026color=2aa22a)](https://rubygems.org/gems/pagy)\u003c/span\u003e \u003cspan\u003e\n[![Supported Rubies](https://img.shields.io/badge/Ruby-EOL-ruby.svg?colorA=99004d\u0026colorB=cc0066)](https://endoflife.date/ruby)\u003c/span\u003e \u003cspan\u003e\n[![UnitTest](https://github.com/ddnexus/pagy/actions/workflows/unit-test.yml/badge.svg?branch=master)](https://github.com/ddnexus/pagy/actions/workflows/ruby-test.yml)\u003c/span\u003e \u003cspan\u003e\n[![E2E Test](https://github.com/ddnexus/pagy/actions/workflows/e2e-test.yml/badge.svg?branch=master)](https://github.com/ddnexus/pagy/actions/workflows/e2e-test.yml)\u003c/span\u003e \u003cspan\u003e\n![Coverage](https://img.shields.io/badge/Coverage-100%25-coverage.svg?colorA=1f7a1f\u0026colorB=2aa22a)\u003c/span\u003e \u003cspan\u003e\n![Rubocop Status](https://img.shields.io/badge/Rubocop-passing-rubocop.svg?colorA=1f7a1f\u0026colorB=2aa22a)\u003c/span\u003e \u003cspan\u003e\n[![MIT license](https://img.shields.io/badge/License-MIT-mit.svg?colorA=1f7a1f\u0026colorB=2aa22a)](http://opensource.org/licenses/MIT)\u003c/span\u003e \u003cspan\u003e\n[![Commits](https://img.shields.io/github/commit-activity/y/ddnexus/pagy.svg?label=Commits\u0026colorA=004d99\u0026colorB=0073e6)](https://github.com/ddnexus/pagy/commits/master/)\u003c/span\u003e \u003cspan\u003e\n[![Downloads](https://img.shields.io/gem/dt/pagy.svg?label=Downloads\u0026colorA=004d99\u0026colorB=0073e6)](https://rubygems.org/gems/pagy)\u003c/span\u003e \u003cspan\u003e\n[![Stars](https://shields.io/github/stars/ddnexus/pagy?style=social)](https://github.com/ddnexus/pagy/stargazers)\u003c/span\u003e \u003cspan\u003e\n[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Pagy%20AI-006BFF)](https://gurubase.io/g/pagy)\u003c/span\u003e\n\n# \n\n\u003ch2\u003e\u003cimg src=\"assets/images/pagy-the-frog.png\" alt=\"💚\" width=\"75\" style=\"vertical-align:bottom;\"\u003e\u003cbr/\u003ePagy the leaping gem!\u003c/h2\u003e\n\n_Agnostic pagination in plain ruby_\n\n\u003cbr/\u003e\n\n\u003c!-- whats_new_start --\u003e\n\n\u003ca href=\"https://ddnexus.github.io/pagy/sandbox/playground/#demo\"\u003e\n  \u003cimg src=\"https://github.com/ddnexus/pagy/raw/dev/assets/images/try-it.svg\" width=\"130\"\u003e\n\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n\n### Version 43\n\nWe needed a leap version to unequivocally signal that it's not just a major version: it's a complete redesign of the legacy code at all levels, usage and API included.\n\n**Why 43?** Because it's exactly one step beyond _\"The answer to the ultimate question of life, the Universe, and everything.\"_ 😉\n\n#### Improvements\n\nThis version introduces several enhancements, such as new `:countish` and `:keynav_js` paginators and improved automation and configuration processes, reducing setup requirements by 99%. The update also includes a simpler API and new interactive development tools, making it a comprehensive upgrade from previous versions.\n\n- **New [:countish](https://ddnexus.github.io/pagy/toolbox/paginators/countish) Paginator**\n  - Faster than OFFSET and supporting the full UI\n- **New [Keynav](https://ddnexus.github.io/pagy/toolbox/paginators/keynav_js) Pagination**\n  - The pagy-exclusive technique using the fastest [keyset](https://ddnexus.github.io/pagy/toolbox/paginators/keyset) pagination alongside all frontend helpers.\n- **New interactive dev-tools**\n  - New [PagyWand](https://ddnexus.github.io/pagy/resources/stylesheets/#pagy-wand) to integrate the pagy CSS with your app themes.\n  - New **Pagy AI** available right inside your own app.\n- **Intelligent automation**\n  - [Configuration](https://ddnexus.github.io/pagy/toolbox/configuration/initializer) requirements reduced by 99%.\n  - Simplified [JavaScript](https://ddnexus.github.io/pagy/resources/javascript) setup.\n  - Automatic [I18n](https://ddnexus.github.io/pagy/resources/i18n) loading.\n- **[Simpler API](https://github.com/ddnexus/pagy#examples)**\n  - You solely need the [pagy](https://ddnexus.github.io/pagy/toolbox/paginators) method and the [@pagy](https://ddnexus.github.io/pagy/toolbox/helpers) instance to paginate any collection and use any navigation tag and helper.\n  - Methods are autoloaded only if used, and consume no memory otherwise.\n  - Methods have narrower scopes and can be [overridden](https://ddnexus.github.io/pagy/guides/how-to#override-pagy-methods) without deep knowledge.\n- **New [documentation](https://ddnexus.github.io/pagy/guides/quick-start)**\n  - Very concise, straightforward, and easy to navigate and understand.\n\n### Upgrade to 43\n\nSee the [Upgrade Guide](https://ddnexus.github.io/pagy/guides/upgrade-guide/)\n\n\u003c!-- whats_new_end --\u003e\n\nTake a look at the [Examples](#-examples) for a quick overview of the new API.\n\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e v3 was already quite good...\n\n[\u003cimg src=\"assets/images/ips-chart.png\" title=\"~40x Faster!\" width=\"500\"\u003e](https://ddnexus.github.io/pagination-comparison/gems.html#ips-benchmark) [\u003cimg src=\"assets/images/memory-chart.png\" title=\"~36x Lighter!\" width=\"500\"\u003e](https://ddnexus.github.io/pagination-comparison/gems.html#memory-profile) [\u003cimg src=\"assets/images/objects-chart.png\" title=\"~35x Simpler!\" width=\"500\"\u003e](https://ddnexus.github.io/pagination-comparison/gems.html#memory-profile) [\u003cimg src=\"assets/images/resource-consumption-chart.png\" title=\"1,410x More Efficient!\" width=\"500\"\u003e](https://ddnexus.github.io/pagination-comparison/gems.html#efficiency-ratio)\n\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Now it's more... with less\n\n- Compatible with all environments and collection types\n- It can use OFFSET, COUNTISH, COUNTLESS, KEYSET, KEYNAV, SEARCH, CALENDAR, pagination techniques\n- It supports server-side rendering or faster client-side rendering for popular CSS frameworks and APIs\n- It autoloads ONLY the methods that you actually use, with almost zero configuration\n- It boasts 100% test coverage for Ruby, HTML, and JavaScript end-to-end (E2E)\n\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Examples\n\n##### Pagination code\n\n```rb\n# Include pagy in your code (usually application_controller.rb)\ninclude Pagy::Method\n\n# Offset-based pagination\n@pagy, @records = pagy(:offset, Product.all)\n\n# Keyset-based pagination (fastest technique)\n@pagy, @records = pagy(:keyset, Product.order(my_order).all)\n\n# Paginate your collection with one of several paginators\n@pagy, @records = pagy(...)\n``` \n\n_See all the available [paginators](https://ddnexus.github.io/pagy/toolbox/paginators/#paginators)_\n\n##### JSON:API pagination\n\n```ruby\n# JSON:API nested query string. E.g.: ?page[number]=2\u0026page[size]=100\n@pagy, @records = pagy(:offset, Product.all, jsonapi: true)\n@pagy, @records = pagy(:keyset, Product.order(my_order).all, jsonapi: true)\nrender json: { links: @pagy.urls_hash, data: @records }\n```\n\n##### JSON-client pagination\n\n```ruby\nrender json: { pagy: @pagy.data_hash, data: @records }\n```\n\n##### Search server pagination\n\nAvailable paginators: `:elasticsearch_rails`, `:meilisearch`, `:searchkick`, `:typesense_rails`\n\n```rb\n# Extend your models (e.g. application_record.rb)\nextend Pagy::Search\n\n# Paginate with pagy:\nsearch           = Product.pagy_search(params[:q])\n@pagy, @response = pagy(:a_search_paginator, search)\n\n# Or get pagy from paginated results:\n@results = Product.search(params[:q])\n@pagy    = pagy(:a_search_paginator, @results)\n```\n\n##### Calendar pagination\n\nCombine `time-range` and `offset` pagination.\n\n_(Available time units: year, quarter, month, week, and day)_\n\n\u003cimg src=\"assets/images/calendar-app.png\" width=\"450\"\u003e\u003cbr/\u003e\n\n```ruby\n@calendar, @pagy, @records = pagy(:calendar, collection, year: {}, month: {}, offset: {})\n```\n\n```ERB\n\u003c%== @calendar[:year].series_nav(:bootstrap) %\u003e\n\u003c%== @calendar[:month].series_nav(:bootstrap) %\u003e\n\u003c%== @pagy.info_tag %\u003e\n...\n\u003c%== @pagy.series_nav(:bootstrap) %\u003e\n```\n\n##### Server side rendering\n\n##### `series_nav`\n\nDefault `:pagy`, `:bootstrap` and `:bulma` styles shown.\n\n\u003cimg src=\"assets/images/pagy-series_nav.png\" width=\"310\"\u003e\u003cbr/\u003e\n\u003cimg src=\"assets/images/bootstrap-series_nav.png\" width=\"255\"\u003e\u003cbr/\u003e\n\u003cimg src=\"assets/images/bulma-series_nav.png\" width=\"342\"\u003e\u003cbr/\u003e\n\n```erb\n\u003c!-- Render client side nav bar helpers with different html and styles --\u003e\n\u003c%== @pagy.series_nav %\u003e \u003c!-- pagy style --\u003e\n\u003c%== @pagy.series_nav(:bootstrap) %\u003e\n\u003c%== @pagy.series_nav(:bulma) %\u003e\n```\n\n##### Client side rendering\n\n```rb\n# pagy.rb initializer\njavascript_dir = Rails.root.join('app/javascripts')\nPagy.sync_javascript(javascript_dir, 'pagy.mjs') if Rails.env.development?\n```\n\n##### `series_nav_js`\n\n**Faster and responsive**\n\nDynamically fills the container width.\n\n\u003cimg src=\"assets/images/pagy-series_nav_js-7.png\" width=\"312\"\u003e\u003cbr/\u003e\n\u003cimg src=\"assets/images/pagy-series_nav_js-9.png\" width=\"390\"\u003e\u003cbr/\u003e\n\n```erb\n\u003c!-- Render client side nav bar helpers with different html and styles --\u003e\n\u003c%== @pagy.series_nav_js %\u003e \u003c!-- pagy style --\u003e\n\u003c%== @pagy.series_nav_js(:bootstrap) %\u003e\n\u003c%== @pagy.series_nav_js(:bulma) %\u003e\n```\n\n##### `input_nav_js`\n\n**Fastest!** Combines navigation and info in minimum space.\n\n\u003cimg src=\"assets/images/pagy-input_nav_js.png\" width=\"229\"\u003e\u003cbr/\u003e\n\n```erb\n\u003c!-- Render client side nav inout helpers with different html and styles --\u003e\n\u003c%== @pagy.input_nav_js %\u003e \u003c!-- pagy style --\u003e\n\u003c%== @pagy.input_nav_js(:bootstrap) %\u003e\n\u003c%== @pagy.input_nav_js(:bulma) %\u003e\n```\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Dev Tools\n\nIntegrate pagy with your app's themes interactively ([watch demo](https://youtu.be/GhhNRrVG9jg)), and ask specific questions to the Pagy AI __right in your app__! You need only a single line in your page/layout `head` to get the Pagy Wand and the Pagy AI:\n\n```erb\n\u003c%== Pagy.dev_tools %\u003e\n```\n\n\u003cimg src=\"assets/images/dev-tools.png\" width=\"450\"\u003e\u003cbr/\u003e\n\n\u003ca href=\"https://ddnexus.github.io/pagy/sandbox/playground/#demo\"\u003e\n  \u003cimg src=\"https://github.com/ddnexus/pagy/raw/dev/assets/images/try-it.svg\" width=\"130\"\u003e\n\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Support and Docs\n\n- [Quick Start](https://ddnexus.github.io/pagy/guides/quick-start)\n- [How To (quick recipes)](https://ddnexus.github.io/pagy/guides/how-to/)\n- [Migrate from WillPaginate and Kaminari](https://ddnexus.github.io/pagy/guides/migration-guide) (practical guide)\n- [Discussions](https://github.com/ddnexus/pagy/discussions/categories/q-a)\n- [Issues](https://github.com/ddnexus/pagy/issues)\n- [Changelog](https://ddnexus.github.io/pagy/changelog)\n\n\u003cbr/\u003e\n\n### Top 💯 Contributors\n\n\u003c!-- top100_start --\u003e\n\n[\u003cimg src=\"https://avatars.githubusercontent.com/u/100721?v=4\" width=\"40\" title=\"@ddnexus: 2048 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=ddnexus)[\u003cimg src=\"https://avatars.githubusercontent.com/u/15097447?v=4\" width=\"40\" title=\"@benkoshy: 83 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=benkoshy)[\u003cimg src=\"https://avatars.githubusercontent.com/u/11367?v=4\" width=\"40\" title=\"@grosser: 9 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=grosser)[\u003cimg src=\"https://avatars.githubusercontent.com/u/14981592?v=4\" width=\"40\" title=\"@Earlopain: 4 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=Earlopain)[\u003cimg src=\"https://avatars.githubusercontent.com/u/9843321?v=4\" width=\"40\" title=\"@workgena: 4 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=workgena)[\u003cimg src=\"https://avatars.githubusercontent.com/u/17091381?v=4\" width=\"40\" title=\"@djpremier: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=djpremier)[\u003cimg src=\"https://avatars.githubusercontent.com/u/22333?v=4\" width=\"40\" title=\"@bquorning: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=bquorning)[\u003cimg src=\"https://avatars.githubusercontent.com/u/235048?v=4\" width=\"40\" title=\"@molfar: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=molfar)[\u003cimg src=\"https://avatars.githubusercontent.com/u/132?v=4\" width=\"40\" title=\"@sunny: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=sunny)[\u003cimg src=\"https://avatars.githubusercontent.com/u/26239269?v=4\" width=\"40\" title=\"@enzinia: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=enzinia)[\u003cimg src=\"https://avatars.githubusercontent.com/u/32258?v=4\" width=\"40\" title=\"@espen: 3 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=espen)[\u003cimg src=\"https://avatars.githubusercontent.com/u/2051199?v=4\" width=\"40\" title=\"@rbngzlv: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=rbngzlv)[\u003cimg src=\"https://avatars.githubusercontent.com/u/8125726?v=4\" width=\"40\" title=\"@simonneutert: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=simonneutert)[\u003cimg src=\"https://avatars.githubusercontent.com/u/195636?v=4\" width=\"40\" title=\"@tersor: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=tersor)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1100176?v=4\" width=\"40\" title=\"@thomasklemm: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=thomasklemm)[\u003cimg src=\"https://avatars.githubusercontent.com/u/37790?v=4\" width=\"40\" title=\"@gamafranco: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=gamafranco)[\u003cimg src=\"https://avatars.githubusercontent.com/u/500826?v=4\" width=\"40\" title=\"@tiagotex: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=tiagotex)[\u003cimg src=\"https://avatars.githubusercontent.com/u/112558900?v=4\" width=\"40\" title=\"@wimdavies: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=wimdavies)[\u003cimg src=\"https://avatars.githubusercontent.com/u/29891001?v=4\" width=\"40\" title=\"@jyuvaraj03: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=jyuvaraj03)[\u003cimg src=\"https://avatars.githubusercontent.com/u/7076736?v=4\" width=\"40\" title=\"@renshuki: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=renshuki)[\u003cimg src=\"https://avatars.githubusercontent.com/u/2749593?v=4\" width=\"40\" title=\"@berniechiu: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=berniechiu)[\u003cimg src=\"https://avatars.githubusercontent.com/u/3427854?v=4\" width=\"40\" title=\"@747: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=747)[\u003cimg src=\"https://avatars.githubusercontent.com/u/12479464?v=4\" width=\"40\" title=\"@ashmaroli: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=ashmaroli)[\u003cimg src=\"https://avatars.githubusercontent.com/u/12526288?v=4\" width=\"40\" title=\"@benjaminwols: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=benjaminwols)[\u003cimg src=\"https://avatars.githubusercontent.com/u/67093?v=4\" width=\"40\" title=\"@excid3: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=excid3)[\u003cimg src=\"https://avatars.githubusercontent.com/u/3188392?v=4\" width=\"40\" title=\"@cseelus: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=cseelus)[\u003cimg src=\"https://avatars.githubusercontent.com/u/10076?v=4\" width=\"40\" title=\"@claudiob: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=claudiob)[\u003cimg src=\"https://avatars.githubusercontent.com/u/50970645?v=4\" width=\"40\" title=\"@sabljak: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=sabljak)[\u003cimg src=\"https://avatars.githubusercontent.com/u/421488?v=4\" width=\"40\" title=\"@petergoldstein: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=petergoldstein)[\u003cimg src=\"https://avatars.githubusercontent.com/u/101501?v=4\" width=\"40\" title=\"@rainerborene: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=rainerborene)[\u003cimg src=\"https://avatars.githubusercontent.com/u/4824537?v=4\" width=\"40\" title=\"@yenshirak: 2 contributions\"\u003e](https://github.com/ddnexus/pagy/commits?author=yenshirak)[\u003cimg src=\"https://avatars.githubusercontent.com/u/58137134?v=4\" width=\"40\" title=\"@muhammadnawzad: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=muhammadnawzad)[\u003cimg src=\"https://avatars.githubusercontent.com/u/30351533?v=4\" width=\"40\" title=\"@sk8higher: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=sk8higher)[\u003cimg src=\"https://avatars.githubusercontent.com/u/23448075?v=4\" width=\"40\" title=\"@woller: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=woller)[\u003cimg src=\"https://avatars.githubusercontent.com/u/43544760?v=4\" width=\"40\" title=\"@WilliamHorel: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=WilliamHorel)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1012014?v=4\" width=\"40\" title=\"@okuramasafumi: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=okuramasafumi)[\u003cimg src=\"https://avatars.githubusercontent.com/u/12237543?v=4\" width=\"40\" title=\"@olieidel: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=olieidel)[\u003cimg src=\"https://avatars.githubusercontent.com/u/211?v=4\" width=\"40\" title=\"@olleolleolle: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=olleolleolle)[\u003cimg src=\"https://avatars.githubusercontent.com/u/43936240?v=4\" width=\"40\" title=\"@PedroAugustoRamalhoDuarte: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=PedroAugustoRamalhoDuarte)[\u003cimg src=\"https://avatars.githubusercontent.com/u/2815199?v=4\" width=\"40\" title=\"@pedrocarmona: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=pedrocarmona)[\u003cimg src=\"https://avatars.githubusercontent.com/u/891109?v=4\" width=\"40\" title=\"@peter50216: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=peter50216)[\u003cimg src=\"https://avatars.githubusercontent.com/u/32079912?v=4\" width=\"40\" title=\"@rafaeelaudibert: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=rafaeelaudibert)[\u003cimg src=\"https://avatars.githubusercontent.com/u/7660738?v=4\" width=\"40\" title=\"@rafaelmontas: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=rafaelmontas)[\u003cimg src=\"https://avatars.githubusercontent.com/u/412056?v=4\" width=\"40\" title=\"@rogermarlow: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=rogermarlow)[\u003cimg src=\"https://avatars.githubusercontent.com/u/632682?v=4\" width=\"40\" title=\"@RyanTG: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=RyanTG)[\u003cimg src=\"https://avatars.githubusercontent.com/u/69295?v=4\" width=\"40\" title=\"@ronald: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=ronald)[\u003cimg src=\"https://avatars.githubusercontent.com/u/10906059?v=4\" width=\"40\" title=\"@achmiral: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=achmiral)[\u003cimg src=\"https://avatars.githubusercontent.com/u/174391530?v=4\" width=\"40\" title=\"@mikepayready: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=mikepayready)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1393996?v=4\" width=\"40\" title=\"@mauro-ni: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=mauro-ni)[\u003cimg src=\"https://avatars.githubusercontent.com/u/462701?v=4\" width=\"40\" title=\"@borama: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=borama)[\u003cimg src=\"https://avatars.githubusercontent.com/u/24856?v=4\" width=\"40\" title=\"@creativetags: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=creativetags)[\u003cimg src=\"https://avatars.githubusercontent.com/u/24826?v=4\" width=\"40\" title=\"@mcary: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=mcary)[\u003cimg src=\"https://avatars.githubusercontent.com/u/93276?v=4\" width=\"40\" title=\"@marckohlbrugge: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=marckohlbrugge)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1753398?v=4\" width=\"40\" title=\"@fluser: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=fluser)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6563823?v=4\" width=\"40\" title=\"@maful: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=maful)[\u003cimg src=\"https://avatars.githubusercontent.com/u/9826538?v=4\" width=\"40\" title=\"@LuukvH: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=LuukvH)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1453563?v=4\" width=\"40\" title=\"@loed-idzinga: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=loed-idzinga)[\u003cimg src=\"https://avatars.githubusercontent.com/u/64050?v=4\" width=\"40\" title=\"@gjtorikian: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=gjtorikian)[\u003cimg src=\"https://avatars.githubusercontent.com/u/9060346?v=4\" width=\"40\" title=\"@artplan1: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=artplan1)[\u003cimg src=\"https://avatars.githubusercontent.com/u/7241024?v=4\" width=\"40\" title=\"@AngelGuerra: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=AngelGuerra)[\u003cimg src=\"https://avatars.githubusercontent.com/u/18153165?v=4\" width=\"40\" title=\"@tr4b4nt: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=tr4b4nt)[\u003cimg src=\"https://avatars.githubusercontent.com/u/4953187?v=4\" width=\"40\" title=\"@tiejianluo: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=tiejianluo)[\u003cimg src=\"https://avatars.githubusercontent.com/u/28652?v=4\" width=\"40\" title=\"@szTheory: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=szTheory)[\u003cimg src=\"https://avatars.githubusercontent.com/u/22420?v=4\" width=\"40\" title=\"@smoothdvd: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=smoothdvd)[\u003cimg src=\"https://avatars.githubusercontent.com/u/87665329?v=4\" width=\"40\" title=\"@rhodes-david: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=rhodes-david)[\u003cimg src=\"https://avatars.githubusercontent.com/u/5484758?v=4\" width=\"40\" title=\"@radinreth: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=radinreth)[\u003cimg src=\"https://avatars.githubusercontent.com/u/54139019?v=4\" width=\"40\" title=\"@pranavbabu: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=pranavbabu)[\u003cimg src=\"https://avatars.githubusercontent.com/u/884634?v=4\" width=\"40\" title=\"@okliv: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=okliv)[\u003cimg src=\"https://avatars.githubusercontent.com/u/5013677?v=4\" width=\"40\" title=\"@nedimdz: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=nedimdz)[\u003cimg src=\"https://avatars.githubusercontent.com/u/468744?v=4\" width=\"40\" title=\"@msdundar: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=msdundar)[\u003cimg src=\"https://avatars.githubusercontent.com/u/59817964?v=4\" width=\"40\" title=\"@m-abdurrehman: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=m-abdurrehman)[\u003cimg src=\"https://avatars.githubusercontent.com/u/831536?v=4\" width=\"40\" title=\"@dwieringa: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=dwieringa)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6220668?v=4\" width=\"40\" title=\"@YutoYasunaga: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=YutoYasunaga)[\u003cimg src=\"https://avatars.githubusercontent.com/u/65494027?v=4\" width=\"40\" title=\"@iamyujinwon: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=iamyujinwon)[\u003cimg src=\"https://avatars.githubusercontent.com/u/13119624?v=4\" width=\"40\" title=\"@yhk1038: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=yhk1038)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6612882?v=4\" width=\"40\" title=\"@ya-s-u: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=ya-s-u)[\u003cimg src=\"https://avatars.githubusercontent.com/u/13472945?v=4\" width=\"40\" title=\"@yshmarov: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=yshmarov)[\u003cimg src=\"https://avatars.githubusercontent.com/u/9436230?v=4\" width=\"40\" title=\"@Davidzhu001: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=Davidzhu001)[\u003cimg src=\"https://avatars.githubusercontent.com/u/190269?v=4\" width=\"40\" title=\"@thattimc: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=thattimc)[\u003cimg src=\"https://avatars.githubusercontent.com/u/7021119?v=4\" width=\"40\" title=\"@thomaschauffour: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=thomaschauffour)[\u003cimg src=\"https://avatars.githubusercontent.com/u/361323?v=4\" width=\"40\" title=\"@snkashis: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=snkashis)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6059188?v=4\" width=\"40\" title=\"@sliminas: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=sliminas)[\u003cimg src=\"https://avatars.githubusercontent.com/u/35310?v=4\" width=\"40\" title=\"@kelso: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=kelso)[\u003cimg src=\"https://avatars.githubusercontent.com/u/310909?v=4\" width=\"40\" title=\"@serghost: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=serghost)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1478773?v=4\" width=\"40\" title=\"@Tolchi: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=Tolchi)[\u003cimg src=\"https://avatars.githubusercontent.com/u/149513?v=4\" width=\"40\" title=\"@tulak: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=tulak)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6208777?v=4\" width=\"40\" title=\"@Federico-G: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=Federico-G)[\u003cimg src=\"https://avatars.githubusercontent.com/u/18742365?v=4\" width=\"40\" title=\"@egimenos: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=egimenos)[\u003cimg src=\"https://avatars.githubusercontent.com/u/73437?v=4\" width=\"40\" title=\"@elliotlarson: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=elliotlarson)[\u003cimg src=\"https://avatars.githubusercontent.com/u/17459154?v=4\" width=\"40\" title=\"@hungdiep97: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=hungdiep97)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6125?v=4\" width=\"40\" title=\"@Cosmo: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=Cosmo)[\u003cimg src=\"https://avatars.githubusercontent.com/u/6763624?v=4\" width=\"40\" title=\"@davidwessman: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=davidwessman)[\u003cimg src=\"https://avatars.githubusercontent.com/u/813150?v=4\" width=\"40\" title=\"@david-a-wheeler: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=david-a-wheeler)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1169363?v=4\" width=\"40\" title=\"@daniel-rikowski: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=daniel-rikowski)[\u003cimg src=\"https://avatars.githubusercontent.com/u/1530175?v=4\" width=\"40\" title=\"@thedanbob: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=thedanbob)[\u003cimg src=\"https://avatars.githubusercontent.com/u/8194848?v=4\" width=\"40\" title=\"@connie-feng: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=connie-feng)[\u003cimg src=\"https://avatars.githubusercontent.com/u/83706?v=4\" width=\"40\" title=\"@MrMoins: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=MrMoins)[\u003cimg src=\"https://avatars.githubusercontent.com/u/5347394?v=4\" width=\"40\" title=\"@cellvinchung: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=cellvinchung)[\u003cimg src=\"https://avatars.githubusercontent.com/u/4116980?v=4\" width=\"40\" title=\"@brunoocasali: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=brunoocasali)[\u003cimg src=\"https://avatars.githubusercontent.com/u/42350151?v=4\" width=\"40\" title=\"@branson-simplethread: 1 contribution\"\u003e](https://github.com/ddnexus/pagy/commits?author=branson-simplethread)\n\u003c!-- top100_end --\u003e\n\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Credits\n\nSpecial thanks to:\n\n- [Ben Koshy](https://github.com/benkoshy) for his contributions to the documentation, user support and interaction with external frameworks\n- [JetBrains](http://www.jetbrains.com?from=https%3A%2F%2Fgithub.com%2Fddnexus%2Fpagy) for their free OpenSource license.\n- [The Stargazers](https://github.com/ddnexus/pagy/stargazers) for showing their support\n\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e Repository Info\n\n\u003cdetails\u003e\n\n\u003csummary\u003eHow to contribute\u003c/summary\u003e\n\nSee [Contributing](https://github.com/ddnexus/pagy/blob/master/.github/CONTRIBUTING.md)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003eVersioning\u003c/summary\u003e\n\n- Pagy follows the [Semantic Versioning 2.0.0](https://semver.org/). Please check the [Changelog](https://ddnexus.github.io/pagy/changelog) for breaking changes introduced by major versions. Using [pessimistic version constraint](https://guides.rubygems.org/patterns/#pessimistic-version-constraint) in your Gemfile will ensure smooth upgrades.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003eBranches\u003c/summary\u003e\n\n- The `master` branch is the latest rubygem-published release. It also contains docs and comment changes that don't affect the published code. It is never force-pushed.\n- The `dev` branch is the development branch with the new code that will be merged in the next release. It could be force-pushed.\n- Expect any other branch to be internal, experimental, force-pushed, rebased and/or deleted even without merging.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n### \u003cspan style=\"font-size: .65em; vertical-align: middle\"\u003e💚\u003c/span\u003e License\n\n[MIT](https://opensource.org/licenses/MIT)\n","funding_links":[],"categories":["Pagination","Ruby","Hanami Gem List","Uncategorized","Gems"],"sub_categories":["Pagination","Uncategorized","Performance Optimization","Testing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddnexus%2Fpagy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddnexus%2Fpagy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddnexus%2Fpagy/lists"}